Răsfoiți Sursa

Commit of changes to core files, on behalf of the team

svn path=/trunk/mcs/; revision=48944
Miguel de Icaza 20 ani în urmă
părinte
comite
54079f764a
92 a modificat fișierele cu 6016 adăugiri și 2181 ștergeri
  1. 14 8
      mcs/class/System.Web/Assembly/AssemblyInfo.cs
  2. 11 2
      mcs/class/System.Web/Assembly/ChangeLog
  3. 33 781
      mcs/class/System.Web/ChangeLog
  4. 18 13
      mcs/class/System.Web/Makefile
  5. 3 3
      mcs/class/System.Web/System.Web.Caching/CachedRawResponse.cs
  6. 17 5
      mcs/class/System.Web/System.Web.Caching/ChangeLog
  7. 5 28
      mcs/class/System.Web/System.Web.Caching/OutputCacheModule.cs
  8. 35 5
      mcs/class/System.Web/System.Web.Compilation/BaseCompiler.cs
  9. 11 5
      mcs/class/System.Web/System.Web.Compilation/ChangeLog
  10. 2 0
      mcs/class/System.Web/System.Web.Compilation/TemplateControlCompiler.cs
  11. 1 4
      mcs/class/System.Web/System.Web.Compilation/WebServiceCompiler.cs
  12. 42 1
      mcs/class/System.Web/System.Web.Configuration/AuthConfig.cs
  13. 20 0
      mcs/class/System.Web/System.Web.Configuration/ChangeLog
  14. 1 1
      mcs/class/System.Web/System.Web.Configuration/CompilationConfiguration.cs
  15. 2 3
      mcs/class/System.Web/System.Web.Configuration/HttpHandlersSectionHandler.cs
  16. 6 6
      mcs/class/System.Web/System.Web.Configuration/HttpModulesConfigurationHandler.cs
  17. 1 1
      mcs/class/System.Web/System.Web.Configuration/HttpRuntimeConfig.cs
  18. 7 7
      mcs/class/System.Web/System.Web.Configuration/MachineKeyConfig.cs
  19. 1 1
      mcs/class/System.Web/System.Web.Configuration/PagesConfiguration.cs
  20. 2 2
      mcs/class/System.Web/System.Web.Configuration/WebConfigurationHost.cs
  21. 21 1
      mcs/class/System.Web/System.Web.Configuration/WebConfigurationSettings.cs
  22. 4 0
      mcs/class/System.Web/System.Web.Profile/ChangeLog
  23. 16 6
      mcs/class/System.Web/System.Web.Security/ActiveDirectoryMembershipProvider.cs
  24. 2 3
      mcs/class/System.Web/System.Web.Security/AnonymousIdentificationEventArgs.cs
  25. 11 7
      mcs/class/System.Web/System.Web.Security/AnonymousIdentificationModule.cs
  26. 49 0
      mcs/class/System.Web/System.Web.Security/ChangeLog
  27. 0 2
      mcs/class/System.Web/System.Web.Security/DefaultAuthenticationModule.cs
  28. 10 5
      mcs/class/System.Web/System.Web.Security/FileAuthorizationModule.cs
  29. 85 14
      mcs/class/System.Web/System.Web.Security/FormsAuthentication.cs
  30. 6 6
      mcs/class/System.Web/System.Web.Security/Membership.cs
  31. 14 12
      mcs/class/System.Web/System.Web.Security/MembershipCreateStatus.cs
  32. 14 3
      mcs/class/System.Web/System.Web.Security/MembershipProvider.cs
  33. 10 4
      mcs/class/System.Web/System.Web.Security/MembershipProviderCollection.cs
  34. 9 8
      mcs/class/System.Web/System.Web.Security/MembershipUserCollection.cs
  35. 14 7
      mcs/class/System.Web/System.Web.Security/PassportIdentity.cs
  36. 43 36
      mcs/class/System.Web/System.Web.Security/RolePrincipal.cs
  37. 72 30
      mcs/class/System.Web/System.Web.Security/Roles.cs
  38. 3 9
      mcs/class/System.Web/System.Web.Security/SqlMembershipProvider.cs
  39. 3 9
      mcs/class/System.Web/System.Web.Security/SqlRoleProvider.cs
  40. 9 4
      mcs/class/System.Web/System.Web.Security/UrlAuthorizationModule.cs
  41. 3 10
      mcs/class/System.Web/System.Web.SessionState/ChangeLog
  42. 6 27
      mcs/class/System.Web/System.Web.SessionState/SessionStateModule.cs
  43. 8 0
      mcs/class/System.Web/System.Web.UI.Adapters/ChangeLog
  44. 318 5
      mcs/class/System.Web/System.Web.UI.HtmlControls/ChangeLog
  45. 16 3
      mcs/class/System.Web/System.Web.UI.HtmlControls/HtmlContainerControl.cs
  46. 49 16
      mcs/class/System.Web/System.Web.UI.HtmlControls/HtmlControl.cs
  47. 14 3
      mcs/class/System.Web/System.Web.UI.HtmlControls/HtmlHead.cs
  48. 13 2
      mcs/class/System.Web/System.Web.UI.HtmlControls/HtmlTitle.cs
  49. 7 0
      mcs/class/System.Web/System.Web.UI.WebControls.WebParts/ChangeLog
  50. 14 3
      mcs/class/System.Web/System.Web.UI.WebControls/BaseDataBoundControl.cs
  51. 37 3
      mcs/class/System.Web/System.Web.UI.WebControls/BulletedList.cs
  52. 1850 11
      mcs/class/System.Web/System.Web.UI.WebControls/ChangeLog
  53. 2 2
      mcs/class/System.Web/System.Web.UI.WebControls/CompositeDataBoundControl.cs
  54. 21 8
      mcs/class/System.Web/System.Web.UI.WebControls/DataBoundControl.cs
  55. 152 150
      mcs/class/System.Web/System.Web.UI.WebControls/DataControlButton.cs
  56. 38 6
      mcs/class/System.Web/System.Web.UI.WebControls/DetailsView.cs
  57. 25 5
      mcs/class/System.Web/System.Web.UI.WebControls/FormView.cs
  58. 25 5
      mcs/class/System.Web/System.Web.UI.WebControls/GridView.cs
  59. 7 1
      mcs/class/System.Web/System.Web.UI.WebControls/HierarchicalDataBoundControl.cs
  60. 2 1
      mcs/class/System.Web/System.Web.UI.WebControls/ImageMap.cs
  61. 118 51
      mcs/class/System.Web/System.Web.UI.WebControls/Menu.cs
  62. 1 1
      mcs/class/System.Web/System.Web.UI.WebControls/MenuItemTemplateContainer.cs
  63. 36 24
      mcs/class/System.Web/System.Web.UI.WebControls/MultiView.cs
  64. 81 1
      mcs/class/System.Web/System.Web.UI.WebControls/ObjectDataSource.cs
  65. 43 2
      mcs/class/System.Web/System.Web.UI.WebControls/SiteMapPath.cs
  66. 2 1
      mcs/class/System.Web/System.Web.UI.WebControls/SqlDataSourceSelectingEventArgs.cs
  67. 2 2
      mcs/class/System.Web/System.Web.UI.WebControls/TableCaptionAlign.cs
  68. 61 36
      mcs/class/System.Web/System.Web.UI.WebControls/TreeView.cs
  69. 64 37
      mcs/class/System.Web/System.Web.UI.WebControls/Wizard.cs
  70. 9 4
      mcs/class/System.Web/System.Web.UI/AttributeCollection.cs
  71. 21 2
      mcs/class/System.Web/System.Web.UI/BasePartialCachingControl.cs
  72. 274 20
      mcs/class/System.Web/System.Web.UI/ChangeLog
  73. 520 249
      mcs/class/System.Web/System.Web.UI/Control.cs
  74. 28 6
      mcs/class/System.Web/System.Web.UI/CssStyleCollection.cs
  75. 21 1
      mcs/class/System.Web/System.Web.UI/DataBoundLiteralControl.cs
  76. 6 1
      mcs/class/System.Web/System.Web.UI/DesignerDataBoundLiteralControl.cs
  77. 3 1
      mcs/class/System.Web/System.Web.UI/KeyedList.cs
  78. 9 1
      mcs/class/System.Web/System.Web.UI/LiteralControl.cs
  79. 32 1
      mcs/class/System.Web/System.Web.UI/PersistChildrenAttribute.cs
  80. 25 24
      mcs/class/System.Web/System.Web.UI/StateManagedCollection.cs
  81. 4 9
      mcs/class/System.Web/System.Web.UI/UrlPropertyAttribute.cs
  82. 27 2
      mcs/class/System.Web/System.Web.UI/UserControl.cs
  83. 6 3
      mcs/class/System.Web/System.Web.UI/WebResourceAttribute.cs
  84. 8 2
      mcs/class/System.Web/System.Web.Util/ChangeLog
  85. 38 27
      mcs/class/System.Web/System.Web.dll.sources
  86. 691 24
      mcs/class/System.Web/System.Web/ChangeLog
  87. 267 191
      mcs/class/System.Web/System.Web/ServerVariablesCollection.cs
  88. 2 1
      mcs/class/System.Web/System.Web/StaticFileHandler.cs
  89. 160 144
      mcs/class/System.Web/System.Web/TraceContext.cs
  90. 50 10
      mcs/class/System.Web/System.Web/TraceData.cs
  91. 111 0
      mcs/class/System.Web/System.Web_test.dll.sources
  92. 62 0
      mcs/class/System.Web/resources/ChangeLog

+ 14 - 8
mcs/class/System.Web/Assembly/AssemblyInfo.cs

@@ -38,8 +38,16 @@ using System.Web.UI;
 
 // General Information about the System.Web assembly
 
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: SatelliteContractVersion (Consts.FxVersion)]
+#if (NET_1_0)
+	[assembly: AssemblyVersion("1.0.3300.0")]
+	[assembly: SatelliteContractVersion("1.0.3300.0")]
+#elif (NET_2_0)
+	[assembly: AssemblyVersion ("2.0.0.0")]
+	[assembly: SatelliteContractVersion ("2.0.0.0")]
+#elif (NET_1_1)
+	[assembly: AssemblyVersion("1.0.5000.0")]
+	[assembly: SatelliteContractVersion("1.0.5000.0")]
+#endif
 
 [assembly: AssemblyTitle("System.Web.dll")]
 [assembly: AssemblyDescription("System.Web.dll")]
@@ -48,11 +56,8 @@ using System.Web.UI;
 [assembly: AssemblyProduct("MONO CLI")]
 [assembly: AssemblyCopyright("(c) 2003 Various Authors")]
 [assembly: AssemblyTrademark("")]
-#if TARGET_JVM
-[assembly: CLSCompliant(false)]
-#else
+
 [assembly: CLSCompliant(true)]
-#endif
 [assembly: ComVisible(false)]
 [assembly: AssemblyDefaultAlias("System.Web.dll")]
 [assembly: AssemblyInformationalVersion("0.0.0.1")]
@@ -60,10 +65,9 @@ using System.Web.UI;
 
 [assembly: AllowPartiallyTrustedCallers()]
 [assembly: TagPrefix("System.Web.UI.WebControls", "asp")]
-#if !TARGET_JVM
+
 [assembly: AssemblyDelaySign(true)]
 [assembly: AssemblyKeyFile("../msfinal.pub")]
-#endif
 
 // Resources
 
@@ -111,3 +115,5 @@ using System.Web.UI;
 [assembly: WebResource ("webform.js", "text/javascript")]
 
 #endif
+
+[assembly: WebResource ("WebUIValidation.js", "text/javascript")]

+ 11 - 2
mcs/class/System.Web/Assembly/ChangeLog

@@ -1,6 +1,15 @@
-2005-07-29  Kornél Pál <kornelpal@hotmail.com>
+2005-08-18  Dick Porter  <dick@ximian.com>
 
-	* Consts.cs: Added NET_2_0 assembly references.
+	* Consts.cs: Added System.Web and Microsoft.VisualStudio.Web
+	constants for 2.0
+
+2005-08-15  Sebastien Pouliot  <[email protected]>
+
+	* Consts.cs: Added constant for System.dll (only in 2.0)
+
+2005-07-20  Chris Toshok  <[email protected]>
+
+	* AssemblyInfo.cs: add WebUIValidation.js attribute.
 
 2005-06-08 Gonzalo Paniagua Javier <[email protected]>
 

+ 33 - 781
mcs/class/System.Web/ChangeLog

@@ -1,808 +1,60 @@
-2005-08-25 Atsushi Enomoto <atsushi@ximian.com>
+2005-08-25  Chris Toshok  <toshok@ximian.com>
 
-	* Makefile: build fix for some utf8-defaulted environment.
+	* System.Web.dll.sources: add
+	System.Web.UI.WebControls/SqlDataSource{Filtering,Selecting}Event{Handler,Args}.cs
 
-2005-07-25  Eyal Alalouf  <[email protected]>
-	* System.Web.vmwcsproj removed System.Web/TimeoutManager.cs from TARGET_J2EE
+2005-08-25  Chris Toshok  <[email protected]>
 
-2005-07-24  Eyal Alalouf  <[email protected]>
-	* System.Web.vmwcsproj added System.Web.UI/PageHandlerFactory.jvm.cs
+	* System.Web.dll.sources: add
+	System.Web.UI.WebControls/SqlDataSourceCommandType.cs
 
-2005-07-19  Eyal Alalouf  <[email protected]>
-	* System.Web.vmwcsproj:
-	  Replaced System.Web.UI/TemplateControl.cs with System.Web.UI/TemplateControl.jvm.cs
+2005-08-22  Chris Toshok  <[email protected]>
 
-2005-07-19  Eyal Alalouf  <[email protected]>
-	* System.Web.vmwcsproj: Removed files related to dynamic compilation of ASP
-	  pages. This feature is currently not supported in Grasshopper.
+	* System.Web_test.dll.sources: add RepeatInfoTest.auto.2.0.cs
 
-2005-07-18  Eyal Alalouf  <eyala@mainsoft.com>
+2005-08-19  Chris Toshok  <[email protected]>
 
-	* System.Web.vmwcsproj:
-	  Added System.Web.J2EE/BaseHttpServlet.cs
-	  Added System.Web.J2EE/BaseStaticHttpServlet.cs
-	  Added System.Web.J2EE/SessionListener.cs
-	  Removed System.Web.SessionState/HttpSessionState.cs
-	  Added System.Web.SessionState/HttpSessionState.jvm.cs
-	  Removed System.Web.SessionState/SessionInProcHandler.cs
-	  Added System.Web.SessionState/SessionInProcHandler.jvm.cs
-	  Added System.Web.Hosting/ServletWorkerRequest.jvm.cs
+	* System.Web.dll.sources: add System.Web.Profile/ProfileInfo.cs
 
-2005-07-18  Eyal Alalouf  <[email protected]>
+	* System.Web_test.dll.sources: add
+	Test/System.Web.Profile/ProfileInfoTest.cs
 
-	* System.Web.J2EE: Added namespace and folder for J2EE hosting and specific files.
-	* System.Web.vmwcsproj: Added System.Web.J2EE files
-
-2005-07-18  Eyal Alalouf  <[email protected]>
-
-	* System.Web.vmwcsproj: Added file for compiling System.Web in J2EE configuration
-
-2005-07-16  Ben Maurer  <[email protected]>
-
-	* Makefile: Make sure that tests use the same flags as the
-	assembly itself. Also, unverbosify warnings.
-
-2005-07-01  Lluis Sanchez Gual <[email protected]>
-
-	* System.Web.dll.sources: Added MembershipSection.cs
-
-2005-06-23  Lluis Sanchez Gual <[email protected]>
-
-	* System.Web.dll.sources: Added new files:
-		System.Web.Configuration/VirtualDirectoryMapping.cs
-		System.Web.Configuration/VirtualDirectoryMappingCollection.cs
-		System.Web.Configuration/WebConfigurationFileMap.cs
-		System.Web.Configuration/WebConfigurationHost.cs
-		System.Web.Configuration/WebConfigurationManager.cs
-	
-2005-06-14  Lluis Sanchez Gual <[email protected]>
-
-	* Makefile: Added reference to System.Configuration.
-
-2005-06-10  Lluis Sanchez Gual <[email protected]>
-
-	* System.Web.dll.sources: New files:
-		System.Web.Security/MembershipValidatePasswordEventHandler.cs
-		System.Web.Security/ValidatePasswordEventArgs.cs
-
-2005-05-26  Lluis Sanchez Gual <[email protected]>
-
-	* System.Web.dll.sources: Added new files:
-		System.Web.UI.WebControls/SiteMapNodeItem.cs
-		System.Web.UI.WebControls/SiteMapNodeItemEventArgs.cs
-		System.Web.UI.WebControls/SiteMapNodeItemEventHandler.cs
-		System.Web.UI.WebControls/SiteMapPath.cs
-		System.Web.UI/NonVisualControlAttribute.cs
-		System.Web/StaticSiteMapProvider.cs
-
-2005-05-21  Sebastien Pouliot  <[email protected]>
-
-	* System.Web_test.dll.sources: Added tests for FormsAuthentication.
-
-2005-05-13  Lluis Sanchez Gual <[email protected]>
-
-	* System.Web.dll.sources: Added new file:
-		System.Web.UI.WebControls/WizardStepControlBuilder.cs
-	
-2005-05-06  Lluis Sanchez Gual <[email protected]>
-
-	* System.Web.dll.sources: Added new files:
-		System.Web.UI.WebControls/CircleHotSpot.cs
-		System.Web.UI.WebControls/HotSpot.cs
-		System.Web.UI.WebControls/HotSpotCollection.cs
-		System.Web.UI.WebControls/ImageMap.cs
-		System.Web.UI.WebControls/PolygonHotSpot.cs
-		System.Web.UI.WebControls/RectangleHotSpot.cs
-		System.Web.UI.WebControls/Wizard.cs
-		System.Web.UI.WebControls/WizardStep.cs
-		System.Web.UI.WebControls/WizardStepBase.cs
-		System.Web.UI.WebControls/WizardStepCollection.cs
-
-2005-05-04  Lluis Sanchez Gual <[email protected]>
-
-	* System.Web.dll.sources: Added new files:
-		System.Web.UI.WebControls/DataControlCommands.cs
-		System.Web.UI.WebControls/SubMenuStyleCollection.cs
-	  and removed:
-		System.Web.UI.WebControls/ChildTable.cs
-	
-2005-04-22  Lluis Sanchez Gual <[email protected]>
-
-	* System.Web.dll.sources: Added new files:
-		System.Web.UI.WebControls/HyperLinkField.cs
-
-2005-04-21  Lluis Sanchez Gual <[email protected]>
-
-	* System.Web.dll.sources: Added new files:
-		System.Web.UI.WebControls/FormView.cs
-		System.Web.UI.WebControls/FormViewRow.cs
-		System.Web.UI/IEditableTextControl.cs
-
-2005-04-15  Lluis Sanchez Gual <[email protected]>
-
-	* System.Web.dll.sources: Added new files:
-		System.Web.UI/CompiledBindableTemplateBuilder.cs
-
-2005-04-08  Lluis Sanchez Gual <[email protected]>
-
-	* System.Web.dll.sources: Added new files:
-		System.Web.UI.WebControls/DetailsView.cs
-		System.Web.UI.WebControls/DetailsViewRow.cs
-		System.Web.UI.WebControls/DetailsViewRowCollection.cs
-
-2005-04-07  Lluis Sanchez Gual <[email protected]>
-
-	* System.Web.dll.sources: Added new files:
-		System.Web.UI.WebControls/ObjectDataSourceFilteringEventArgs.cs
-		System.Web.UI.WebControls/ObjectDataSourceFilteringEventHandler.cs
-
-2005-04-01  Lluis Sanchez Gual <[email protected]>
-
-	* System.Web.dll.sources: Added new files:
-		System.Web.UI.WebControls/ButtonField.cs
-		System.Web.UI.WebControls/CheckBoxField.cs
-		System.Web.UI.WebControls/DataControlFieldHeaderCell.cs
-		System.Web.UI.WebControls/HiddenField.cs
-		System.Web.UI.WebControls/ImageField.cs
-		System.Web.UI.WebControls/ObjectDataSource.cs
-		System.Web.UI.WebControls/ObjectDataSourceView.cs
-		System.Web.UI.WebControls/TemplateField.cs
-
-2005-03-23  Lluis Sanchez Gual <[email protected]>
-
-	* System.Web.dll.sources: Added new files:
-		System.Web.UI.WebControls/AutoGeneratedField.cs
-		System.Web.UI.WebControls/AutoGeneratedFieldProperties.cs
-
-2005-03-14 Gonzalo Paniagua Javier <[email protected]>
-
-	* System.Web.dll.sources: added new files in System.Web.Configuration.
-
-2005-03-11  Lluis Sanchez Gual <[email protected]>
-
-	* Makefile: Added new resource file: GridView.js.
-	* System.Web.dll.sources: Added more files to the build:
-		System.Web.UI.WebControls/ButtonFieldBase.cs
-		System.Web.UI.WebControls/CommandField.cs
-		System.Web.UI.WebControls/DataControlButton.cs
-
-2005-03-04  Lluis Sanchez Gual <[email protected]>
-
-	* System.Web.dll.sources: Added more files to the build:
-		System.Web.UI.WebControls/ChildTable.cs
-		System.Web.UI.WebControls/DataKey.cs
-		System.Web.UI.WebControls/DataKeyArray.cs
-		System.Web.UI.WebControls/GridViewCommandEventArgs.cs
-		System.Web.UI.WebControls/GridViewCommandEventHandler.cs
-		System.Web.UI.WebControls/GridViewRowEventArgs.cs
-		System.Web.UI.WebControls/GridViewRowEventHandler.cs
-		System.Web.UI.WebControls/StringArrayConverter.cs
-
-2005-02-25  Lluis Sanchez Gual <[email protected]>
-
-	* System.Web.dll.sources: Added new files:
-		System.Web.UI.WebControls/BoundField.cs
-		System.Web.UI.WebControls/CompositeDataBoundControl.cs
-		System.Web.UI.WebControls/DataControlFieldCollection.cs
-		System.Web.UI.WebControls/GridView.cs
-		System.Web.UI.WebControls/GridViewRow.cs
-		System.Web.UI.WebControls/GridViewRowCollection.cs
-		System.Web.UI.WebControls/PagerSettings.cs
-		System.Web.UI.WebControls/XmlDataSourceNodeDescriptor.cs
-		System.Web.UI.WebControls/XmlDataSourcePropertyDescriptor.cs
-
-2005-02-23  Sebastien Pouliot  <[email protected]>
-
-	* System.Web_test.dll.sources: Added new unit tests for
-	HttpRequest, HttpServerUtility and HttpUtility to test for XSS.
-
-2005-02-18  Lluis Sanchez Gual <[email protected]>
-
-	* System.Web.dll.sources: New file:
-		System.Web.UI.WebControls/CollectionDataSource.cs
-
-2005-02-10  Lluis Sanchez Gual <[email protected]>
-
-	* System.Web.dll.sources: New files:
-		System.Web.UI/ICheckBoxControl.cs
-		System.Web.UI/IStaticTextControl.cs
-		System.Web.UI/ITextControl.cs
-
-2005-02-04  Lluis Sanchez Gual <[email protected]>
-
-	* Makefile: Added resource file.
-
-2005-02-02  Lluis Sanchez Gual <[email protected]>
-
-	* System.Web.dll.sources: Added some files to the build:
-		System.Web.UI.WebControls/CompositeControl.cs
-		System.Web.UI.WebControls/ControlPropertyNameConverter.cs
-
-2005-01-28  Lluis Sanchez Gual <[email protected]>
-
-	* System.Web.dll.sources: Added new files:
-		System.Web.UI.WebControls/MultiView.cs
-		System.Web.UI.WebControls/View.cs
-		System.Web.UI.WebControls/ViewCollection.cs
-
-2005-01-21  Lluis Sanchez Gual <[email protected]>
-
-	* System.Web.dll.sources: Added new files:
-		System.Web.UI.WebControls/Content.cs
-		System.Web.UI.WebControls/ContentControlBuilder.cs
-		System.Web.UI.WebControls/ContentPlaceHolder.cs
-		System.Web.UI.WebControls/ContentPlaceHolderBuilder.cs
-		System.Web.UI/MasterPage.cs
-		System.Web.UI/MasterPageParser.cs
-
-2005-01-10  Lluis Sanchez Gual <[email protected]>
-
-	* System.Web.dll.sources: Added new files:
-		System.Web.UI.WebControls/MenuItemTemplateContainer.cs
-		System.Web.UI.WebControls/SubMenuStyle.cs
-	* Makefile: Added those files to the build.
-
-2004-12-20  Lluis Sanchez Gual <[email protected]>
-
-	* System.Web.dll.sources: Added some new files to the build.
-	
-2004-12-10  Lluis Sanchez Gual <[email protected]>
-
-	* Makefile: Added Menu script.
+	* files-to-copy: add System.Web.Profile/ProfileInfo.cs
 	
-2004-12-02  Lluis Sanchez Gual <[email protected]>
-
-	* System.Web.dll.sources: Added new files:
-		System.Web.UI.WebControls/Menu.cs
-		System.Web.UI.WebControls/MenuEventArgs.cs
-		System.Web.UI.WebControls/MenuEventHandler.cs
-		System.Web.UI.WebControls/MenuItem.cs
-		System.Web.UI.WebControls/MenuItemBinding.cs
-		System.Web.UI.WebControls/MenuItemBindingCollection.cs
-		System.Web.UI.WebControls/MenuItemCollection.cs
-		System.Web.UI.WebControls/MenuItemStyle.cs
-		System.Web.UI.WebControls/MenuItemStyleCollection.cs
-
-2004-12-02  Lluis Sanchez Gual <[email protected]>
-
-	* Makefile: Added more TreeView resources.
-
-2004-11-30  Raja R Harinath  <[email protected]>
-
-	* Makefile (RESOURCE_FILES): Make sure that we distribute these,
-	irrespective of the profile.
-	(OTHER_RES): New.
-
-2004-11-29 Sanjay Gupta <[email protected]>
-
-	* System.Web.dll.sources: Added DataControlField.cs and 
-	DataControlFieldCell.cs.
-
-2004-11-29 Gonzalo Paniagua Javier <[email protected]>
-
-	* System.Web.dll.sources: added ReusableMemoryStream.
-
-2004-11-26  Lluis Sanchez Gual <[email protected]>
-
-	* System.Web.dll.sources: Added new file:
-		System.Web.UI/ClientScriptManager
-	* Makefile: Added more resources.
-
-2004-11-25  Raja R Harinath  <[email protected]>
-
-	* Makefile (RESOURCE_FILES): New.  List set of resources.
-	(EXTRA_DISTFILES): New.  Distribute them.
-
-2004-11-23  Lluis Sanchez Gual <[email protected]>
-
-	* Makefile: Added TreeView resources.
-	* System.Web.dll.sources: Added new files:
-		System.Web.UI.WebControls/BaseDataBoundControl.cs
-		System.Web.UI.WebControls/HierarchicalDataBoundControl.cs
-		System.Web.UI.WebControls/TreeNode.cs
-		System.Web.UI.WebControls/TreeNodeBinding.cs
-		System.Web.UI.WebControls/TreeNodeBindingCollection.cs
-		System.Web.UI.WebControls/TreeNodeCollection.cs
-		System.Web.UI.WebControls/TreeNodeEventArgs.cs
-		System.Web.UI.WebControls/TreeNodeEventHandler.cs
-		System.Web.UI.WebControls/TreeNodeStyle.cs
-		System.Web.UI.WebControls/TreeNodeStyleCollection.cs
-		System.Web.UI.WebControls/TreeView.cs
-	
-2004-11-19  Sanjay Gupta <[email protected]>
-
-	* System.Web.dll.sources: Added new file:
-		System.Web.UI.WebControls/AccessDataSourceView.cs.
-
-2004-11-18  Lluis Sanchez Gual <[email protected]>
-
-	* System.Web.dll.sources: Added new files:
-		System.Web.Security/ActiveDirectoryMembershipProvider.cs
-		System.Web.Security/MembershipProvider.cs
-		System.Web.Security/RoleProvider.cs
-		System.Web.UI.WebControls/SiteMapDataSource.cs
-		System.Web.UI.WebControls/SiteMapHierarchicalDataSourceView.cs
-		System.Web/ParserError.cs
-		System.Web/ParserErrorCollection.cs
-		System.Web/SiteMapResolveEventArgs.cs
-
-2004-11-15  Lluis Sanchez Gual <[email protected]>
-
-	* System.Web.dll.sources: Added new files:
-		System.Web.Configuration/AdapterDictionary.cs
-		System.Web.Configuration/AnonymousIdentificationSection.cs
-		System.Web.Configuration/AssemblyCollection.cs
-		System.Web.Configuration/AssemblyInfo.cs
-		System.Web.Configuration/AuthenticationSection.cs
-		System.Web.Configuration/FormsAuthenticationConfiguration.cs
-		System.Web.Configuration/InternalSection.cs
-		System.Web.Configuration/PassportAuthentication.cs
-
-2004-10-20  Sanjay Gupta <[email protected]>
-
-	* System.Web.dll.sources: Added new class in System.Web.UI.
-
-2004-10-12  Sanjay Gupta <[email protected]>
-
-	* System.Web_test.dll.sources: Added new test case source file.
-
-2004-10-12  Sanjay Gupta <[email protected]>
-
-	* System.Web.dll.sources: Added new class in System.Web.UI.
-
-2004-10-11  Sanjay Gupta <[email protected]>
-
-	* makefile: Added flag to build System.Web_test.dll.
-
-2004-10-08  Sanjay Gupta <[email protected]>
-
-	* System.Web_test.dll.sources: Added new file.
-
-2004-10-08  Sanjay Gupta <[email protected]>
-
-	* System.Web.dll.sources: Added new classes in  
-	  System.Web.UI.WebControls.
-
-2004-09-30  Sanjay Gupta <[email protected]>
-
-	* System.Web.dll.sources: Added and removed an enumeration in  
-	  System.Web.UI.WebControls.
-
-2004-09-29  Sanjay Gupta <[email protected]>
-
-	* System.Web.dll.sources: Added new classes in 
-	  System.Web.UI.WebControls.WebParts.
-
-2004-09-29  Sanjay Gupta <[email protected]>
-
-	* System.Web.dll.sources: Added new classes in 
-	  System.Web.UI.WebControls.WebParts.
-
-2004-09-28  Sanjay Gupta <[email protected]>
-
-	* System.Web.dll.sources: Added new classes in 
-	  System.Web.UI.WebControls.WebParts.
-
-2004-09-24  Sanjay Gupta <[email protected]>
-
-	* System.Web.dll.sources: Added new attribute class in System.Web.UI.
-
-2004-09-14  Sanjay Gupta <[email protected]>
-
-	* System.Web.dll.sources: Added new attribute classes in System.Web.UI.
-
-2004-09-07  Sanjay Gupta <[email protected]>
-
-	* System.Web.dll.sources: Added new class in System.Web.UI.WebControls.
-
-2004-09-03  Sanjay Gupta <[email protected]>
-
-	* System.Web.dll.sources: Added new interface and classes in 
-	System.Web.UI namespace.
-
-2004-08-31  Sanjay Gupta <[email protected]>
-
-	* System.Web.dll.sources: Added new interfaces in 
-	System.Web.UI.WebControls.WebParts namespace.
-
-2004-08-31  Sanjay Gupta <[email protected]>
-
-	* System.Web.dll.sources: Added new *EventArgs.cs and *EventHandler in 
-	System.Web.UI.WebControls namespace.
-
-2004-08-31  Sanjay Gupta <[email protected]>
-
-	* System.Web.dll.sources: Added new delegates in System.Web.SessionState
-	 and System.Web.UI.
-
-2004-08-31  Sanjay Gupta <[email protected]>
-
-	* System.Web.dll.sources: Added new interfaces in System.Web.SessionState
-	 and System.Web.UI.
-
-2004-08-18  Sanjay Gupta <[email protected]>
-
-	* System.Web.dll.sources: Added new file RelatedBodyPart.cs.
-
-2004-08-05  Sanjay Gupta  <[email protected]>
-
-	* System.Web.dll.sources: Added new interfaces to System.Web.UI.WebControls and 
-	a class to System.Web.UI. 
-
-2004-08-05  Sanjay Gupta  <[email protected]>
-
-	* System.Web.dll.sources: Added new interfaces to System.Web.SessionState.
-
-2004-08-04  Sanjay Gupta  <[email protected]>
-
-	* System.Web.dll.sources: Added new enums.
-
-2004-08-02  Duncan Mak  <[email protected]>
-
-	* System.Web.dll.sources: Added new enums and interfaces,
-	re-ordered alphabetically.
-
-2004-06-08  Alon Gazit <[email protected]>
-
-	* System.Web.dll.sources: added ServerVariablesCollection.
-
-2004-06-08  Gonzalo Paniagua Javier <[email protected]>
-
-	* System.Web.dll.sources: removed CSCompiler.cs
-
-2004-06-07  Gonzalo Paniagua Javier <[email protected]>
-
-	* System.Web.dll.sources: removing ServerVariablesCollection. It does
-	not compile.
-
-2004-06-07  Alon Gazit <[email protected]>
-
-	* System.Web.dll.sources: added ServerVariablesCollection.
-
-2004-05-12  Gonzalo Paniagua Javier <[email protected]>
-
-	* System.Web.dll.sources: added Html32TextWriter.
-
-2004-04-22  Gonzalo Paniagua Javier <[email protected]>
-
-	* System.Web.dll.sources: removed unused/obsolete files from
-	System.Web.Util.
-
-2004-02-09  Jackson Harper  <[email protected]>
-
-	* System.Web.dll.sources: Remove System.Web.Caching.Watcher from
-	build. We are now using FileSystemWatcher.
-	
-2004-01-12  Gonzalo Paniagua Javier <[email protected]>
-
-	* System.Web.dll.sources: added new files in S.W.Configuration.
-
-2004-01-11  Andreas Nahr <[email protected]>
-
-	* makefile: Dependency to EnterpriseServices.dll added
-	* System.Web.dll.sources: Added 4 files in System.Util, sorted Web.Util
-	file names.
-
-2004-01-10  Jackson Harper <[email protected]>
-
-	* System.Web.dll.sources: Add TraceConfig.cs and
-	TraceConfigurationHandler.cs to the build.
-	
-2004-01-10  Jackson Harper <[email protected]>
-
-	* System.Web.dll.sources: Add TraceData.cs and TraceManager.cs to
-	build.
-	
-2003-12-18  Gonzalo Paniagua Javier <[email protected]>
-
-	* System.Web.dll.sources: added HttpRequestValidationException.
-
-2003-12-17  Gonzalo Paniagua Javier <[email protected]>
-
-	* System.Web.dll.sources: added CustomErrorsConfigHandler.cs
-
-2003-12-16  Gonzalo Paniagua Javier <[email protected]>
-
-	* System.Web.dll.sources: added CapabilitiesLoader.cs
-
-2003-12-02  Gonzalo Paniagua Javier <[email protected]>
-
-	* System.Web.dll.sources: added WebConfigurationSettings.
-
-2003-11-25  Jackson Harper <[email protected]>
-
-	* System.web.dll.sources: Add AltSerialization.cs to the build
-
-2003-11-24  Jackson Harper <[email protected]>
-
-	* System.web.dll.sources: Add State server classes to build.
-	
-2003-11-21  Jackson Harper <[email protected]>
-
-	* System.web.dll.sources: Add CachedVaryBy.cs to the build
-	
-2003-11-21  Andreas Nahr <[email protected]>
-
-	* System.Web.dll.sources: added XmlBuilder.cs
-
-2003-11-20  Jackson Harper <[email protected]>
-
-	* System.web.dll.sources: add OutputCacheModule.cs and
-	CachedRawResponse.cs to the build.
-	
-2003-11-19  Todd Berman <[email protected]>
-
-	* System.Web.dll.sources: Add KeyedList.cs and KeyedListEnumerator.cs
-
-2003-11-18  Todd Berman <[email protected]>
-
-	* System.Web.dll.sources: Add ParameterCollection.cs
-
-2003-11-13  Jackson Harper  <[email protected]>
-
-	* System.web.dll.sources: Add System.Web.Util.TimeUtil.cs to the
-	build
-	
-2003-11-06 Jackson Harper <[email protected]>
-
-	* System.web.dll.sources: Add SessionId.cs to build
-	
-2003-11-03 Jackson Harper <[email protected]>
-
-	* System.Web.dll.sources: Add SessionSQLServerHandler.cs
-	* makefile: Reference System.Data.dll
-	
-2003-10-10  Gonzalo Paniagua Javier <[email protected]>
-
-	* System.Web.dll.sources: added WebControlsSectionHandler.cs
-
-2003-07-30  Andreas Nahr <[email protected]>
-
-	* System.Web.dll.sources: added Locale.cs
-
-2003-07-30  Andreas Nahr <[email protected]>
-
-	* System.Web.dll.sources: added new files to System.Web.SessionState and System.Web.UI
-
-2003-07-25  Ravi Pratap  <[email protected]>
-
-	* everywhere: Remove uses of direct invocation of the 'Invoke'
-	method on a delegate type - that is error cs1533 now flagged by
-	mcs.
-
-2003-07-17  Andreas Nahr <[email protected]>
-
-	* System.Web.dll.sources:
-	* list: HtmlControlPersistableAttribute.cs, IgnoreUnknownContentAttribute.cs added
-
-2003-07-17  Andreas Nahr <[email protected]>
-
-	* System.Web.dll.sources:
-	* list: System.Web.UI/IUserControlDesignerAccessor.cs added
-
-2003-07-17  Andreas Nahr <[email protected]>
-
-	* System.Web.dll.sources:
-	* list: AssemblyInfo.cs added, Consts.cs added
-
-2003-04-20  Gonzalo Paniagua Javier <[email protected]>
-
-	* list: sorted, added a couple of missing files and 3 new ones.
-
-2003-04-15  Gonzalo Paniagua Javier <[email protected]>
-
-	* list: added CollectionBuilder and TemplateBuilder.
-
-2003-04-09  Gonzalo Paniagua Javier <[email protected]>
-
-	* list: added Watcher.cs
-
-2003-03-31  Stefan Grling <[email protected]>
-
-	* list: added new files to System.Web.SessionState
-
-2003-03-03  Gonzalo Paniagua Javier <[email protected]>
-
-	* list: added SessionConfig.cs and SessionStateSectionHandler.cs
-
-2003-02-12  Gonzalo Paniagua Javier <[email protected]>
-
-	* list: added AuthorizationConfig and AuthorizationConfigHandler.
-
-2003-02-11  Gonzalo Paniagua Javier <[email protected]>
-
-	* list: added a couple of new files.
-
-2002-11-29  Gonzalo Paniagua Javier <[email protected]>
-
-	* list: added new file.
-
-2002-11-26  Gonzalo Paniagua Javier <[email protected]>
-
-	* list: added/removed files.
-
-2002-11-20  Gonzalo Paniagua Javier <[email protected]>
-
-	* makefile.gnu: s/MONO_PATH_PREFIX/MONO_PATH/
-
-2002-10-28  Duncan Mak  <[email protected]>
-
-	* list: added DataGridLinkButton.cs.
-
-2002-10-27  Gonzalo Paniagua Javier <[email protected]>
-
-	* list: added WebEncoding.cs
-
-2002-10-26  Gonzalo Paniagua Javier <[email protected]>
-
-	* makefile.trace: used to build System.Web.dll with trace enabled.
-	* System.Web.build: added trace and clean targets.
-
-2002-10-24  Gonzalo Paniagua Javier <[email protected]>
-
-	* System.Web.build: added options (commented out) to activate tracing.
-
-2002-10-06  Gonzalo Paniagua Javier <[email protected]>
-
-	* list: added new file in System.Web.Handlers.
-
-2002-10-06  Gonzalo Paniagua Javier <[email protected]>
-
-	* list: added new files in System.Web.Configuration.
-
-2002-09-30  Gonzalo Paniagua Javier <[email protected]>
-
-	* list: added new files in System.Web.
-
-2002-09-28  Gonzalo Paniagua Javier <[email protected]>
-
-	* list: added PageHandlerFactory.
-
-2002-09-12  Gonzalo Paniagua Javier <[email protected]>
-
-	* list: added 2 new files (DataGrid*Internal.cs).
-
-2002-09-11  Gonzalo Paniagua Javier <[email protected]>
-
-	* list: added new files.
-
-2002-08-26  Gonzalo Paniagua Javier <[email protected]>
-
-	* list: added new files in System.Web.Security
-
-2002-08-26  Gonzalo Paniagua Javier <[email protected]>
-
-	* list: added HorizontalAlignConverter and VerticalAlignConverter.
-
-2002-08-05  Patrik Torstensson <[email protected]>
-	* list: 
-		Add System.Web/ApplicationFactory.cs
-		Add System.Web/HttpAsyncResult.cs
-		Add System.Web.Configuration/GlobalizationConfiguration.cs
-		Add System.Web.Configuration/HandlerFactoryConfiguration.cs
-		Add System.Web.Configuration/HandlerFactoryProxy.cs
-		Add System.Web.Configuration/HandlerItem.cs
-		Add System.Web.Configuration/ModuleItem.cs
-		Add System.Web.Configuration/ModulesConfiguration.cs
-
-2002-07-24  Tim Coleman <[email protected]>
-	* list: 
-		Add System.Web/ProcessInfo.cs
-		Add System.Web/HttpCompileException.cs
-		Add System.Web/HttpParseException.cs
-		Add System.Web/HttpUnhandledException.cs
-
-2002-07-12  Gonzalo Paniagua Javier <[email protected]>
-
-	* list: added some more files from System.Web.Hosting.
-
-2002-07-12  Gonzalo Paniagua Javier <[email protected]>
-
-	* System.Web.build: removed some more excludes.
-
-2002-07-05  Gonzalo Paniagua Javier <[email protected]>
-
-	* list: updated. Currently mcs cannot compile System.Web because it
-	cannot find NameObjectCollectionBase.KeysCollection.
-
-	* System.Web.build: don't display unused event nor always default value
-	warnings by now.
-
-2002-06-20  Gonzalo Paniagua Javier <[email protected]>
-
-	* list: updated and reformatted.
-
-2002-06-05  Gonzalo Paniagua Javier <[email protected]>
-
-	* System.Web.build: added /debug flag. I wanna see line numbers in
-	exceptions thrown.
-	
-2002-06-03  Gonzalo Paniagua Javier <[email protected]>
-
-	* System.Web.Security:
-	* System.Web.SessionState: new directories.
-
-2002-05-17  Duncan Mak  <[email protected]>
-
-	* System.Web.build: Added new arguments: "/noconfig",
-	"/r:System.Drawing.dll" and "/r:System.Xml.dll".
-
-2002-05-10  Duncan Mak  <[email protected]>
-
-	* System.Web.build: Include the System.Web.UI.HtmlControls namespace.
-
-	* Page.cs:
-	* ValidatorCollection.cs: Stubs to make things compile for
-	now. Added one dummy method (RegisterClientScriptFile) that's used
-	in the existing codebase,  but not in MS docs.
-
-2002-04-26  Lawrence Pit <[email protected]>
-
-	* Added directory: System.Web.Mail
-	
-2002-04-10  Patrik Torstensson <[email protected]>
-
-	* System.Web -- Assembly build.
-	
-	  The basic runtime support is now working, we can now start working
-	  on the runtime flow system (thread pool etc) and also start testing
-	  the parser and control framework. (224 files are compiled)
-
-2002-03-26  Gaurav Vaish <[email protected]>
-
-	* System.Web.Security: Removed all files. Will do it later.
-	          May be someone else like to do it for the time being.
-
-2002-03-17  Gaurav Vaish <[email protected]>
-
-	* System.Web -- Assembly build.
-	  Another milestone reached. Compiled 195 classes successfully.
-	  Build includes System.Web.UI.WebControls and all the dependencies
-	  for the namespace.
-
-2002-03-05  Gaurav Vaish <[email protected]>
+2005-08-18  Dick Porter  <[email protected]>
 
-	* System.Web.Security: Added directory.
+	* System.Web.dll.sources: Added some new 2.0 files
 
-2002-03-04  Gaurav Vaish <[email protected]>
+	* files-to-copy: Added lots more files changed in 2.0
 
-	* System.Web.UI.WebContorls: Virtually complete. See
-	  System.Web.UI.WebControls/ChangeLog for a comprehensensive
-	  description of what's left and where. But, don't go for
-	  a build at this stage. There are a few classes left in
-	  System.Web namespace that need to be filled-up, though
-	  I will try to fix up the current state to be able to make
-	  a build.
+2005-08-17  Jackson Harper  <[email protected]>
 
-2001-12-20  Gaurav Vaish <[email protected]>
+	* files-to-copy: Add new cache stuff and updated
+	SessionStateModule to the build.
 
-       Did first successful build of System.Web.dll that included
-	 System.Web.UI.WebControls namespace. Though, not updating
-	 the System.Web.build file, since with the changes that
-	 followed, the build again fails :( 
+2005-08-15  Jackson Harper  <[email protected]>
 
-2001-11-30  Gaurav Vaish <[email protected]>
+	* System.Web.dll.sources: Remove old files, add new cache files.
 
-	* System.Web.WebUtils: Removed
-	* System.Web.Utils   : Added --- replacement of WebUtils
+2005-08-11  Dick Porter  <[email protected]>
 
-2001-11-08  Gaurav Vaish <[email protected]>
+	* files-to-copy: Add System.Web.UI/CssStyleCollection.cs now that
+	I've edited it
 
-        *  System.Web.WebUtils:  Added directory
+2005-07-20  Chris Toshok  <[email protected]>
 
-2001-08-22  Bob Smith <[email protected]>
+	* Makefile (RESOURCE_FILES_1): add resources/WebUIValidation.js
 
-        * Added directory: System.Web.UI.HtmlControls
-        * Added directory: Test
+2005-07-18  Ben Maurer  <[email protected]>
 
-2001-08-17  Bob Smith <[email protected]>
+	* performance-and-tips: Expand on some stuff, some new content.
 
-        * Added directory: System.Web.UI
+2005-07-14  Duncan Mak  <[email protected]>
 
-2001-08-09  Bob Smith <[email protected]>
+	* System.Web_test.dll.sources: Sorted. Added PagedDataSourceTest.
 
-        * Added directory: System.Web
+2005-07-07  Ben Maurer  <[email protected]>
 
-2001-07-20	Patrik Torstensson ([email protected])
+	* test-msft: A script for people to use with their windows box to
+	get things to run nicely.
 
-	* Added directory: System.Web.Caching

+ 18 - 13
mcs/class/System.Web/Makefile

@@ -2,7 +2,10 @@ thisdir = class/System.Web
 SUBDIRS = Test
 include ../../build/rules.make
 
-RESOURCE_FILES = \
+RESOURCE_FILES_1= \
+	resources/WebUIValidation.js
+
+RESOURCE_FILES_2 = \
 	resources/arrow_minus.gif \
 	resources/arrow_noexpand.gif \
 	resources/arrow_plus.gif \
@@ -43,26 +46,28 @@ RESOURCE_FILES = \
 	System.Web.UI.WebControls/TreeView.js \
 	System.Web.UI.WebControls/Menu.js
 
+OTHER_RES = $(RESOURCE_FILES_1)
 ifeq (net_2_0, $(PROFILE))
-OTHER_RES = $(RESOURCE_FILES)
-OTHER_LIB_MCS_FLAGS = /r:System.Configuration.dll
+OTHER_RES += $(RESOURCE_FILES_2)
+OTHER_LIB_MCS_FLAGS = -r:System.Configuration.dll
 endif
 
+
 LIBRARY = System.Web.dll
 LIB_MCS_FLAGS = \
-	/nowarn:649  	\
-	/codepage:28591	\
-	/r:$(corlib)	 		\
-	/r:System.dll 			\
-	/r:System.Drawing.dll 		\
-	/r:System.Data.dll		\
-	/r:System.Xml.dll		\
-	/r:System.EnterpriseServices.dll \
+	-unsafe \
+	-nowarn:649  	\
+	-r:$(corlib)	 		\
+	-r:System.dll 			\
+	-r:System.Drawing.dll 		\
+	-r:System.Data.dll		\
+	-r:System.Xml.dll		\
+	-r:System.EnterpriseServices.dll \
 	$(OTHER_LIB_MCS_FLAGS) \
 	$(OTHER_RES:%=/resource:%)
 
-TEST_MCS_FLAGS = $(LIB_MCS_FLAGS) -nowarn:219
+TEST_MCS_FLAGS = $(LIB_MCS_FLAGS) -nowarn:219 -nowarn:169
 
-EXTRA_DISTFILES = $(RESOURCE_FILES)
+EXTRA_DISTFILES = $(RESOURCE_FILES_2) $(RESOURCE_FILES_1)
 
 include ../../build/library.make

+ 3 - 3
mcs/class/System.Web/System.Web.Caching/CachedRawResponse.cs

@@ -43,13 +43,13 @@ namespace System.Web.Caching {
 		private string status_desc;
 		private int content_length;
 		private ArrayList headers;
-		private HttpResponseHeader date_header;
+		private BaseResponseHeader date_header;
 		private byte[] buffer;
 		
 		internal CachedRawResponse (HttpCachePolicy policy)
 		{
 			this.policy = policy;
-			this.buffer = new byte [HttpWriter.MaxBufferSize];
+			this.buffer = new byte [32*1024];
 		}
 
 		internal HttpCachePolicy Policy {
@@ -81,7 +81,7 @@ namespace System.Web.Caching {
 			get { return headers; }
 		}
 
-		internal HttpResponseHeader DateHeader {
+		internal BaseResponseHeader DateHeader {
 			get { return date_header; }
 			set { date_header = value; }
 		}

+ 17 - 5
mcs/class/System.Web/System.Web.Caching/ChangeLog

@@ -1,9 +1,21 @@
-2005-07-26 Eyal Alaluf <[email protected]>
-    * Cache.cs CacheExpires.cs: In TARGET_j2EE dispose the timer thread when done.
+2005-08-20 Gonzalo Paniagua Javier <[email protected]>
 
-2005-07-25 Eyal Alaluf <[email protected]>
-    * ExpiresBuckets.cs: Removed unused field (that if used would lead to
-	  serious runtime errors).
+	* CacheDependency.cs: add missing ctor.
+
+2005-08-15  Jackson Harper  <[email protected]>
+
+	* CacheItemPriority.cs:
+	* CacheItemRemovedCallback.cs:
+	* CacheItemRemovedReason.cs: New implementations.
+
+2005-07-30  Miguel de Icaza  <[email protected]>
+
+	* OutputCacheModule.cs: Make synchronous.
+
+2005-07-15 Lluis Sanchez Gual <[email protected]>
+
+	* Cache.cs: New implementation.
+	* CacheDependency.cs: New implementation.
 
 2005-06-25 Gonzalo Paniagua Javier <[email protected]>
 

+ 5 - 28
mcs/class/System.Web/System.Web.Caching/OutputCacheModule.cs

@@ -49,18 +49,13 @@ namespace System.Web.Caching {
 
 		public void Init (HttpApplication app)
 		{
-			app.AddOnResolveRequestCacheAsync (
-				new BeginEventHandler (OnBeginRequestCache),
-				new EndEventHandler (OnEndRequestCache));
-
-			app.AddOnUpdateRequestCacheAsync (
-				new BeginEventHandler (OnBeginUpdateCache),
-				new EndEventHandler (OnEndUpdateCache));
+			app.ResolveRequestCache += OnResolveRequestCache;
+			app.UpdateRequestCache += OnUpdateRequestCache;
  
 			response_removed = new CacheItemRemovedCallback (OnRawResponseRemoved);
 		}
 
-		IAsyncResult OnBeginRequestCache (object o, EventArgs args, AsyncCallback cb, object data)
+		void OnResolveRequestCache (object o, EventArgs args)
 		{
 			HttpApplication app = (HttpApplication) o;
 			HttpContext context = app.Context;
@@ -71,7 +66,7 @@ namespace System.Web.Caching {
 			CachedRawResponse c;
 
 			if (varyby == null)
-				goto leave;
+				return;
 
 			key = varyby.CreateKey (vary_key, context);
 			c = context.Cache [key] as CachedRawResponse;
@@ -90,35 +85,17 @@ namespace System.Web.Caching {
 				
 				app.CompleteRequest ();
 			} 
-
-		leave:
-			HttpAsyncResult result = new HttpAsyncResult (cb,this);
-			result.Complete (true, o, null);
-			
-			return result;
-		}
-
-		void OnEndRequestCache (IAsyncResult result)
-		{
 		}
 
-		IAsyncResult OnBeginUpdateCache (object o, EventArgs args, AsyncCallback cb, object data)
+		void OnUpdateRequestCache (object o, EventArgs args)
 		{
 			HttpApplication app = (HttpApplication) o;
 			HttpContext context = app.Context;
-			HttpAsyncResult result;
 
 			if (context.Response.IsCached && context.Response.StatusCode == 200 && 
 			    !context.Trace.IsEnabled)
 				DoCacheInsert (context);
 
-			result = new HttpAsyncResult (cb, this);
-			result.Complete (true, o, null);
-			return result;
-		}
-
-		void OnEndUpdateCache (IAsyncResult result)
-		{
 		}
 
 		private void DoCacheInsert (HttpContext context)

+ 35 - 5
mcs/class/System.Web/System.Web.Compilation/BaseCompiler.cs

@@ -42,7 +42,7 @@ namespace System.Web.Compilation
 {
 	abstract class BaseCompiler
 	{
-		protected static string dynamicBase = AppDomain.CurrentDomain.SetupInformation.DynamicBase;
+		string dynamic_dir;
 		TemplateParser parser;
 		CodeDomProvider provider;
 		ICodeCompiler compiler;
@@ -286,6 +286,34 @@ namespace System.Web.Compilation
 			throw new CompilationException (parser.InputFile, results.Errors, writer.ToString ());
 		}
 
+		protected string DynamicDir ()
+		{
+			if (dynamic_dir != null)
+				return dynamic_dir;
+
+			dynamic_dir = AppDomain.CurrentDomain.SetupInformation.DynamicBase;
+			if (dynamic_dir != null && dynamic_dir != "")
+				return dynamic_dir;
+			
+			for (int i = 0; ; i++){
+				string d = Path.Combine (
+					Path.GetTempPath (),
+					String.Format ("{0}-temp-aspnet-{1:x}", Environment.UserName, i));
+			
+				try {
+					Directory.CreateDirectory (d);
+					string stamp = Path.Combine (d, "stamp");
+					Directory.CreateDirectory (stamp);
+					dynamic_dir = d;
+					Directory.Delete (stamp);
+					break;
+				} catch (UnauthorizedAccessException){
+					continue;
+				}
+			}
+			return dynamic_dir;
+		}
+		
 		public virtual Type GetCompiledType () 
 		{
 			Type type = CachingCompiler.GetTypeFromCache (parser.InputFile);
@@ -311,13 +339,15 @@ namespace System.Web.Compilation
 
 			compilerParameters.WarningLevel = config.GetWarningLevel (lang);
 			bool keepFiles = (Environment.GetEnvironmentVariable ("MONO_ASPNET_NODELETE") != null);
-			if (!Directory.Exists (dynamicBase))
-				Directory.CreateDirectory (dynamicBase);
 
-			TempFileCollection tempcoll = new TempFileCollection (config.TempDirectory, keepFiles);
+			string tempdir = config.TempDirectory;
+			if (tempdir == null || tempdir == "")
+				tempdir = DynamicDir ();
+				
+			TempFileCollection tempcoll = new TempFileCollection (tempdir, keepFiles);
 			compilerParameters.TempFiles = tempcoll;
 			string dllfilename = Path.GetFileName (tempcoll.AddExtension ("dll", true));
-			compilerParameters.OutputAssembly = Path.Combine (dynamicBase, dllfilename);
+			compilerParameters.OutputAssembly = Path.Combine (DynamicDir (), dllfilename);
 
 			CompilerResults results = CachingCompiler.Compile (this);
 			CheckCompilerErrors (results);

+ 11 - 5
mcs/class/System.Web/System.Web.Compilation/ChangeLog

@@ -3,14 +3,20 @@
 	* WebServiceCompiler.cs: apply the same fix as in r45440 that fixed bug
 	75146 for pages/controls.
 
-2005-07-18  Eyal Alalouf  <eyala@mainsoft.com>
+2005-08-09  Miguel de Icaza  <miguel@novell.com>
 
-	* Location.cs: Added set to the FileName property.
+	* WebServiceCompiler.cs: Use the new DynamicDir method.
 
-2005-07-11 Gonzalo Paniagua Javier <[email protected]>
+	* BaseCompiler.cs: Use the DynamicBase property as a hint, but
+	since this value is null most of the time, compute the real value.
 
-	* TemplateControlCompiler.cs: in these cases, we're only interested in
-	public properties/fields, not protected.
+	Added Bonus: if the directory has some kind of permission problem,
+	try a different directory name.
+
+2005-07-13  Miguel de Icaza  <[email protected]>
+
+	* AspGenerator.cs (AspGenerator.CheckLanguage): Use
+	BaseParser.Context for the context. 
 
 2005-06-26 Gonzalo Paniagua Javier <[email protected]>
 

+ 2 - 0
mcs/class/System.Web/System.Web.Compilation/TemplateControlCompiler.cs

@@ -323,10 +323,12 @@ namespace System.Web.Compilation
 		}
 #endif
 
+		/*
 		static bool InvariantCompare (string a, string b)
 		{
 			return (0 == String.Compare (a, b, false, CultureInfo.InvariantCulture));
 		}
+		*/
 
 		static bool InvariantCompareNoCase (string a, string b)
 		{

+ 1 - 4
mcs/class/System.Web/System.Web.Compilation/WebServiceCompiler.cs

@@ -90,9 +90,6 @@ namespace System.Web.Compilation
 			tempcoll = new TempFileCollection (config.TempDirectory, keepFiles);
 			compilerParameters.TempFiles = tempcoll;
 
-			if (!Directory.Exists (dynamicBase))
-				Directory.CreateDirectory (dynamicBase);
-
 			inputFile = tempcoll.AddExtension (provider.FileExtension);
 			Stream st = File.OpenWrite (inputFile);
 			StreamWriter sw = new StreamWriter (st);
@@ -101,7 +98,7 @@ namespace System.Web.Compilation
 
 			string dllfilename = Path.GetFileName (tempcoll.AddExtension ("dll", true));
 
-			compilerParameters.OutputAssembly = Path.Combine (dynamicBase, dllfilename);
+			compilerParameters.OutputAssembly = Path.Combine (DynamicDir (), dllfilename);
 
 			CompilerResults results = CachingCompiler.Compile (this);
 			CheckCompilerErrors (results);

+ 42 - 1
mcs/class/System.Web/System.Web.Configuration/AuthConfig.cs

@@ -5,6 +5,7 @@
 //	Gonzalo Paniagua Javier ([email protected])
 //
 // (C) 2002 Ximian, Inc (http://www.ximian.com)
+// Copyright (c) 2005 Novell, Inc (http://www.novell.com)
 //
 
 //
@@ -28,7 +29,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-using System;
 using System.Collections;
 using System.Configuration;
 using System.Xml;
@@ -50,6 +50,13 @@ namespace System.Web.Configuration
 		bool requireSSL;
 		bool slidingExpiration;
 #endif
+#if NET_2_0
+		string cookie_domain;
+		HttpCookieMode cookie_mode;
+		bool cookies_supported;
+		string default_url;
+		bool enable_crossapp_redirects;
+#endif
 
 		internal AuthConfig (object parent)
 		{
@@ -66,6 +73,13 @@ namespace System.Web.Configuration
 #if NET_1_1
 				requireSSL = p.requireSSL;
 				slidingExpiration = p.slidingExpiration;
+#endif
+#if NET_2_0
+				cookie_domain = p.cookie_domain;
+				cookie_mode = p.cookie_mode;
+				cookies_supported = p.cookies_supported;
+				default_url = p.default_url;
+				enable_crossapp_redirects = p.enable_crossapp_redirects;
 #endif
 				credentialUsers = new Hashtable (p.CredentialUsers);
 			}
@@ -211,6 +225,33 @@ namespace System.Web.Configuration
 			set { slidingExpiration = value; }
 		}
 #endif
+
+#if NET_2_0
+		internal string CookieDomain {
+			get { return cookie_domain; }
+			set { cookie_domain = value; }
+		}
+
+		internal HttpCookieMode CookieMode {
+			get { return cookie_mode; }
+			set { cookie_mode = value; }
+		}
+
+		internal bool CookiesSupported {
+			get { return cookies_supported; }
+			set { cookies_supported = value; }
+		}
+
+		internal string DefaultUrl {
+			get { return default_url; }
+			set { default_url = value; }
+		}
+
+		internal bool EnableCrossAppRedirects {
+			get { return enable_crossapp_redirects; }
+			set { enable_crossapp_redirects = value; }
+		}
+#endif
 	}
 }
 

+ 20 - 0
mcs/class/System.Web/System.Web.Configuration/ChangeLog

@@ -1,3 +1,23 @@
+2005-08-25  Chris Toshok  <[email protected]>
+
+	* HandlerFactoryConfiguration.cs: implement the slow path for
+	PathMatches using Regex.  Also, make the fast path for exact
+	matches faster (and more correct).
+
+2005-08-25  Chris Toshok  <[email protected]>
+
+	* HandlerFactoryConfiguration.cs: chain up to the parent
+	Configuration if we don't have a match, instead of adding the
+	parent's handlers to our list (and thereby overriding ours).
+
+2005-08-24  Sebastien Pouliot  <[email protected]>
+
+	* AuthConfig.cs: Add new 2.0 stuff (required for Forms Authentication).
+
+2005-08-23 Gonzalo Paniagua Javier <[email protected]>
+
+	* MachineKeyConfig.cs: we don't honor IsolateApp.
+
 2005-07-28 Gonzalo Paniagua Javier <[email protected]>
 
 	* MachineKeyConfigHandler.cs:

+ 1 - 1
mcs/class/System.Web/System.Web.Configuration/CompilationConfiguration.cs

@@ -75,7 +75,7 @@ namespace System.Web.Configuration
 		{
 			CompilationConfiguration config;
 			if (context == null)
-				context = HttpContext.Context;
+				context = HttpContext.Current;
 
 			config = context.GetConfig ("system.web/compilation") as CompilationConfiguration;
 

+ 2 - 3
mcs/class/System.Web/System.Web.Configuration/HttpHandlersSectionHandler.cs

@@ -43,7 +43,7 @@ namespace System.Web.Configuration
 			if (parent is HandlerFactoryConfiguration)
 				mapper = new HandlerFactoryConfiguration ((HandlerFactoryConfiguration) parent);
 			else
-				mapper = new HandlerFactoryConfiguration ();
+				mapper = new HandlerFactoryConfiguration (null);
 			
 			if (section.Attributes != null && section.Attributes.Count != 0)
 				HandlersUtil.ThrowException ("Unrecognized attribute", section);
@@ -84,8 +84,7 @@ namespace System.Web.Configuration
 					if (child.Attributes != null && child.Attributes.Count != 0)
 						HandlersUtil.ThrowException ("Unrecognized attribute", child);
 
-					HandlerItem item = new HandlerItem (verb, path, type, validate);
-					mapper.Add (item);
+					mapper.Add (verb, path, type, validate);
 					continue;
 				}
 

+ 6 - 6
mcs/class/System.Web/System.Web.Configuration/HttpModulesConfigurationHandler.cs

@@ -43,7 +43,7 @@ namespace System.Web.Configuration
 			if (parent is ModulesConfiguration)
 				mapper = new ModulesConfiguration ((ModulesConfiguration) parent);
 			else
-				mapper = new ModulesConfiguration ();
+				mapper = new ModulesConfiguration (null);
 			
 			if (section.Attributes != null && section.Attributes.Count != 0)
 				HandlersUtil.ThrowException ("Unrecognized attribute", section);
@@ -67,7 +67,7 @@ namespace System.Web.Configuration
 					continue;
 				}
 
-				string nameAtt = HandlersUtil.ExtractAttributeValue ("name", child);
+				string name_attr = HandlersUtil.ExtractAttributeValue ("name", child);
 				if (name == "add") {
 					string type = HandlersUtil.ExtractAttributeValue ("type", child);
 					if (child.Attributes.Count != 0)
@@ -77,8 +77,7 @@ namespace System.Web.Configuration
 					if (type.StartsWith ("System.Web.Mobile"))
 						continue;
 
-					ModuleItem item = new ModuleItem (nameAtt, type);
-					mapper.Add (item);
+					mapper.Add (name_attr, type);
 					continue;
 				}
 
@@ -86,7 +85,7 @@ namespace System.Web.Configuration
 					if (child.Attributes.Count != 0)
 						HandlersUtil.ThrowException ("Unrecognized attribute", child);
 
-					if (mapper.Remove (nameAtt) == null)
+					if (mapper.Remove (name_attr) == null)
 						HandlersUtil.ThrowException ("Module not loaded", child);
 					continue;
 				}
@@ -94,7 +93,8 @@ namespace System.Web.Configuration
 				HandlersUtil.ThrowException ("Unrecognized element", child);
 			}
 
-			mapper.Add (new ModuleItem ("DefaultAuthentication", typeof (DefaultAuthenticationModule)));
+			mapper.Add ("DefaultAuthentication", typeof (DefaultAuthenticationModule));
+			
 			return mapper;
 		}
 	}

+ 1 - 1
mcs/class/System.Web/System.Web.Configuration/HttpRuntimeConfig.cs

@@ -68,7 +68,7 @@ namespace System.Web.Configuration
 		{
 			HttpRuntimeConfig config;
 			if (context == null)
-				context = HttpContext.Context;
+				context = HttpContext.Current;
 
 			config = context.GetConfig ("system.web/httpRuntime") as HttpRuntimeConfig;
 

+ 7 - 7
mcs/class/System.Web/System.Web.Configuration/MachineKeyConfig.cs

@@ -40,10 +40,10 @@ namespace System.Web.Configuration
 	class MachineKeyConfig
 	{
 		byte [] validation_key;
-		bool    isolate_validation;
+		//bool    isolate_validation;
 		byte [] decryption_key;
 		byte [] decryption_key_192bits;
-		bool    isolate_decryption; // For us, this is always true by now.
+		//bool    isolate_decryption; // For us, this is always true by now.
 		MachineKeyValidation validation_type;
 
 		static byte [] autogenerated;
@@ -95,15 +95,15 @@ namespace System.Web.Configuration
 			return result;
 		}
 
-		static byte [] MakeKey (string key, bool decryption, out bool isolate)
+		static byte [] MakeKey (string key, bool decryption) //, out bool isolate)
 		{
 			if (key == null || key.StartsWith ("AutoGenerate")){
-				isolate = key.IndexOf ("IsolateApps") != 1;
+				//isolate = key.IndexOf ("IsolateApps") != 1;
 
 				return (decryption) ? autogenerated_decrypt : autogenerated;
 			}
 
-			isolate = false;
+			//isolate = false;
 
 			int len = key.Length;
 			if (len < 40 || len > 128 || (len % 2) == 1)
@@ -114,7 +114,7 @@ namespace System.Web.Configuration
 		
 		internal void SetValidationKey (string n)
 		{
-			validation_key = MakeKey (n, false, out isolate_validation);
+			validation_key = MakeKey (n, false); //, out isolate_validation);
 		}
 		
 		internal byte [] ValidationKey {
@@ -123,7 +123,7 @@ namespace System.Web.Configuration
 
 		internal void SetDecryptionKey (string n)
 		{
-			decryption_key = MakeKey (n, true, out isolate_decryption);
+			decryption_key = MakeKey (n, true); //, out isolate_decryption);
 			decryption_key_192bits = new byte [24];
 			int count = 24;
 			if (decryption_key.Length < 24)

+ 1 - 1
mcs/class/System.Web/System.Web.Configuration/PagesConfiguration.cs

@@ -66,7 +66,7 @@ namespace System.Web.Configuration
 		{
 			PagesConfiguration config;
 			if (context == null)
-				context = HttpContext.Context;
+				context = HttpContext.Current;
 
 			try {
 				config = context.GetConfig ("system.web/pages") as PagesConfiguration;

+ 2 - 2
mcs/class/System.Web/System.Web.Configuration/WebConfigurationHost.cs

@@ -201,12 +201,12 @@ namespace System.Web.Configuration
 				virtualPath = virtualPath.Replace (System.IO.Path.DirectorySeparatorChar, '/');
 
 			if (UrlUtils.IsRooted (virtualPath)) {
-				virtualPath = UrlUtils.Reduce (virtualPath);
+				virtualPath = UrlUtils.Canonic (virtualPath);
 			} else {
 				if (map.VirtualDirectories.Count > 0) {
 					string root = map.VirtualDirectories [0].VirtualDirectory;
 					virtualPath = UrlUtils.Combine (root, virtualPath);
-					virtualPath = UrlUtils.Reduce (virtualPath);
+					virtualPath = UrlUtils.Canonic (virtualPath);
 				}
 			}
 			return virtualPath;

+ 21 - 1
mcs/class/System.Web/System.Web.Configuration/WebConfigurationSettings.cs

@@ -588,10 +588,30 @@ namespace System.Web.Configuration
 			return iconf.Create (parentConfig, fileName, doc.DocumentElement);
 		}
 
+		string MakeRelative (string fullUrl, string relativeTo)
+		{
+                        if (fullUrl == relativeTo)
+                                return String.Empty;
+
+                        if (fullUrl.IndexOf (relativeTo) != 0)
+                                return null;
+
+                        string leftOver = fullUrl.Substring (relativeTo.Length);
+                        if (leftOver.Length > 0 && leftOver [0] == '/')
+                                leftOver = leftOver.Substring (1);
+
+                        leftOver = UrlUtils.Canonic (leftOver); 
+                        if (leftOver.Length > 0 && leftOver [0] == '/')
+                                leftOver = leftOver.Substring (1);
+
+                        return leftOver;
+		}
+		
+					    
 		public object GetConfig (string sectionName, HttpContext context)
 		{
 			if (locations != null && dirname != null) {
-				string reduced = UrlUtils.MakeRelative (context.Request.CurrentExecutionFilePath, dirname);
+				string reduced = MakeRelative (context.Request.CurrentExecutionFilePath, dirname);
 				string [] parts = reduced.Split ('/');
 				Location location = null;
 

+ 4 - 0
mcs/class/System.Web/System.Web.Profile/ChangeLog

@@ -1,3 +1,7 @@
+2005-08-19  Chris Toshok  <[email protected]>
+
+	* ProfileInfo.cs: I was bored.  implement this.
+
 2004-08-02  Duncan Mak  <[email protected]>
 
 	* ProfileAuthenticationOption.cs: Added enumeration.

+ 16 - 6
mcs/class/System.Web/System.Web.Security/ActiveDirectoryMembershipProvider.cs

@@ -6,8 +6,7 @@
 //	Lluis Sanchez Gual ([email protected])
 //
 // (C) 2003 Ben Maurer
-//
-
+// Copyright (c) 2005 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -30,11 +29,12 @@
 //
 
 #if NET_2_0
-using System.Collections;
+
 using System.Collections.Specialized;
-using System.Text;
 
 namespace System.Web.Security {
+
+	[MonoTODO ("that's only a stub")]
 	public class ActiveDirectoryMembershipProvider : MembershipProvider {
 		
 		[MonoTODO]
@@ -150,9 +150,9 @@ namespace System.Web.Security {
 			get { throw new NotImplementedException (); }
 			set { throw new NotImplementedException (); }
 		}
-		
+
 		[MonoTODO]
-		public virtual string Description {
+		public ActiveDirectoryConnectionProtection CurrentConnectionProtection {
 			get { throw new NotImplementedException (); }
 		}
 		
@@ -165,6 +165,11 @@ namespace System.Web.Security {
 		public override bool EnablePasswordRetrieval {
 			get { throw new NotImplementedException (); }
 		}
+
+		[MonoTODO]
+		public bool EnableSearchMethods {
+			get { throw new NotImplementedException (); }
+		}
 		
 		[MonoTODO]
 		public override MembershipPasswordFormat PasswordFormat {
@@ -200,6 +205,11 @@ namespace System.Web.Security {
 		public override int PasswordAttemptWindow {
 			get { throw new NotImplementedException (); }
 		}
+
+		[MonoTODO]
+		public int PasswordAnswerAttemptLockoutDuration {
+			get { throw new NotImplementedException (); }
+		}
 		
 		[MonoTODO]
 		public override string PasswordStrengthRegularExpression {

+ 2 - 3
mcs/class/System.Web/System.Web.Security/AnonymousIdentificationEventArgs.cs

@@ -5,8 +5,7 @@
 //	Ben Maurer ([email protected])
 //
 // (C) 2003 Ben Maurer
-//
-
+// Copyright (c) 2005 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -42,7 +41,7 @@ namespace System.Web.Security {
 		}
 		
 		string anonymousId;
-		public string AnonymousId {
+		public string AnonymousID {
 			get { return anonymousId; }
 			set { anonymousId = value; }
 		}

+ 11 - 7
mcs/class/System.Web/System.Web.Security/AnonymousIdentificationModule.cs

@@ -5,8 +5,7 @@
 //	Ben Maurer ([email protected])
 //
 // (C) 2003 Ben Maurer
-//
-
+// Copyright (c) 2005 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -29,16 +28,21 @@
 //
 
 #if NET_2_0
-using System.Collections;
-using System.Collections.Specialized;
-using System.Text;
 
 namespace System.Web.Security {
+
+	[MonoTODO ("that's only a stub")]
 	public sealed class AnonymousIdentificationModule : IHttpModule {
-		public event AnonymousIdentificationEventHandler OnCreate;
-		public event EventHandler OnRemove;
+
+		public event AnonymousIdentificationEventHandler Creating;
 		
 		
+		[MonoTODO]
+		public void ClearAnonymousIdentifier ()
+		{
+			throw new NotImplementedException ();
+		}
+
 		[MonoTODO]
 		public void Dispose ()
 		{

+ 49 - 0
mcs/class/System.Web/System.Web.Security/ChangeLog

@@ -1,3 +1,47 @@
+2005-08-25  Sebastien Pouliot  <[email protected]> 
+ 
+	* FormsAuthentication.cs: With 2.0 we can get the default properties 
+	and call Initialize without a NRE.
+
+2005-08-25  Sebastien Pouliot  <[email protected]>
+
+	* ActiveDirectoryConnectionProtection.cs: New (2.0) enum.
+	* ActiveDirectoryMembershipProvider.cs: Fixed 2.0 API.
+	* AnonymousIdentificationEventArgs.cs: Fixed AnonymousID property case.
+	* AnonymousIdentificationModule.cs: Fixed 2.0 API.
+	* FileAuthorizationModule.cs: Added static CheckFileAccessForUser in 
+	2.0 profile (TODO).
+	* FormsAuthentication.cs: Added missing 2.0 properties with their 
+	default values.
+	* MembershipCreateStatus.cs: Fixed enum values/names.
+	* MembershipProvider.cs: Added stub for [Decrypt|Encrypt]Password. Both
+	methods don't seems to work without an active provider.
+	* PassportIdentity.cs: Added IDispose for 2.0 profile.
+	* Roles.cs: Added missing beta2 bits and default values (which are the
+	only things working without a role provider (web.config).
+	* RolePrincipal.cs: Fixed 2.0 API. Implemented a few bits.
+	* SqlRoleProvider.cs: Fixed 2.0 API.
+	* UrlAuthorizationModule.cs: Added static CheckUrlAccessForPrincipal in
+	2.0 profile (TODO).
+
+2005-08-24  Sebastien Pouliot  <[email protected]>
+
+	* MembershipUserCollection.cs: Fix exceptions.
+
+2005-08-22  Sebastien Pouliot  <[email protected]>
+
+	* FormsAuthentication.cs: Add some 2.0 stuff required for Login* 
+	controls to compile.
+
+2005-08-18  Sebastien Pouliot  <[email protected]>
+
+	* Membership.cs: Commented unworking parts of the .cctor to allow 
+	testing the Login control.
+	* MembershipProviderCollection.cs: Fixed exception handling.
+	* SqlMembershipProvider.cs: Don't throw NotImplementedException 
+	everywhere so Membership's .cctor (somewhat) works. Removed 
+	Description property (not in beta2).
+
 2005-07-28 Gonzalo Paniagua Javier <[email protected]>
 
 	* FormsAuthentication.cs: allow hardware acceleration support if
@@ -14,6 +58,11 @@
 
 	* FormsAuthenticationModule.cs: Check for null config
 
+2005-07-25  Miguel de Icaza  <[email protected]>
+
+	* FormsAuthentication.cs (SignOut): Force the cookie to have it
+	expire in the past.
+
 2005-07-25 Gonzalo Paniagua Javier <[email protected]>
 
 	* FormsAuthentication.cs: my previous patch missed a "small" detail: it

+ 0 - 2
mcs/class/System.Web/System.Web.Security/DefaultAuthenticationModule.cs

@@ -58,8 +58,6 @@ namespace System.Web.Security
 
 			if (context.User == null)
 				context.User = new GenericPrincipal (defaultIdentity, new string [0]);
-
-			app.SetPrincipal (context.User);
 		}
 	}
 }

+ 10 - 5
mcs/class/System.Web/System.Web.Security/FileAuthorizationModule.cs

@@ -5,8 +5,7 @@
 //	Gonzalo Paniagua Javier ([email protected])
 //
 // (C) 2002 Ximian, Inc (http://www.ximian.com)
-//
-
+// Copyright (c) 2005 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -28,10 +27,9 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-using System.Web;
-
 namespace System.Web.Security
 {
+	[MonoTODO ("that's only a stub")]
 	public sealed class FileAuthorizationModule : IHttpModule
 	{
 		public void Dispose ()
@@ -43,6 +41,13 @@ namespace System.Web.Security
 		{
 			throw new NotImplementedException ();
 		}
+
+#if NET_2_0
+		[MonoTODO]
+		public static bool CheckFileAccessForUser (string virtualPath, IntPtr token, string verb)
+		{
+			throw new NotImplementedException ();
+		}
+#endif
 	}
 }
-

+ 85 - 14
mcs/class/System.Web/System.Web.Security/FormsAuthentication.cs

@@ -29,7 +29,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-using System;
 using System.Collections;
 using System.IO;
 using System.Security.Cryptography;
@@ -57,7 +56,14 @@ namespace System.Web.Security
 		static bool requireSSL;
 		static bool slidingExpiration;
 #endif
-
+#if NET_2_0
+		static string cookie_domain;
+		static HttpCookieMode cookie_mode;
+		static bool cookies_supported;
+		static string default_url;
+		static bool enable_crossapp_redirects;
+		static string login_url;
+#endif
 		// same names and order used in xsp
 		static string [] indexFiles = { "index.aspx",
 						"Default.aspx",
@@ -65,6 +71,13 @@ namespace System.Web.Security
 						"index.html",
 						"index.htm" };
 
+#if NET_2_0
+		[Obsolete]
+#endif
+		public FormsAuthentication ()
+		{
+		}
+
 		public static bool Authenticate (string name, string password)
 		{
 			if (name == null || password == null)
@@ -281,11 +294,6 @@ namespace System.Web.Security
 			return returnUrl;
 		}
 
-		static string GetHexString (string str)
-		{
-			return GetHexString (Encoding.UTF8.GetBytes (str));
-		}
-
 		static string GetHexString (byte [] bytes)
 		{
 			StringBuilder result = new StringBuilder (bytes.Length * 2);
@@ -325,10 +333,13 @@ namespace System.Web.Security
 					return;
 
 				HttpContext context = HttpContext.Current;
-				if (context == null)
-					throw new HttpException ("Context is null!");
-
+#if NET_2_0
+				AuthConfig authConfig = null;
+				if (context != null)
+					authConfig = context.GetConfig (authConfigPath) as AuthConfig;
+#else
 				AuthConfig authConfig = context.GetConfig (authConfigPath) as AuthConfig;
+#endif
 				if (authConfig != null) {
 					cookieName = authConfig.CookieName;
 					timeout = authConfig.Timeout;
@@ -337,6 +348,14 @@ namespace System.Web.Security
 #if NET_1_1
 					requireSSL = authConfig.RequireSSL;
 					slidingExpiration = authConfig.SlidingExpiration;
+#endif
+#if NET_2_0
+					cookie_domain = authConfig.CookieDomain;
+					cookie_mode = authConfig.CookieMode;
+					cookies_supported = authConfig.CookiesSupported;
+					default_url = authConfig.DefaultUrl;
+					enable_crossapp_redirects = authConfig.EnableCrossAppRedirects;
+					login_url = authConfig.LoginUrl;
 #endif
 				} else {
 					cookieName = ".MONOAUTH";
@@ -345,6 +364,13 @@ namespace System.Web.Security
 					protection = FormsProtectionEnum.All;
 #if NET_1_1
 					slidingExpiration = true;
+#endif
+#if NET_2_0
+					cookie_domain = String.Empty;
+					cookie_mode = HttpCookieMode.UseDeviceProfile;
+					cookies_supported = true;
+					default_url = "/default.aspx";
+					login_url = "/login.aspx";
 #endif
 				}
 
@@ -374,8 +400,7 @@ namespace System.Web.Security
 
 			Initialize ();
 			SetAuthCookie (userName, createPersistentCookie, strCookiePath);
-			HttpResponse resp = HttpContext.Current.Response;
-			resp.Redirect (GetRedirectUrl (userName, createPersistentCookie), false);
+			Redirect (GetRedirectUrl (userName, createPersistentCookie));
 		}
 
 		public static FormsAuthenticationTicket RenewTicketIfOld (FormsAuthenticationTicket tOld)
@@ -425,7 +450,12 @@ namespace System.Web.Security
 			if (response == null)
 				throw new HttpException ("Response is null!");
 
-			response.Cookies.MakeCookieExpire (cookieName, cookiePath);
+			HttpCookieCollection cc = response.Cookies;
+			cc.Remove (cookieName);
+			HttpCookie expiration_cookie = new HttpCookie (cookieName, "");
+			expiration_cookie.Expires = new DateTime (1999, 10, 12);
+			expiration_cookie.Path = cookiePath;
+			cc.Add (expiration_cookie);
 		}
 
 		public static string FormsCookieName
@@ -458,6 +488,47 @@ namespace System.Web.Security
 			}
 		}
 #endif
+
+#if NET_2_0
+		public static string CookieDomain {
+			get { return cookie_domain; }
+		}
+
+		public static HttpCookieMode CookieMode {
+			get { return cookie_mode; }
+		}
+
+		public static bool CookiesSupported {
+			get { return cookies_supported; }
+		}
+
+		public static string DefaultUrl {
+			get { return default_url; }
+		}
+
+		public static bool EnableCrossAppRedirects {
+			get { return enable_crossapp_redirects; }
+		}
+
+		public static string LoginUrl {
+			get { return login_url; }
+		}
+
+		public static void RedirectToLoginPage ()
+		{
+			Redirect (LoginUrl);
+		}
+
+		[MonoTODO ("needs more tests")]
+		public static void RedirectToLoginPage (string extraQueryString)
+		{
+			// TODO: if ? is in LoginUrl (legal?), ? in query (legal?) ...
+			Redirect (LoginUrl + "?" + extraQueryString);
+		}
+#endif
+		private static void Redirect (string url)
+		{
+			HttpContext.Current.Response.Redirect (url);
+		}
 	}
 }
-

+ 6 - 6
mcs/class/System.Web/System.Web.Security/Membership.cs

@@ -47,11 +47,11 @@ namespace System.Web.Security
 		
 		static Membership ()
 		{
-			System.Configuration.Configuration conf = WebConfigurationManager.OpenWebConfiguration ("/");
-			MembershipSection section = (MembershipSection) conf.GetSection ("system.web/membership");
+/* FIXME		System.Configuration.Configuration conf = WebConfigurationManager.OpenWebConfiguration ("/");
+			MembershipSection section = (MembershipSection) conf.GetSection ("system.web/membership");*/
 			providers = new MembershipProviderCollection ();
-			
-			foreach (ProviderSettings prov in section.Providers) {
+
+/*			foreach (ProviderSettings prov in section.Providers) {
 				Type t = Type.GetType (prov.Type);
 				if (t == null)
 					throw new ConfigurationException ("Cannot find type: " + prov.Type);
@@ -66,14 +66,14 @@ namespace System.Web.Security
 
 				providers.Add (pr);
 			}
-			
+*/
 			if (providers.Count == 0) {
 				provider = new SqlMembershipProvider ();
 				NameValueCollection attributes = new NameValueCollection ();
 				provider.Initialize ("AspNetSqlMembershipProvider", attributes);
 				providers.Add (provider);
 			}
-			onlineTimeWindow = (int) section.UserIsOnlineTimeWindow.TotalMinutes;
+//			onlineTimeWindow = (int) section.UserIsOnlineTimeWindow.TotalMinutes;
 		}
 		
 		public static MembershipUser CreateUser (string username, string password)

+ 14 - 12
mcs/class/System.Web/System.Web.Security/MembershipCreateStatus.cs

@@ -5,8 +5,7 @@
 //	Ben Maurer ([email protected])
 //
 // (C) 2003 Ben Maurer
-//
-
+// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -30,17 +29,20 @@
 
 #if NET_2_0
 namespace System.Web.Security {
+
 	public enum MembershipCreateStatus {
-		Success = 0,
-		UserNotFound = 1,
-		InvalidPassword = 2,
-		InvalidQuestion = 3,
-		InvalidAnswer = 4,
-		InvalidEmail = 5,
-		DuplicateUsername = 6,
-		DuplicateEmail = 7,
-		UserRejected = 8,
-		ProviderError = 9
+		Success,
+		InvalidUserName,
+		InvalidPassword,
+		InvalidQuestion,
+		InvalidAnswer,
+		InvalidEmail,
+		DuplicateUserName,
+		DuplicateEmail,
+		UserRejected,
+		InvalidProviderUserKey,
+		DuplicateProviderUserKey,
+		ProviderError
 	}
 }
 #endif

+ 14 - 3
mcs/class/System.Web/System.Web.Security/MembershipProvider.cs

@@ -1,13 +1,12 @@
 //
-// System.Web.Security.IMembershipProvider
+// System.Web.Security.MembershipProvider
 //
 // Authors:
 //	Ben Maurer ([email protected])
 //	Lluis Sanchez Gual ([email protected])
 //
 // (C) 2003 Ben Maurer
-//
-
+// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -74,6 +73,18 @@ namespace System.Web.Security
 			if (ValidatingPassword != null)
 				ValidatingPassword (this, args);
 		}
+
+		[MonoTODO]
+		protected virtual byte[] DecryptPassword (byte[] encodedPassword)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		protected virtual byte[] EncryptPassword (byte[] password)
+		{
+			throw new NotImplementedException ();
+		}
 		
 		public event MembershipValidatePasswordEventHandler ValidatingPassword;
 	}

+ 10 - 4
mcs/class/System.Web/System.Web.Security/MembershipProviderCollection.cs

@@ -3,10 +3,10 @@
 //
 // Authors:
 //	Ben Maurer ([email protected])
+//	Sebastien Pouliot  <[email protected]>
 //
 // (C) 2003 Ben Maurer
-//
-
+// Copyright (c) 2005 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -32,14 +32,20 @@
 using System.Configuration.Provider;
 
 namespace System.Web.Security {
+
 	public sealed class MembershipProviderCollection : ProviderCollection
 	{
 		public override void Add (ProviderBase provider)
 		{
+			if (provider == null)
+				throw new ArgumentNullException ("provider");
+
 			if (provider is MembershipProvider)
 				base.Add (provider);
-			else
-				throw new HttpException ();
+			else {
+				throw new ArgumentException ("provider", Locale.GetText (
+					"Wrong type, expected {0}.", "MembershipProvider"));
+			}
 		}
 		
 		public void CopyTo (MembershipProvider[] array, int index)

+ 9 - 8
mcs/class/System.Web/System.Web.Security/MembershipUserCollection.cs

@@ -5,8 +5,7 @@
 //	Ben Maurer ([email protected])
 //
 // (C) 2003 Ben Maurer
-//
-
+// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -31,19 +30,21 @@
 #if NET_2_0
 using System.Collections;
 using System.Web.UI;
-using System;
 
-namespace System.Web.Security
-{
+namespace System.Web.Security {
+
 	[Serializable]
-	public class MembershipUserCollection : ICollection
-	{
+	public sealed class MembershipUserCollection : ICollection {
+
 		public MembershipUserCollection ()
 		{
 		}
 		
 		public void Add (MembershipUser user)
 		{
+			if (user == null)
+				throw new ArgumentNullException ("user");
+
 			CheckNotReadOnly ();
 			store.Add (user.UserName, user);
 		}
@@ -99,7 +100,7 @@ namespace System.Web.Security
 		void CheckNotReadOnly ()
 		{
 			if (readOnly)
-				throw new InvalidOperationException ();
+				throw new NotSupportedException ();
 		}
 		
 		KeyedList store = new KeyedList ();

+ 14 - 7
mcs/class/System.Web/System.Web.Security/PassportIdentity.cs

@@ -6,8 +6,7 @@
 //   Andreas Nahr ([email protected])
 //
 // (C) 2002 Ximian, Inc (http://www.ximian.com)
-//
-
+// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -29,13 +28,15 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-using System;
 using System.Security.Principal;
 
-namespace System.Web.Security
-{
-	public sealed class PassportIdentity : IIdentity
-	{
+namespace System.Web.Security {
+
+#if NET_2_0
+	public sealed class PassportIdentity : IIdentity, IDisposable {
+#else
+	public sealed class PassportIdentity : IIdentity {
+#endif
 		[MonoTODO]
 		public PassportIdentity ()
 		{
@@ -484,6 +485,12 @@ namespace System.Web.Security
 				throw new NotImplementedException ();
 			}
 		}
+
+#if NET_2_0
+		void IDisposable.Dispose ()
+		{
+		}
+#endif
 	}
 }
 

+ 43 - 36
mcs/class/System.Web/System.Web.Security/RolePrincipal.cs

@@ -3,10 +3,10 @@
 //
 // Authors:
 //	Ben Maurer ([email protected])
+//	Sebastien Pouliot  <[email protected]>
 //
 // (C) 2003 Ben Maurer
-//
-
+// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -29,53 +29,58 @@
 //
 
 #if NET_2_0
-using System.Collections;
-using System.Collections.Specialized;
-using System.Text;
-using System.Security;
+
+using System.Security.Permissions;
 using System.Security.Principal;
 
 namespace System.Web.Security {
+
+	[Serializable]
+	[AspNetHostingPermission (SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
 	public sealed class RolePrincipal : IPrincipal {
+
+		private IIdentity identity;
+		private string providerName;
+		private bool listChanged;
+		private bool listCached;
 		
-		[MonoTODO]
-		public RolePrincipal ()
+		public RolePrincipal (IIdentity identity)
 		{
-			throw new NotImplementedException ();
+			if (identity == null)
+				throw new ArgumentNullException ("identity");
+			this.identity = identity;
 		}
-		
-		[MonoTODO]
-		public RolePrincipal (bool createFromCookie)
-		{
-			throw new NotImplementedException ();
-		}
-		
+
 		[MonoTODO]
-		public RolePrincipal (string encryptedTicket)
+		public RolePrincipal (IIdentity identity, string encryptedTicket)
+			: this (identity)
 		{
 			throw new NotImplementedException ();
 		}
-		
+
 		[MonoTODO]
-		public string [] GetRoles ()
+		public RolePrincipal (string providerName, IIdentity identity)
+			: this (identity)
 		{
+			if (providerName == null)
+				throw new ArgumentNullException ("providerName");
+
 			throw new NotImplementedException ();
 		}
-		
+
 		[MonoTODO]
-		public void Init ()
+		public RolePrincipal (string providerName, IIdentity identity, string encryptedTicket)
+			: this (identity)
 		{
+			if (providerName == null)
+				throw new ArgumentNullException ("providerName");
+
 			throw new NotImplementedException ();
 		}
 		
-		[MonoTODO]
-		public void InitFromCookie (string cookieName)
-		{
-			throw new NotImplementedException ();
-		}
 		
 		[MonoTODO]
-		public void InitFromEncryptedTicket (string strTicket)
+		public string [] GetRoles ()
 		{
 			throw new NotImplementedException ();
 		}
@@ -92,9 +97,8 @@ namespace System.Web.Security {
 			throw new NotImplementedException ();
 		}
 		
-		[MonoTODO]
 		public bool CachedListChanged {
-			get { throw new NotImplementedException (); }
+			get { return listChanged; }
 		}
 		
 		[MonoTODO]
@@ -112,14 +116,12 @@ namespace System.Web.Security {
 			get { throw new NotImplementedException (); }
 		}
 		
-		[MonoTODO]
 		public IIdentity Identity {
-			get { throw new NotImplementedException (); }
+			get { return identity; }
 		}
 		
-		[MonoTODO]
 		public bool IsRoleListCached {
-			get { throw new NotImplementedException (); }
+			get { return listCached; }
 		}
 		
 		[MonoTODO]
@@ -127,15 +129,20 @@ namespace System.Web.Security {
 			get { throw new NotImplementedException (); }
 		}
 		
-		[MonoTODO]
-		public string UserData {
-			get { throw new NotImplementedException (); }
+		public string ProviderName {
+			get { return providerName; }
 		}
 		
 		[MonoTODO]
 		public int Version {
 			get { throw new NotImplementedException (); }
 		}
+
+		public void SetDirty ()
+		{
+			listChanged = true;
+			listCached = false;
+		}
 	}
 }
 #endif

+ 72 - 30
mcs/class/System.Web/System.Web.Security/Roles.cs

@@ -3,10 +3,10 @@
 //
 // Authors:
 //	Ben Maurer ([email protected])
+//	Sebastien Pouliot  <[email protected]>
 //
 // (C) 2003 Ben Maurer
-//
-
+// Copyright (c) 2005 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -29,14 +29,38 @@
 //
 
 #if NET_2_0
-using System.Collections;
-using System.Collections.Specialized;
-using System.Text;
 
-namespace System.Web.Security
-{
-	public sealed class Roles
-	{
+using System.Configuration.Provider;
+
+namespace System.Web.Security {
+
+	[MonoTODO ("read infos from web.config")]
+	public static class Roles {
+
+		private static RoleProvider provider;
+		private static bool cookie_cache_roles;
+		private static string cookie_name;
+		private static string cookie_path;
+		private static CookieProtection cookie_protection;
+		private static bool cookie_ssl;
+		private static bool cookie_sliding;
+		private static int cookie_timeout;
+		private static bool cookie_persistent;
+		private static string domain;
+		private static int max_cached_result;
+
+		static Roles ()
+		{
+			// default values (when not supplied in web.config)
+			cookie_name = ".ASPXROLES";
+			cookie_path = "/";
+			cookie_protection = CookieProtection.All;
+			cookie_sliding = true;
+			cookie_timeout = 30;
+			max_cached_result = 25;
+		}
+
+
 		public static void AddUsersToRole (string [] usernames, string rolename)
 		{
 			Provider.AddUsersToRoles (usernames, new string[] {rolename});
@@ -142,7 +166,7 @@ namespace System.Web.Security
 			return Provider.RoleExists (rolename);
 		}
 		
-		public static string[] FinsUsersInRole (string rolename, string usernameToMatch)
+		public static string[] FindUsersInRole (string rolename, string usernameToMatch)
 		{
 			return Provider.FindUsersInRole (rolename, usernameToMatch);
 		}
@@ -152,56 +176,74 @@ namespace System.Web.Security
 			set { Provider.ApplicationName = value; }
 		}
 		
-		[MonoTODO]
 		public static bool CacheRolesInCookie {
-			get { throw new NotImplementedException (); }
+			get { return cookie_cache_roles; }
 		}
 		
-		[MonoTODO]
 		public static string CookieName {
-			get { throw new NotImplementedException (); }
+			get { return cookie_name; }
 		}
 		
-		[MonoTODO]
 		public static string CookiePath {
-			get { throw new NotImplementedException (); }
+			get { return cookie_path; }
 		}
 		
-		[MonoTODO]
 		public static CookieProtection CookieProtectionValue {
-			get { throw new NotImplementedException (); }
+			get { return cookie_protection; }
 		}
 		
-		[MonoTODO]
 		public static bool CookieRequireSSL {
-			get { throw new NotImplementedException (); }
+			get { return cookie_ssl; }
 		}
 		
-		[MonoTODO]
 		public static bool CookieSlidingExpiration {
-			get { throw new NotImplementedException (); }
+			get { return cookie_sliding; }
 		}
 		
-		[MonoTODO]
 		public static int CookieTimeout {
-			get { throw new NotImplementedException (); }
+			get { return cookie_timeout; }
 		}
-		
-		[MonoTODO]
+
+		public static bool CreatePersistentCookie {
+			get { return cookie_persistent; }
+		}
+
+		public static string Domain {
+			get { return domain; }
+		}
+
 		public static bool Enabled {
-			get { throw new NotImplementedException (); }
+			get { return (provider != null); }
+		}
+
+		public static int MaxCachedResults {
+			get { return max_cached_result; }
 		}
 		
 		[MonoTODO]
 		public static RoleProvider Provider {
-			get { throw new NotImplementedException (); }
+			get {
+				CheckProvider ();
+				throw new NotImplementedException ();
+			}
 		}
 		
 		[MonoTODO]
 		public static RoleProviderCollection Providers {
-			get { throw new NotImplementedException (); }
+			get {
+				CheckProvider ();
+				throw new NotImplementedException ();
+			}
+		}
+
+		// private stuff
+
+		private static void CheckProvider ()
+		{
+			if (!Enabled)
+				throw new ProviderException ();
 		}
 	}
 }
-#endif
 
+#endif

+ 3 - 9
mcs/class/System.Web/System.Web.Security/SqlMembershipProvider.cs

@@ -6,8 +6,7 @@
 //	Lluis Sanchez Gual ([email protected])
 //
 // (C) 2003 Ben Maurer
-//
-
+// Copyright (c) 2005 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -118,7 +117,7 @@ namespace System.Web.Security {
 		[MonoTODO]
 		public override void Initialize (string name, NameValueCollection config)
 		{
-			throw new NotImplementedException ();
+			base.Initialize (name, config);
 		}
 		
 		[MonoTODO]
@@ -136,7 +135,7 @@ namespace System.Web.Security {
 		[MonoTODO]
 		public override bool ValidateUser (string username, string password)
 		{
-			throw new NotImplementedException ();
+			return false;
 		}
 		
 		[MonoTODO]
@@ -151,11 +150,6 @@ namespace System.Web.Security {
 			set { throw new NotImplementedException (); }
 		}
 		
-		[MonoTODO]
-		public virtual string Description {
-			get { throw new NotImplementedException (); }
-		}
-		
 		[MonoTODO]
 		public override bool EnablePasswordReset {
 			get { throw new NotImplementedException (); }

+ 3 - 9
mcs/class/System.Web/System.Web.Security/SqlRoleProvider.cs

@@ -5,8 +5,7 @@
 //	Ben Maurer ([email protected])
 //
 // (C) 2003 Ben Maurer
-//
-
+// Copyright (c) 2005 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -29,11 +28,11 @@
 //
 
 #if NET_2_0
-using System.Collections;
+
 using System.Collections.Specialized;
-using System.Text;
 
 namespace System.Web.Security {
+
 	public class SqlRoleProvider: RoleProvider {
 		
 		[MonoTODO]
@@ -107,11 +106,6 @@ namespace System.Web.Security {
 			get { throw new NotImplementedException (); }
 			set { throw new NotImplementedException (); }
 		}
-		
-		[MonoTODO]
-		public virtual string Description {
-			get { throw new NotImplementedException (); }
-		}
 	}
 }
 #endif

+ 9 - 4
mcs/class/System.Web/System.Web.Security/UrlAuthorizationModule.cs

@@ -5,8 +5,7 @@
 //	Gonzalo Paniagua Javier ([email protected])
 //
 // (C) 2002,2003 Ximian, Inc (http://www.ximian.com)
-//
-
+// Copyright (c) 2005 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -28,8 +27,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-using System;
-using System.Web;
 using System.Web.Configuration;
 using System.Security.Principal;
 
@@ -69,6 +66,14 @@ namespace System.Web.Security
 				app.CompleteRequest ();
 			}
 		}
+
+#if NET_2_0
+		[MonoTODO]
+		public static bool CheckUrlAccessForPrincipal (string virtualPath, IPrincipal user, string verb)
+		{
+			throw new NotImplementedException ();
+		}
+#endif
 	}
 }
 

+ 3 - 10
mcs/class/System.Web/System.Web.SessionState/ChangeLog

@@ -1,14 +1,7 @@
-2005-07-19  Eyal Alalouf  <[email protected]>
-	* SessionStateModule.cs: Reorder TARGET_J2EE ifdefs for readability
+2005-08-15  Miguel de Icaza  <[email protected]>
 
-2005-07-19  Eyal Alalouf  <[email protected]>
-	* SessionStateModule.cs: In TARGET_J2EE configuration the servlet container
-	  is reponsible for session management. So we don't support the .Net session
-	  state server or .Net storing sessions in SQLServer.
-
-2005-07-18  Eyal Alalouf  <[email protected]>
-	* Added HttpSessionState.jvm.cs
-	* Added SessionInProcHandler.jvm.cs
+	* SessionStateModule.cs: Make this use the synch api as the module
+	was synchronous anyways
 
 2005-06-25 Gonzalo Paniagua Javier <[email protected]>
 

+ 6 - 27
mcs/class/System.Web/System.Web.SessionState/SessionStateModule.cs

@@ -42,7 +42,10 @@ namespace System.Web.SessionState
 		internal static readonly string CookieName = "ASPSESSION";
 		internal static readonly string HeaderName = "AspFilterSessionId";
 		
-#if TARGET_J2EE		
+#if !TARGET_J2EE		
+		static SessionConfig config;
+		static Type handlerType;
+#else
 		static private SessionConfig config {
 			get {
 				return (SessionConfig)AppDomain.CurrentDomain.GetData("SessionStateModule.config");
@@ -59,9 +62,6 @@ namespace System.Web.SessionState
 				AppDomain.CurrentDomain.SetData("SessionStateModule.handlerType", value);
 			}
 		}
-#else
-		static SessionConfig config;
-		static Type handlerType;
 #endif		
 		ISessionHandler handler;
 		bool sessionForStaticFiles;
@@ -90,16 +90,11 @@ namespace System.Web.SessionState
 				if (config ==  null)
 					config = new SessionConfig (null);
 
-#if TARGET_J2EE
-				if (config.Mode == SessionStateMode.SQLServer || config.Mode == SessionStateMode.StateServer)
-					throw new NotImplementedException("You must use web.xml to specify session state handling");
-#else
 				if (config.Mode == SessionStateMode.StateServer)
 					handlerType = typeof (SessionStateServerHandler);
 
 				if (config.Mode == SessionStateMode.SQLServer)
 					handlerType = typeof (SessionSQLServerHandler);
-#endif
 				
 				if (config.Mode == SessionStateMode.InProc)
 					handlerType = typeof (SessionInProcHandler);
@@ -110,11 +105,8 @@ namespace System.Web.SessionState
 
 			if (config.CookieLess)
 				app.BeginRequest += new EventHandler (OnBeginRequest);
-			
-			app.AddOnAcquireRequestStateAsync (
-				new BeginEventHandler (OnBeginAcquireState),
-				new EndEventHandler (OnEndAcquireState));
 
+			app.AcquireRequestState += new EventHandler (OnAcquireState);
 			app.ReleaseRequestState += new EventHandler (OnReleaseRequestState);
 			app.EndRequest += new EventHandler (OnEndRequest);
 			
@@ -154,7 +146,7 @@ namespace System.Web.SessionState
 		{
 		}
 
-		IAsyncResult OnBeginAcquireState (object o, EventArgs args, AsyncCallback cb, object data)
+		void OnAcquireState (object o, EventArgs args)
 		{
 			HttpApplication application = (HttpApplication) o;
 			HttpContext context = application.Context;
@@ -199,21 +191,8 @@ namespace System.Web.SessionState
 					context.Response.AppendCookie (cookie);
 				}
 			}
-			
-			// In the future, we might want to move the Async stuff down to
-			// the interface level, if we're going to support other than
-			// InProc, we might actually want to do things async, now we
-			// simply fake it.
-			HttpAsyncResult result=new HttpAsyncResult (cb,this);
-			result.Complete (true, o, null);
-			if (isNew && Start != null)
-				Start (this, args);
-
-			return result;
 		}
 
-		void OnEndAcquireState (IAsyncResult result) { }
-
 		internal void OnSessionRemoved (string key, object value, CacheItemRemovedReason reason)
 		{
 			OnEnd ();

+ 8 - 0
mcs/class/System.Web/System.Web.UI.Adapters/ChangeLog

@@ -1,3 +1,11 @@
+2005-08-24  Chris Toshok  <[email protected]>
+
+	* PageAdapter.cs, ControlAdapter: add MonoTODO's.
+
+2005-08-18  Dick Porter  <[email protected]>
+
+	* PageAdapter.cs, ControlAdapter.cs: 2.0 stubs
+
 2004-08-04  Sanjay Gupta <[email protected]>
 	
 	* WmlPostFieldType.cs : Added enumeration.

+ 318 - 5
mcs/class/System.Web/System.Web.UI.HtmlControls/ChangeLog

@@ -1,7 +1,320 @@
-2005-08-14 Gert Driesen <[email protected]>
+2005-08-26  Chris Toshok  <[email protected]>
 
-	* HtmlForm.cs: Added UniqueID override to match MS.NET. Fixed line
-	endings.
+	* HtmlButton.cs (ValidationGroup): implement.
+	(RaisePostBackEvent): gross #ifdef-iry to make sure we only have
+	one body of the actual RaisePostBackEvent code.  Also, call
+	Page.Validate(ValidationGroup) in the 2.0 case.
+
+2005-08-25  Miguel de Icaza  <[email protected]>
+
+	* HtmlHead.cs: Implement constructor, pass the tag.
+
+2005-08-25  Sebastien Pouliot  <[email protected]>
+
+	* HtmlHead.cs: Fixed base class (to HtmlGenericControl).
+
+2005-08-25  Chris Toshok  <[email protected]>
+
+	* HtmlForm.cs (CreateControlCollection, OnPreRender,
+	RenderControl): implement naively, just calling base.Method.
+
+2005-08-25  Chris Toshok  <[email protected]>
+
+	* HtmlForm.cs (RenderAttributes): don't strip off the stuff after
+	the last '/' when rendering the action.  Fixes comments in
+	nGallery.
+
+2005-08-24  Chris Toshok  <[email protected]>
+
+	* HtmlInputButton.cs, HtmlInputFile.cs, HtmlHead.cs,
+	HtmlInputImage.cs, HtmlForm.cs, HtmlInputCheckBox.cs,
+	HtmlInputHidden.cs, HtmlButton.cs, HtmlSelect.cs, HtmlControl.cs:
+	Add MonoTODO's for all NotImplementedException's.
+
+2005-08-18  Dick Porter  <[email protected]>
+
+	* HtmlTable.cs, HtmlInputButton.cs, HtmlInputFile.cs, HtmlHead.cs,
+	HtmlInputImage.cs, HtmlForm.cs, HtmlInputText.cs,
+	HtmlInputCheckBox.cs, HtmlAnchor.cs, HtmlInputRadioButton.cs,
+	HtmlButton.cs, HtmlInputHidden.cs, HtmlTextArea.cs,
+	HtmlTableRow.cs, HtmlSelect.cs, HtmlControl.cs, HtmlTitle.cs,
+	HtmlContainerControl.cs: 2.0 API fixes and stubs and attribute fixes
+
+2005-08-15  Sebastien Pouliot  <[email protected]>
+
+	* HtmlInputRadioButton.cs, HtmlInputText.cs, HtmlTextArea.cs: Renamed 
+	Load method (bad choice) to DefaultLoadPostData.
+
+2005-08-15  Sebastien Pouliot  <[email protected]> 
+ 
+	* HtmlAnchor.cs: Fixed protected RaisePostBackEvent in 2.0.
+	* HtmlInputRadioButton.cs: Fixed Value property and LoadPostData 
+	method. Fixed support for protected LoadPostData and 
+	RaisePostDataChangedEvent in 2.0 (recursion).
+	* HtmlInputText.cs: Fixed LoadPostData. Fixed support for protected
+	LoadPostData and RaisePostDataChangedEvent in 2.0 (recursion).
+	* HtmlTextArea.cs: Fixed LoadPostData. Fixed support for protected
+	LoadPostData and RaisePostDataChangedEvent in 2.0 (recursion).
+
+2005-08-15  Sebastien Pouliot  <[email protected]>
+
+	* HtmlTableCell.cs: Added "string" [TypeConverter] attribute to NoWrap 
+	for 2.0	profile. The class seems to be internal and not (yet?) 
+	implemented.
+
+2005-08-13  Sebastien Pouliot  <[email protected]>
+
+	* HtmlAnchor.cs: Add Localizable attribute to 2.0 profile.
+	* HtmlEmptyTagControlBuilder.cs: New. ControlBuilder required for
+	(at least) HtmlInputControl in 2.0 profile.
+	* HtmlInputControl.cs: Use a new ControlBuilder class for 2.0 profile.
+	* HtmlInputText.cs: Fix DefaultValue attribute for 2.0 profile.
+
+2005-08-09  Dick Porter  <[email protected]>
+
+	* HtmlSelect.cs: Clear databindings when adding a new one; cope
+	with assorted combinations of empty text and value fields; write
+	<option> tags manually to match ms HTML output.  All fix nunit
+	tests.
+
+2005-08-08  Sebastien Pouliot  <[email protected]>
+
+	* HtmlInputControl.cs: Remove code to handle password (wrong place) 
+	and fixed type handling for 2.0.
+	* HtmlInputText.cs: Added code to remove (only in 1.x) the value when
+	the type == password. Tests indicates that the value is present for 
+	2.0.
+
+2005-08-05  Dick Porter  <[email protected]>
+
+	* HtmlSelect.cs: Fix databinding when one or other of Name and
+	Value aren't supplied (thanks to Peter for the patch); Make
+	<option> indenting match ms output.
+
+2005-07-30  Ben Maurer  <[email protected]>
+
+	* HtmlForm.cs: Make sure we actually put the "?" in the url
+
+2005-07-29  Dick Porter  <[email protected]>
+
+	* HtmlForm.cs: Simplify the rendering code by using QueryStringRaw
+	instead of building the query string by hand
+
+2005-07-27  Dick Porter  <[email protected]>
+
+	* HtmlInputCheckBox.cs: New implementation
+
+2005-07-26  Peter Dennis Bartok  <[email protected]>
+
+	* HtmlSelect.cs: Added missing attributes
+
+2005-07-26  Dick Porter  <[email protected]>
+
+	* HtmlSelect.cs: New implementation
+
+2005-07-26  Miguel de Icaza  <[email protected]>
+
+	* HtmlForm.cs: It is possible to have keys with no values in the
+	query string, do not try to process those on the foreach loop.
+	
+	The question is: what should happen if I only get the key?
+
+	Example: file_with_a_form.aspx?a
+
+2005-07-25  Peter Dennis Bartok  <[email protected]>
+
+	* HtmlForml.cs: Implemented UniqueID (new in sp1)
+	* HtmlButton.cs, HtmlInputButton.cs, HtmlInputImage.cs: Attribute fixes
+
+2005-07-24  Dick Porter  <[email protected]>
+
+	* HtmlForm.cs: Add the trailing query string to the form action;
+	fixes bug shown in Test/standalone/htmlform/qs_postback.aspx
+
+2005-07-22  Dick Porter  <[email protected]>
+
+	* HtmlInputFile.cs: Add assembly attributes
+
+2005-07-21  Dick Porter  <[email protected]>
+
+	* HtmlImage.cs: The src attribute needs to be a relative URL;
+	close the HTML element when rendering attributes, to match the MS
+	impl.
+
+	* HtmlForm.cs: Added assembly attributes; don't render ID twice;
+	don't render enctype and target if they are empty strings;
+	implement a Render overload to keep corcompare quiet.
+
+2005-07-20  Chris Toshok  <[email protected]>
+
+	* HtmlForm.cs (RenderAttributes): if there are submit statements,
+	we need to render those.
+
+	* HtmlInputImage.cs: same.
+
+	* HtmlInputButton.cs: hook up the client validation stuff.
+
+	* HtmlButton.cs: same, except a lot more complicated due to
+	postback handling.
+
+2005-07-19  Dick Porter  <[email protected]>
+
+	* HtmlImage.cs: Added attributes; use Int32.Parse instead of
+	Convert.ToInt32
+
+2005-07-18  Sebastien Pouliot  <[email protected]> 
+ 
+	* HtmlInputControl.cs: Fix Type when using ctor(null). Now use 
+	ControlID for Name (and not ID). Added ControlBuilder attribute.
+	* HtmlTable.cs: Simplify check when adding controls.
+	* HtmlTableRow.cs: Simplify check when adding controls.
+
+2005-07-18  Jackson Harper  <[email protected]>
+
+	* HtmlInputHidden.cs: Use Events Add/Remove. Add DefaultEvent
+	attribute.
+
+2005-07-15  Jackson Harper  <[email protected]>
+
+	* HtmlInputImage.cs: Use Events Add/Remove. Remove uneeded
+	constant. Update fetching from viewstate code to use new
+	convenience method.
+
+2005-07-15  Jackson Harper  <[email protected]>
+
+	* HtmlInputButton.cs: Add DefaultEventAttribute.
+
+2005-07-15  Sebastien Pouliot  <[email protected]>
+ 
+	* HtmlInputControl.cs: Removed internal property (no more required to 
+	compile).
+	* HtmlInputRadioButton.cs: Optimized events.
+	* HtmlInputText.cs: Optimized events.
+	* HtmlTable.cs: Added CultureInfo.InvariantCulture when parsing 
+	strings to integers.
+	* HtmlTableCell.cs: Added CultureInfo.InvariantCulture when parsing 
+	strings to integers.
+	* HtmlTextArea.cs: Optimized events.
+
+2005-07-15  Sebastien Pouliot  <[email protected]> 
+
+	* HtmlAnchor.cs: Added URL resolution (doesn't get me the expected 
+	result) and fixed compatibility for a weird behaviour of the HRef 
+	attribute handling. Optimized events.
+
+2005-07-14  Jackson Harper  <[email protected]>
+
+	* HtmlInputButton.cs: Use Events Add/Remove. Remove Causesvalidation
+	string constant. Use new method for accessing ViewState
+	data. Don't remove value from the view state if it is the default.
+
+2005-07-14  Jackson Harper  <[email protected]>
+
+	* HtmlButton.cs: Use Events Add/Remove. Remove Causesvalidation
+	string constant. Use new method for accessing ViewState
+	data. Don't remove value from the view state if it is the default.
+	
+2005-07-14  Dick Porter  <[email protected]>
+
+	* HtmlInputFile.cs: New implementation
+
+2005-07-14  Jackson Harper  <[email protected]>
+
+	* HtmlInputControl.cs: Use ClientID for input controls name.
+
+2005-07-14  Dick Porter  <[email protected]>
+
+	* HtmlForm.cs: New Implementation
+
+2005-07-13  Sebastien Pouliot  <[email protected]> 
+
+	* HtmlTable.cs: Added missing attributes.
+	* HtmlTableCell.cs: Added missing attributes except for ControlBuilder
+	as the builder's type isn't public.
+	* HtmlInputControl.cs: Added missing attributes.
+	* HtmlInputText.cs: Added missing attributes.
+	* HtmlInputRadioButton.cs: Added missing attributes.
+	* HtmlAnchor.cs: Added missing attributes.
+	* HtmlTextArea.cs: Added missing attributes.
+	* HtmlTableRow.cs: Added missing attributes.
+
+2005-07-12  Sebastien Pouliot  <[email protected]> 
+
+	* HtmlAnchor.cs: Added DefaultValue attributes.
+	* HtmlInputControl.cs: Added DefaultValue attributes.
+	* HtmlInputRadioButton.cs: Added DefaultValue attributes.
+	* HtmlInputText.cs: Added DefaultValue attributes. Added method 
+	RenderAttributes in 1.1 profile.
+	* HtmlTable.cs: Fix DefaultValue to "".
+	* HtmlTextArea.cs: Added DefaultValue attributes.
+
+2005-07-12  Sebastien Pouliot  <[email protected]> 
+
+	* HtmlTableCell.cs: Added DefaultValue attributes.
+	* HtmlTable.cs: Added DefaultValue and ParseChildren attributes.
+	* HtmlTableRowCollection.cs: Reworked collection to share data with
+	HtmlTable.Controls.
+	* HtmlTableCellCollection.cs: Reworked collection to share data with
+	HtmlTableRow.Controls.
+	* HtmlTableRow.cs: Added DefaultValue and ParseChildren attributes.
+
+2005-07-09  Sebastien Pouliot  <[email protected]> 
+
+	* HtmlTableRowCollection.cs: Fixed property name to IsReadOnly.
+
+2005-07-08  Sebastien Pouliot  <[email protected]> 
+ 
+	* HtmlTextArea.cs: Use CultureInfo.InvariantCulture in ToString ().
+
+2005-07-08  Sebastien Pouliot  <[email protected]>
+
+	* HtmlContainerControl.cs: Fixed removal of attribute/viewstate for
+	"innerhtml".
+	* HtmlTextArea.cs: New implementation.
+
+2005-07-07  Jackson Harper  <[email protected]>
+
+	* HtmlInputImage.cs: New implementation.
+
+2005-07-07  Sebastien Pouliot  <[email protected]>
+
+	* HtmlAnchor.cs: protected RaisePostBackEvent is in 2.0 only.
+	* HtmlInputControl.cs: New implementation.
+	* HtmlInputRadioButton.cs: New implementation.
+	* HtmlInputText.cs: New implementation.
+
+2005-07-07  Jackson Harper  <[email protected]>
+
+	* HtmlInputHidden.cs: New implementation.
+
+2005-07-07  Jackson Harper  <[email protected]>
+
+	* HtmlAnchor.cs: Call base OnPreRender from override.
+
+2005-07-07  Jackson Harper  <[email protected]>
+
+	* HtmlInputButton.cs: New implementation.
+
+2005-07-07  Dick Porter  <[email protected]>
+
+	* HtmlImage.cs: New implementation
+
+2005-07-07  Sebastien Pouliot  <[email protected]>
+
+	* HtmlAnchor.cs: Fixed to remove attributes properly.
+	* HtmlTable.cs: New implementation.
+	* HtmlTableCell.cs: New implementation.
+	* HtmlTableCellCollection.cs: New implementation.
+	* HtmlTableRow.cs: New implementation.
+	* HtmlTableRowCollection.cs: New implementation.
+
+2005-07-06  Jackson Harper  <[email protected]>
+
+	* HtmlButton.cs: New implementation.
+
+2005-07-06  Sebastien Pouliot  <[email protected]>
+
+	* HtmlAnchor.cs: New implementation.
 
 2005-06-08 Gonzalo Paniagua Javier <[email protected]>
 
@@ -95,8 +408,8 @@
 	* HtmlInputFile.cs: Do not set value when loading post data.
 	
 2003-12-14  Alon Gazit <[email protected]>
-	* HtmlInputButton.cs: The problem was in RenderAttributes().
-	Before adding the script to the HTML, the number of Validators should 
+	* HtmlInputButton.cs: The problem was in RenderAttributes().
+	Before adding the script to the HTML, the number of Validators should 
 	be checked. fixes bug #52158.
 
 2003-12-07  Alon Gazit <[email protected]>

+ 16 - 3
mcs/class/System.Web/System.Web.UI.HtmlControls/HtmlContainerControl.cs

@@ -37,7 +37,12 @@ namespace System.Web.UI.HtmlControls
 {
 	public abstract class HtmlContainerControl : HtmlControl{
 		
-		public HtmlContainerControl () : this ("span") {}
+#if NET_2_0
+		protected
+#else
+		public
+#endif
+		HtmlContainerControl () : this ("span") {}
 		
 		public HtmlContainerControl (string tag) : base(tag) {}
 
@@ -70,7 +75,10 @@ namespace System.Web.UI.HtmlControls
 			set {
 				Controls.Clear ();
 				Controls.Add (new LiteralControl (value));
-				ViewState ["innerhtml"] = value;
+				if (value == null)
+					ViewState.Remove ("innerhtml");
+				else
+					ViewState ["innerhtml"] = value;
 			}
 		}
 
@@ -88,7 +96,12 @@ namespace System.Web.UI.HtmlControls
 			}
 		}
 		
-		protected override void Render (HtmlTextWriter writer)
+#if NET_2_0
+		protected internal
+#else
+		protected
+#endif		
+		override void Render (HtmlTextWriter writer)
 		{
 			RenderBeginTag (writer);
 			RenderChildren (writer);

+ 49 - 16
mcs/class/System.Web/System.Web.UI.HtmlControls/HtmlControl.cs

@@ -9,7 +9,7 @@
 //
 
 using System;
-using System.ComponentModel;
+using System.ComponentModel;
 using System.ComponentModel.Design;
 using System.Globalization;
 using System.Web;
@@ -17,18 +17,28 @@ using System.Web.UI;
 
 namespace System.Web.UI.HtmlControls{
 	
-	[ToolboxItem(false)]
-	[Designer ("System.Web.UI.Design.HtmlIntrinsicControlDesigner, " + Consts.AssemblySystem_Design,
-			"System.ComponentModel.Design.IDesigner")]
+	[ToolboxItem(false)]
+	[Designer ("System.Web.UI.Design.HtmlIntrinsicControlDesigner, " + Consts.AssemblySystem_Design,
+			"System.ComponentModel.Design.IDesigner")]
 	public abstract class HtmlControl : Control, IAttributeAccessor
 	{
 		internal string _tagName;
 		private AttributeCollection _attributes;
-
+
 		
-		public HtmlControl() : this ("span") {}
+#if NET_2_0
+		protected
+#else
+		public
+#endif
+		HtmlControl() : this ("span") {}
 		
-		public HtmlControl(string tag)
+#if NET_2_0
+		protected
+#else
+		public
+#endif
+		HtmlControl(string tag)
 		{
 			_tagName = tag;
 		}
@@ -63,6 +73,20 @@ namespace System.Web.UI.HtmlControls{
 				}
 			}
 		}
+
+#if NET_2_0
+		[MonoTODO]
+		protected virtual string GetAttribute (string name)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		protected virtual void SetAttribute (string name, string value)
+		{
+			throw new NotImplementedException ();
+		}
+#endif		
 		
 		string System.Web.UI.IAttributeAccessor.GetAttribute(string name){
 			return Attributes[name];
@@ -79,7 +103,12 @@ namespace System.Web.UI.HtmlControls{
 			writer.Write ('>');
 		}
 
-		protected override void Render (HtmlTextWriter writer)
+#if NET_2_0
+		protected internal
+#else
+		protected
+#endif
+		override void Render (HtmlTextWriter writer)
 		{
 			RenderBeginTag (writer);
 		}
@@ -105,17 +134,21 @@ namespace System.Web.UI.HtmlControls{
 		[DefaultValue(false)]
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
 		[WebCategory("Behavior")]
+#if NET_2_0
+		/* Can't find this type in the docs */
+		//[TypeConverter (typeof(System.Web.UI.MinimizableAttributeTypeConverter))]
+#endif
 		public bool Disabled
 		{
-			get {
-				string disableAttr = Attributes["disabled"] as string;
-				return (disableAttr != null);
+			get {
+				string disableAttr = Attributes["disabled"] as string;
+				return (disableAttr != null);
                         }
-			set {
-                                if (!value)
-                                        Attributes.Remove ("disabled");
-                                else
-                                        Attributes["disabled"] = "disabled";
+			set {
+                                if (!value)
+                                        Attributes.Remove ("disabled");
+                                else
+                                        Attributes["disabled"] = "disabled";
                         }
 		}
 

+ 14 - 3
mcs/class/System.Web/System.Web.UI.HtmlControls/HtmlHead.cs

@@ -39,7 +39,7 @@ using System.Collections;
 namespace System.Web.UI.HtmlControls
 {
 	[ControlBuilder (typeof(HtmlHeadBuilder))]
-	public class HtmlHead: HtmlContainerControl, IPageHeader
+	public sealed class HtmlHead: HtmlGenericControl, IPageHeader, IParserAccessor
 	{
 		HtmlTitle title;
 		Hashtable metadata;
@@ -48,12 +48,16 @@ namespace System.Web.UI.HtmlControls
 		
 		public HtmlHead(): base("head") {}
 
-		protected override void OnInit (EventArgs e)
+		public HtmlHead (string tag) : base (tag)
+		{
+		}
+		
+		protected internal override void OnInit (EventArgs e)
 		{
 			Page.SetHeader (this);
 		}
 		
-		protected override void RenderChildren (HtmlTextWriter writer)
+		protected internal override void RenderChildren (HtmlTextWriter writer)
 		{
 			base.RenderChildren (writer);
 			if (metadata != null) {
@@ -81,6 +85,13 @@ namespace System.Web.UI.HtmlControls
 		{
 			base.AddedControl (control, index);
 		}
+
+		/* Shows up in corcompare */
+		[MonoTODO]
+		protected internal override void RemovedControl (Control control)
+		{
+			throw new NotImplementedException ();
+		}
 		
 		IList IPageHeader.LinkedStyleSheets {
 			get {

+ 13 - 2
mcs/class/System.Web/System.Web.UI.HtmlControls/HtmlTitle.cs

@@ -31,6 +31,7 @@
 
 using System;
 using System.Web.UI;
+using System.ComponentModel;
 
 namespace System.Web.UI.HtmlControls
 {
@@ -43,13 +44,23 @@ namespace System.Web.UI.HtmlControls
 			LiteralControl lit = obj as LiteralControl;
 			if (lit != null) text = lit.Text;
 		}
+
+		/* Appears in corcompare */
+		protected override ControlCollection CreateControlCollection ()
+		{
+			return (base.CreateControlCollection ());
+		}
 		
-		public string Text {
+		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
+		[DefaultValue ("")]
+		[PersistenceMode (PersistenceMode.InnerDefaultProperty)]
+		[Localizable (true)]
+		public virtual string Text {
 			get { return text; }
 			set { text = value; }
 		}
 		
-		protected override void Render (HtmlTextWriter writer)
+		protected internal override void Render (HtmlTextWriter writer)
 		{
 			writer.RenderBeginTag (HtmlTextWriterTag.Title);
 			writer.Write (text);

+ 7 - 0
mcs/class/System.Web/System.Web.UI.WebControls.WebParts/ChangeLog

@@ -1,3 +1,10 @@
+2005-08-17  Chris Toshok  <[email protected]>
+
+	* WebPart.cs: add basic stubbed out (and mostly NYI)
+	methods/properties.
+
+	* Part.cs: same.
+
 2005-05-06  Lluis Sanchez Gual <[email protected]>
 
 	* ConnectionPoint.cs: Fix warning.

+ 14 - 3
mcs/class/System.Web/System.Web.UI.WebControls/BaseDataBoundControl.cs

@@ -45,6 +45,17 @@ namespace System.Web.UI.WebControls
 		bool initialized;
 		bool requiresDataBinding;
 		
+		protected BaseDataBoundControl ()
+		{
+		}
+
+		/* Used for controls that used to inherit from
+		 * WebControl, so the tag can propagate upwards
+		 */
+		internal BaseDataBoundControl (HtmlTextWriterTag tag) : base (tag)
+		{
+		}
+		
 		[BindableAttribute (true)]
 		[ThemeableAttribute (false)]
 		[DefaultValueAttribute (null)]
@@ -97,7 +108,7 @@ namespace System.Web.UI.WebControls
 			RequiresDataBinding = false;
 			PerformSelect ();
 		}
-		
+
 		protected virtual void EnsureDataBound ()
 		{
 			if (RequiresDataBinding && IsBoundUsingDataSourceID)
@@ -115,7 +126,7 @@ namespace System.Web.UI.WebControls
 			RequiresDataBinding = true;
 		}
 		
-		protected override void OnInit (EventArgs e)
+		protected internal override void OnInit (EventArgs e)
 		{
 			base.OnInit (e);
 			Page.PreLoad += new EventHandler (OnPagePreLoad);
@@ -126,7 +137,7 @@ namespace System.Web.UI.WebControls
 			ConfirmInitState ();
 		}
 		
-		protected override void OnPreRender (EventArgs e)
+		protected internal override void OnPreRender (EventArgs e)
 		{
 			EnsureDataBound ();
 			base.OnPreRender (e);

+ 37 - 3
mcs/class/System.Web/System.Web.UI.WebControls/BulletedList.cs

@@ -145,7 +145,7 @@ namespace System.Web.UI.WebControls {
 			}
 		}
 		
-		protected override void RenderContents (HtmlTextWriter writer)
+		protected internal override void RenderContents (HtmlTextWriter writer)
 		{
 			cacheIsEnabled = this.Enabled;
 			int idx = 0;
@@ -155,6 +155,12 @@ namespace System.Web.UI.WebControls {
 				writer.RenderEndTag ();
 			}
 		}
+
+		[MonoTODO]
+		protected internal override void Render (HtmlTextWriter w)
+		{
+			throw new NotImplementedException ();
+		}
 		
 		void IPostBackEventHandler.RaisePostBackEvent (string eventArgument)
 		{
@@ -177,7 +183,8 @@ namespace System.Web.UI.WebControls {
 			set { throw new NotSupportedException (String.Format ("This property is not supported in {0}", GetType ())); }
 		}
 		
-	    [EditorBrowsableAttribute (EditorBrowsableState.Never)]
+		[Bindable (false)]
+		[EditorBrowsableAttribute (EditorBrowsableState.Never)]
 		public override int SelectedIndex {
 			get { return base.SelectedIndex; }
 			set { throw new NotSupportedException (String.Format ("This property is not supported in {0}", GetType ())); }
@@ -187,6 +194,19 @@ namespace System.Web.UI.WebControls {
 		public override ListItem SelectedItem {
 			get { return base.SelectedItem; }
 		}
+
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		[Bindable (false)]
+		[MonoTODO]
+		public override string SelectedValue 
+		{
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
+			}
+		}
 		
 		[DefaultValueAttribute ("")]
 		[EditorAttribute ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
@@ -276,7 +296,8 @@ namespace System.Web.UI.WebControls {
 			}
 		}
 		
-	    [DefaultValueAttribute ("")]
+		[DefaultValueAttribute ("")]
+		[TypeConverter (typeof (TargetConverter))]
 		public virtual string Target {
 			get {
 				object ret = ViewState ["Target"];
@@ -289,6 +310,19 @@ namespace System.Web.UI.WebControls {
 				ViewState ["Target"] = value;
 			}
 		}
+
+		[EditorBrowsable (EditorBrowsableState.Never)]
+		[MonoTODO]
+		public override string Text
+		{
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+		
 		
 		static readonly object ClickEvent = new object ();
 		public event BulletedListEventHandler Click

Fișier diff suprimat deoarece este prea mare
+ 1850 - 11
mcs/class/System.Web/System.Web.UI.WebControls/ChangeLog


+ 2 - 2
mcs/class/System.Web/System.Web.UI.WebControls/CompositeDataBoundControl.cs

@@ -49,7 +49,7 @@ namespace System.Web.UI.WebControls
 			}
 		}
 
-		protected override void CreateChildControls ()
+		protected internal override void CreateChildControls ()
 		{
 			base.CreateChildControls ();
 
@@ -59,7 +59,7 @@ namespace System.Web.UI.WebControls
 			}
 		}
 		
-		protected override void PerformDataBinding (IEnumerable data)
+		protected internal override void PerformDataBinding (IEnumerable data)
 		{
 			ViewState ["_ItemCount"] = CreateChildControls (data, true);
 		}

+ 21 - 8
mcs/class/System.Web/System.Web.UI.WebControls/DataBoundControl.cs

@@ -39,7 +39,7 @@ using System.ComponentModel;
 
 namespace System.Web.UI.WebControls {
 
-	[DesignerAttribute ("System.Web.UI.Design.WebControls.HierarchicalDataBoundControlDesigner, " + Consts.AssemblySystem_Design, "System.ComponentModel.Design.IDesigner")]
+	[DesignerAttribute ("System.Web.UI.Design.WebControls.DataBoundControlDesigner, " + Consts.AssemblySystem_Design, "System.ComponentModel.Design.IDesigner")]
 	public abstract class DataBoundControl : BaseDataBoundControl
 	{
 		DataSourceSelectArguments selectArguments;
@@ -48,8 +48,16 @@ namespace System.Web.UI.WebControls {
 		protected DataBoundControl ()
 		{
 		}
+
+		/* Used for controls that used to inherit from
+		 * WebControl, so the tag can propagate upwards
+		 */
+		internal DataBoundControl (HtmlTextWriterTag tag) : base (tag)
+		{
+		}
+		
 		
-		protected IDataSource GetDataSource ()
+		protected virtual IDataSource GetDataSource ()
 		{
 			if (IsBoundUsingDataSourceID) {
 				Control ctrl = NamingContainer.FindControl (DataSourceID);
@@ -71,7 +79,7 @@ namespace System.Web.UI.WebControls {
 			throw new HttpException (string.Format ("Unexpected data source type: {0}", DataSource.GetType()));
 		}
 		
-		protected DataSourceView GetData ()
+		protected virtual DataSourceView GetData ()
 		{
 			if (currentView == null)
 				UpdateViewData ();
@@ -121,8 +129,7 @@ namespace System.Web.UI.WebControls {
 				view.DataSourceViewChanged += new EventHandler (OnDataSourceViewChanged);
 		}
 		
-		// should be `internal protected' (why, oh WHY did they do that !?!)
-		protected override void OnLoad (EventArgs e)
+		protected internal override void OnLoad (EventArgs e)
 		{
 			if (IsBoundUsingDataSourceID && (!Page.IsPostBack || !EnableViewState))
 				RequiresDataBinding = true;
@@ -130,7 +137,7 @@ namespace System.Web.UI.WebControls {
 			base.OnLoad(e);
 		}
 		
-		protected virtual void PerformDataBinding (IEnumerable data)
+		protected internal virtual void PerformDataBinding (IEnumerable data)
 		{
 		}
 
@@ -144,7 +151,7 @@ namespace System.Web.UI.WebControls {
 		[ThemeableAttribute (false)]
 		[DefaultValueAttribute ("")]
 		[WebCategoryAttribute ("Data")]
-		public string DataMember
+		public virtual string DataMember
 		{
 			get {
 				object o = ViewState["DataMember"];
@@ -157,7 +164,7 @@ namespace System.Web.UI.WebControls {
 			}
 		}
 
-	    [IDReferencePropertyAttribute (typeof(HierarchicalDataSourceControl))]
+		[IDReferencePropertyAttribute (typeof(DataSourceControl))]
 		public override string DataSourceID {
 			get {
 				object o = ViewState ["DataSourceID"];
@@ -198,6 +205,12 @@ namespace System.Web.UI.WebControls {
 				return selectArguments;
 			}
 		}
+
+		[MonoTODO]
+		protected void MarkAsDataBound ()
+		{
+			throw new NotImplementedException ();
+		}
 	}
 }
 #endif

+ 152 - 150
mcs/class/System.Web/System.Web.UI.WebControls/DataControlButton.cs

@@ -1,82 +1,82 @@
-//
-// System.Web.UI.WebControls.DataControlButton.cs
-//
-// Authors:
-//	Lluis Sanchez Gual ([email protected])
-//
-// (C) 2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-#if NET_2_0
-
-using System;
-using System.Web;
-using System.Web.UI;
+//
+// System.Web.UI.WebControls.DataControlButton.cs
+//
+// Authors:
+//	Lluis Sanchez Gual ([email protected])
+//
+// (C) 2005 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NET_2_0
+
+using System;
+using System.Web;
+using System.Web.UI;
 using System.ComponentModel;
-using System.ComponentModel.Design;
-
-namespace System.Web.UI.WebControls
-{
-	internal class DataControlButton: Button
-	{
+using System.ComponentModel.Design;
+
+namespace System.Web.UI.WebControls
+{
+	internal class DataControlButton: Button
+	{
 		Control container;
-		
-		public DataControlButton (Control container)
-		{
-			this.container = container;
-		}
-		
-		public DataControlButton (Control container, string text, string image, string command, string commandArg, bool allowCallback)
-		{
-			this.container = container;
-			Text = text;
-			ImageUrl = image;
-			CommandName = command;
-			CommandArgument = commandArg;
-			AllowCallback = allowCallback;
-		}
-		
-		public string ImageUrl {
-			get {
-				object o = ViewState["iu"];
-				if (o != null) return (string) o;
-				return String.Empty;
-			}
-			set {
-				ViewState["iu"] = value;
-			}
-		}
-		
-		public bool AllowCallback {
-			get {
-				object o = ViewState["ac"];
-				if (o != null) return (bool) o;
-				return true;
-			}
-			set {
-				ViewState["ac"] = value;
-			}
-		}
-		
+		
+		public DataControlButton (Control container)
+		{
+			this.container = container;
+		}
+		
+		public DataControlButton (Control container, string text, string image, string command, string commandArg, bool allowCallback)
+		{
+			this.container = container;
+			Text = text;
+			ImageUrl = image;
+			CommandName = command;
+			CommandArgument = commandArg;
+			AllowCallback = allowCallback;
+		}
+		
+		public string ImageUrl {
+			get {
+				object o = ViewState["iu"];
+				if (o != null) return (string) o;
+				return String.Empty;
+			}
+			set {
+				ViewState["iu"] = value;
+			}
+		}
+		
+		public bool AllowCallback {
+			get {
+				object o = ViewState["ac"];
+				if (o != null) return (bool) o;
+				return true;
+			}
+			set {
+				ViewState["ac"] = value;
+			}
+		}
+		
 		public virtual ButtonType ButtonType {
 			get {
 				object ob = ViewState ["ButtonType"];
@@ -88,92 +88,94 @@ namespace System.Web.UI.WebControls
 			}
 		}
 
-		protected override void Render (HtmlTextWriter writer)
-		{
-			if (CommandName.Length > 0 || ButtonType == ButtonType.Button)
-			{
-				string postScript = null;
-				string callScript = null;
-				
+		protected internal override void Render (HtmlTextWriter writer)
+		{
+			if (CommandName.Length > 0 || ButtonType == ButtonType.Button)
+			{
+				string postScript = null;
+				string callScript = null;
+				
 				IPostBackContainer pcner = container as IPostBackContainer;
-				if (pcner != null) {
-					PostBackOptions ops = pcner.GetPostBackOptions (this);
-					postScript = container.Page.ClientScript.GetPostBackEventReference (ops);
-				} else
-					postScript = Page.ClientScript.GetPostBackClientEvent (this, "");
-
-				if (CausesValidation && Page.Validators.Count > 0) {
-					postScript = Utils.GetClientValidatedEvent (Page) + postScript;
+				if (pcner != null) {
+					PostBackOptions ops = pcner.GetPostBackOptions (this);
+					postScript = container.Page.ClientScript.GetPostBackEventReference (ops);
+				} else
+					postScript = Page.ClientScript.GetPostBackClientEvent (this, "");
+
+				if (CausesValidation && Page.Validators.Count > 0) {
+					// TOSHOK: review if this is the correct usage of the "fresh" client side stuff
+					ClientScriptManager csm = new ClientScriptManager (Page);
+					postScript = csm.GetClientValidationEvent () + postScript;
+				}
+				
+				if (AllowCallback) {
+					ICallbackContainer ccner = container as ICallbackContainer;
+					if (ccner != null)
+						callScript = ccner.GetCallbackScript (this, CommandName + "$" + CommandArgument);
 				}
-				
-				if (AllowCallback) {
-					ICallbackContainer ccner = container as ICallbackContainer;
-					if (ccner != null)
-						callScript = ccner.GetCallbackScript (this, CommandName + "$" + CommandArgument);
-				}
 			
 				ControlStyle.AddAttributesToRender (writer);
-				
+				
 				if (ButtonType == ButtonType.Link || ButtonType == ButtonType.Image)
-				{
-					if (ImageUrl.Length > 0) {
-						writer.AddAttribute (HtmlTextWriterAttribute.Type, "image");
-						writer.AddAttribute (HtmlTextWriterAttribute.Src, ResolveUrl (ImageUrl));
-						if (callScript != null)
-							writer.AddAttribute (HtmlTextWriterAttribute.Onclick, callScript);
-						else
-							writer.AddAttribute (HtmlTextWriterAttribute.Onclick, postScript);
-						if (Text.Length > 0)
-							writer.AddAttribute (HtmlTextWriterAttribute.Alt, Text);
-						writer.RenderBeginTag (HtmlTextWriterTag.Input);
-						writer.RenderEndTag ();
-					}
-					else {
-						if (callScript != null) {
-							writer.AddAttribute (HtmlTextWriterAttribute.Onclick, callScript);
-							writer.AddAttribute (HtmlTextWriterAttribute.Href, "javascript:");
-						}
-						else
-							writer.AddAttribute (HtmlTextWriterAttribute.Href, "javascript:" + postScript);
-						writer.RenderBeginTag (HtmlTextWriterTag.A);
-						writer.Write (Text);
-						writer.RenderEndTag ();
+				{
+					if (ImageUrl.Length > 0) {
+						writer.AddAttribute (HtmlTextWriterAttribute.Type, "image");
+						writer.AddAttribute (HtmlTextWriterAttribute.Src, ResolveUrl (ImageUrl));
+						if (callScript != null)
+							writer.AddAttribute (HtmlTextWriterAttribute.Onclick, callScript);
+						else
+							writer.AddAttribute (HtmlTextWriterAttribute.Onclick, postScript);
+						if (Text.Length > 0)
+							writer.AddAttribute (HtmlTextWriterAttribute.Alt, Text);
+						writer.RenderBeginTag (HtmlTextWriterTag.Input);
+						writer.RenderEndTag ();
+					}
+					else {
+						if (callScript != null) {
+							writer.AddAttribute (HtmlTextWriterAttribute.Onclick, callScript);
+							writer.AddAttribute (HtmlTextWriterAttribute.Href, "javascript:");
+						}
+						else
+							writer.AddAttribute (HtmlTextWriterAttribute.Href, "javascript:" + postScript);
+						writer.RenderBeginTag (HtmlTextWriterTag.A);
+						writer.Write (Text);
+						writer.RenderEndTag ();
 					}
 				}
 				else if (ButtonType == ButtonType.Button)
 				{
-					if (callScript != null)
-						writer.AddAttribute (HtmlTextWriterAttribute.Onclick, callScript);
-					else
+					if (callScript != null)
+						writer.AddAttribute (HtmlTextWriterAttribute.Onclick, callScript);
+					else
 						writer.AddAttribute (HtmlTextWriterAttribute.Onclick, postScript);
-						
-					writer.AddAttribute (HtmlTextWriterAttribute.Type, "submit");
-					writer.AddAttribute (HtmlTextWriterAttribute.Name, ClientID);
-					writer.AddAttribute (HtmlTextWriterAttribute.Value, Text);
-					writer.RenderBeginTag (HtmlTextWriterTag.Input);
-					writer.RenderEndTag ();
-				}
-			} else {
-				if (ImageUrl.Length > 0) {
+						
+					writer.AddAttribute (HtmlTextWriterAttribute.Type, "submit");
+					writer.AddAttribute (HtmlTextWriterAttribute.Name, ClientID);
+					writer.AddAttribute (HtmlTextWriterAttribute.Value, Text);
+					writer.RenderBeginTag (HtmlTextWriterTag.Input);
+					writer.RenderEndTag ();
+				}
+			} else {
+				if (ImageUrl.Length > 0) {
 					ControlStyle.AddAttributesToRender (writer);
-					writer.AddAttribute (HtmlTextWriterAttribute.Src, ResolveUrl (ImageUrl));
-					if (Text.Length > 0)
-						writer.AddAttribute (HtmlTextWriterAttribute.Alt, Text);
-					writer.RenderBeginTag (HtmlTextWriterTag.Img);
-					writer.RenderEndTag ();
-				}
+					writer.AddAttribute (HtmlTextWriterAttribute.Src, ResolveUrl (ImageUrl));
+					if (Text.Length > 0)
+						writer.AddAttribute (HtmlTextWriterAttribute.Alt, Text);
+					writer.RenderBeginTag (HtmlTextWriterTag.Img);
+					writer.RenderEndTag ();
+				}
 				else {
-					if (!ControlStyle.IsEmpty) {
+					if (!ControlStyle.IsEmpty) {
 						ControlStyle.AddAttributesToRender (writer);
 						writer.RenderBeginTag (HtmlTextWriterTag.Span);
-						writer.Write (Text);
+						writer.Write (Text);
 						writer.RenderEndTag ();
-					} else
-						writer.Write (Text);
+					} else
+						writer.Write (Text);
 				}
-			}
-		}
-	}
-}
-
-#endif
+			}
+		}
+	}
+}
+
+#endif

+ 38 - 6
mcs/class/System.Web/System.Web.UI.WebControls/DetailsView.cs

@@ -46,7 +46,7 @@ namespace System.Web.UI.WebControls
 	[DefaultEventAttribute ("PageIndexChanging")]
 	[AspNetHostingPermissionAttribute (SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
 	[AspNetHostingPermissionAttribute (SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)]
-	public class DetailsView: CompositeDataBoundControl, ICallbackEventHandler, ICallbackContainer, IDataItemContainer
+	public class DetailsView: CompositeDataBoundControl, ICallbackEventHandler, ICallbackContainer, IDataItemContainer, INamingContainer
 	{
 		object dataItem;
 		
@@ -719,6 +719,7 @@ namespace System.Web.UI.WebControls
 			}
 		}
 		
+		[Category ("Layout")]
 		[DefaultValueAttribute (HorizontalAlign.NotSet)]
 		public virtual HorizontalAlign HorizontalAlign {
 			get {
@@ -803,7 +804,8 @@ namespace System.Web.UI.WebControls
 		
 		
 		[DefaultValue (null)]
-		[TemplateContainer (typeof(DetailsView), BindingDirection.OneWay)]
+		/* DataControlPagerCell isnt specified in the docs */
+		//[TemplateContainer (typeof(DataControlPagerCell), BindingDirection.OneWay)]
 		[PersistenceMode (PersistenceMode.InnerProperty)]
 	    [Browsable (false)]
 		public ITemplate PagerTemplate {
@@ -983,6 +985,12 @@ namespace System.Web.UI.WebControls
 			return table;
 		}
 	
+		[MonoTODO]
+		protected override Style CreateControlStyle ()
+		{
+			throw new NotImplementedException ();
+		}
+		
 		protected override int CreateChildControls (IEnumerable data, bool dataBinding)
 		{
 			PagedDataSource dataSource;
@@ -1118,6 +1126,12 @@ namespace System.Web.UI.WebControls
 			
 			return dataSource.DataSourceCount;
 		}
+
+		[MonoTODO]
+		protected override void EnsureDataBound ()
+		{
+			throw new NotImplementedException ();
+		}
 		
 		DataControlRowState GetRowState (int index)
 		{
@@ -1240,12 +1254,18 @@ namespace System.Web.UI.WebControls
 			}
 		}
 		
-		protected override void PerformDataBinding (IEnumerable data)
+		protected internal override void PerformDataBinding (IEnumerable data)
 		{
 			base.PerformDataBinding (data);
 		}
+
+		[MonoTODO]
+		protected internal virtual void PrepareControlHierarchy ()
+		{
+			throw new NotImplementedException ();
+		}
 		
-		protected override void OnInit (EventArgs e)
+		protected internal override void OnInit (EventArgs e)
 		{
 			Page.RegisterRequiresControlState (this);
 			base.OnInit (e);
@@ -1625,6 +1645,12 @@ namespace System.Web.UI.WebControls
 			RenderGrid (writer);
 			return sw.ToString ();
 		}
+
+		[MonoTODO]
+		protected virtual string GetCallbackScript (IButtonControl buttonControl, string argument)
+		{
+			throw new NotImplementedException ();
+		}
 		
 		string ICallbackContainer.GetCallbackScript (IButtonControl control, string argument)
 		{
@@ -1633,8 +1659,14 @@ namespace System.Web.UI.WebControls
 			else
 				return null;
 		}
+
+		[MonoTODO]
+		protected override void OnPagePreLoad (object sender, EventArgs e)
+		{
+			throw new NotImplementedException ();
+		}
 		
-		protected override void OnPreRender (EventArgs e)
+		protected internal override void OnPreRender (EventArgs e)
 		{
 			base.OnPreRender (e);
 			
@@ -1657,7 +1689,7 @@ namespace System.Web.UI.WebControls
 			}
 		}
 		
-		protected override void Render (HtmlTextWriter writer)
+		protected internal override void Render (HtmlTextWriter writer)
 		{
 			if (EnablePagingCallbacks)
 				base.RenderBeginTag (writer);

+ 25 - 5
mcs/class/System.Web/System.Web.UI.WebControls/FormView.cs

@@ -45,7 +45,7 @@ namespace System.Web.UI.WebControls
 	[DefaultEventAttribute ("PageIndexChanging")]
 	[AspNetHostingPermissionAttribute (SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
 	[AspNetHostingPermissionAttribute (SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)]
-	public class FormView: CompositeDataBoundControl, IDataItemContainer
+	public class FormView: CompositeDataBoundControl, IDataItemContainer, INamingContainer
 	{
 		object dataItem;
 		
@@ -588,6 +588,7 @@ namespace System.Web.UI.WebControls
 			}
 		}
 		
+		[Category ("Layout")]
 		[DefaultValueAttribute (HorizontalAlign.NotSet)]
 		public virtual HorizontalAlign HorizontalAlign {
 			get {
@@ -690,7 +691,8 @@ namespace System.Web.UI.WebControls
 		
 		
 		[DefaultValue (null)]
-		[TemplateContainer (typeof(FormView), BindingDirection.OneWay)]
+		/* DataControlPagerCell isnt specified in the docs */
+		//[TemplateContainer (typeof(DataControlPagerCell), BindingDirection.OneWay)]
 		[PersistenceMode (PersistenceMode.InnerProperty)]
 	    [Browsable (false)]
 		public ITemplate PagerTemplate {
@@ -799,7 +801,19 @@ namespace System.Web.UI.WebControls
 			table.BackImageUrl = BackImageUrl;
 			return table;
 		}
+
+		[MonoTODO]
+		protected override void EnsureDataBound ()
+		{
+			throw new NotImplementedException ();
+		}
 	
+		[MonoTODO]
+		protected override Style CreateControlStyle ()
+		{
+			throw new NotImplementedException ();
+		}
+		
 		protected override int CreateChildControls (IEnumerable data, bool dataBinding)
 		{
 			PagedDataSource dataSource;
@@ -1037,12 +1051,18 @@ namespace System.Web.UI.WebControls
 			}
 		}
 		
-		protected override void PerformDataBinding (IEnumerable data)
+		protected internal override void PerformDataBinding (IEnumerable data)
 		{
 			base.PerformDataBinding (data);
 		}
+
+		[MonoTODO]
+		protected internal virtual void PrepareControlHierarchy ()
+		{
+			throw new NotImplementedException ();
+		}
 		
-		protected override void OnInit (EventArgs e)
+		protected internal override void OnInit (EventArgs e)
 		{
 			Page.RegisterRequiresControlState (this);
 			base.OnInit (e);
@@ -1366,7 +1386,7 @@ namespace System.Web.UI.WebControls
 			if (states[12] != null && oldEditValues != null) ((IStateManager)oldEditValues).LoadViewState (states[12]);
 		}
 		
-		protected override void Render (HtmlTextWriter writer)
+		protected internal override void Render (HtmlTextWriter writer)
 		{
 			switch (GridLines) {
 				case GridLines.Horizontal:

+ 25 - 5
mcs/class/System.Web/System.Web.UI.WebControls/GridView.cs

@@ -676,6 +676,7 @@ namespace System.Web.UI.WebControls
 			}
 		}
 		
+		[Category ("Layout")]
 		[DefaultValueAttribute (HorizontalAlign.NotSet)]
 		public virtual HorizontalAlign HorizontalAlign {
 			get {
@@ -758,7 +759,8 @@ namespace System.Web.UI.WebControls
 		
 		
 		[DefaultValue (null)]
-		[TemplateContainer (typeof(GridView), BindingDirection.OneWay)]
+		/* DataControlPagerCell isnt specified in the docs */
+		//[TemplateContainer (typeof(DataControlPagerCell), BindingDirection.OneWay)]
 		[PersistenceMode (PersistenceMode.InnerProperty)]
 	    [Browsable (false)]
 		public ITemplate PagerTemplate {
@@ -1189,6 +1191,12 @@ namespace System.Web.UI.WebControls
 
 			return dataSource.DataSourceCount;
 		}
+
+		[MonoTODO]
+		protected override Style CreateControlStyle ()
+		{
+			throw new NotImplementedException ();
+		}
 		
 		DataControlRowState GetRowState (int index)
 		{
@@ -1331,12 +1339,18 @@ namespace System.Web.UI.WebControls
 			base.DataBind ();
 		}
 		
-		protected override void PerformDataBinding (IEnumerable data)
+		protected internal override void PerformDataBinding (IEnumerable data)
 		{
 			base.PerformDataBinding (data);
 		}
+
+		[MonoTODO]
+		protected internal virtual void PrepareControlHierarchy ()
+		{
+			throw new NotImplementedException ();
+		}
 		
-		protected override void OnInit (EventArgs e)
+		protected internal override void OnInit (EventArgs e)
 		{
 			Page.RegisterRequiresControlState (this);
 			base.OnInit (e);
@@ -1737,7 +1751,13 @@ namespace System.Web.UI.WebControls
 				return null;
 		}
 		
-		protected override void OnPreRender (EventArgs e)
+		[MonoTODO]
+		protected override void OnPagePreLoad (object sender, EventArgs e)
+		{
+			throw new NotImplementedException ();
+		}
+		
+		protected internal override void OnPreRender (EventArgs e)
 		{
 			base.OnPreRender (e);
 			
@@ -1761,7 +1781,7 @@ namespace System.Web.UI.WebControls
 			}
 		}
 		
-		protected override void Render (HtmlTextWriter writer)
+		protected internal override void Render (HtmlTextWriter writer)
 		{
 			if (EnableSortingAndPagingCallbacks)
 				base.RenderBeginTag (writer);

+ 7 - 1
mcs/class/System.Web/System.Web.UI.WebControls/HierarchicalDataBoundControl.cs

@@ -73,6 +73,12 @@ namespace System.Web.UI.WebControls
 			
 			return DataSource as IHierarchicalDataSource;
 		}
+
+		[MonoTODO]
+		protected void MarkAsDataBound ()
+		{
+			throw new NotImplementedException ();
+		}
 		
 		protected override void OnDataPropertyChanged ()
 		{
@@ -84,7 +90,7 @@ namespace System.Web.UI.WebControls
 			RequiresDataBinding = true;
 		}
 
-		protected override void OnLoad (EventArgs e)
+		protected internal override void OnLoad (EventArgs e)
 		{
 			if (IsBoundUsingDataSourceID && (!Page.IsPostBack || !EnableViewState))
 				RequiresDataBinding = true;

+ 2 - 1
mcs/class/System.Web/System.Web.UI.WebControls/ImageMap.cs

@@ -46,6 +46,7 @@ namespace System.Web.UI.WebControls
 		
 		private static readonly object ClickEvent = new object();
 		
+		[Category ("Action")]
 		public event ImageMapEventHandler Click
 		{
 			add { Events.AddHandler (ClickEvent, value); }
@@ -137,7 +138,7 @@ namespace System.Web.UI.WebControls
 			writer.AddAttribute (HtmlTextWriterAttribute.Usemap, "#ImageMap" + ClientID);
 		}
 		
-		protected override void Render (HtmlTextWriter writer)
+		protected internal override void Render (HtmlTextWriter writer)
 		{
 			base.Render (writer);
 			writer.AddAttribute (HtmlTextWriterAttribute.Name, "ImageMap" + ClientID);

+ 118 - 51
mcs/class/System.Web/System.Web.UI.WebControls/Menu.cs

@@ -103,7 +103,7 @@ namespace System.Web.UI.WebControls
 		[PersistenceMode (PersistenceMode.InnerProperty)]
 	    [EditorAttribute ("System.Web.UI.Design.WebControls.MenuBindingsEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
 	    [MergablePropertyAttribute (false)]
-		public virtual MenuItemBindingCollection DataBindings {
+		public MenuItemBindingCollection DataBindings {
 			get {
 				if (dataBindings == null) {
 					dataBindings = new MenuItemBindingCollection ();
@@ -116,7 +116,7 @@ namespace System.Web.UI.WebControls
 
 		[DefaultValue (500)]
 		[ThemeableAttribute (false)]
-		public virtual int DisappearAfter {
+		public int DisappearAfter {
 			get {
 				object o = ViewState ["DisappearAfter"];
 				if (o != null) return (int)o;
@@ -130,8 +130,8 @@ namespace System.Web.UI.WebControls
 		[ThemeableAttribute (true)]
 		[DefaultValue ("")]
 		[UrlProperty]
-		[Editor ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, typeof (System.Drawing.Design.UITypeEditor))]
-		public virtual string DynamicBottomSeparatorImageUrl {
+		[Editor ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
+		public string DynamicBottomSeparatorImageUrl {
 			get {
 				object o = ViewState ["dbsiu"];
 				if (o != null) return (string)o;
@@ -143,7 +143,7 @@ namespace System.Web.UI.WebControls
 		}
 
 	    [DefaultValueAttribute ("")]
-		public virtual string DynamicItemFormatString {
+		public string DynamicItemFormatString {
 			get {
 				object o = ViewState ["DynamicItemFormatString"];
 				if (o != null) return (string)o;
@@ -157,8 +157,8 @@ namespace System.Web.UI.WebControls
 		[DefaultValue ("")]
 		[UrlProperty]
 		[WebCategory ("Appearance")]
-		[Editor ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, typeof (System.Drawing.Design.UITypeEditor))]
-		public virtual string DynamicTopSeparatorImageUrl {
+		[Editor ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
+		public string DynamicTopSeparatorImageUrl {
 			get {
 				object o = ViewState ["dtsiu"];
 				if (o != null) return (string)o;
@@ -172,7 +172,7 @@ namespace System.Web.UI.WebControls
 		[DefaultValue ("")]
 		[UrlProperty]
 		[WebCategory ("Appearance")]
-		[Editor ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, typeof (System.Drawing.Design.UITypeEditor))]
+		[Editor ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
 		public string StaticBottomSeparatorImageUrl {
 			get {
 				object o = ViewState ["sbsiu"];
@@ -187,7 +187,7 @@ namespace System.Web.UI.WebControls
 		[DefaultValue ("")]
 		[UrlProperty]
 		[WebCategory ("Appearance")]
-		[Editor ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, typeof (System.Drawing.Design.UITypeEditor))]
+		[Editor ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
 		public string StaticTopSeparatorImageUrl {
 			get {
 				object o = ViewState ["stsiu"];
@@ -200,7 +200,7 @@ namespace System.Web.UI.WebControls
 		}
 
 		[DefaultValue (Orientation.Vertical)]
-		public virtual Orientation Orientation {
+		public Orientation Orientation {
 			get {
 				object o = ViewState ["Orientation"];
 				if (o != null) return (Orientation) o;
@@ -212,8 +212,8 @@ namespace System.Web.UI.WebControls
 		}
 
 		[DefaultValue (1)]
-		[ThemeableAttribute (false)]
-		public virtual int StaticDisplayLevels {
+		[ThemeableAttribute (true)]
+		public int StaticDisplayLevels {
 			get {
 				object o = ViewState ["StaticDisplayLevels"];
 				if (o != null) return (int)o;
@@ -226,7 +226,7 @@ namespace System.Web.UI.WebControls
 		}
 
 	    [DefaultValueAttribute ("")]
-		public virtual string StaticItemFormatString {
+		public string StaticItemFormatString {
 			get {
 				object o = ViewState ["StaticItemFormatString"];
 				if (o != null) return (string)o;
@@ -252,7 +252,7 @@ namespace System.Web.UI.WebControls
 
 		[ThemeableAttribute (true)]
 		[DefaultValue (3)]
-		public virtual int MaximumDynamicDisplayLevels {
+		public int MaximumDynamicDisplayLevels {
 			get {
 				object o = ViewState ["MaximumDynamicDisplayLevels"];
 				if (o != null) return (int)o;
@@ -265,7 +265,7 @@ namespace System.Web.UI.WebControls
 		}
 
 		[DefaultValue (0)]
-		public virtual int DynamicVerticalOffset {
+		public int DynamicVerticalOffset {
 			get {
 				object o = ViewState ["DynamicVerticalOffset"];
 				if (o != null) return (int)o;
@@ -277,7 +277,7 @@ namespace System.Web.UI.WebControls
 		}
 
 		[DefaultValue (0)]
-		public virtual int DynamicHorizontalOffset {
+		public int DynamicHorizontalOffset {
 			get {
 				object o = ViewState ["DynamicHorizontalOffset"];
 				if (o != null) return (int)o;
@@ -289,7 +289,7 @@ namespace System.Web.UI.WebControls
 		}
 
 		[DefaultValue (true)]
-		public virtual bool DynamicEnableDefaultPopOutImage {
+		public bool DynamicEnableDefaultPopOutImage {
 			get {
 				object o = ViewState ["dedpoi"];
 				if (o != null) return (bool)o;
@@ -301,7 +301,7 @@ namespace System.Web.UI.WebControls
 		}
 
 		[DefaultValue (true)]
-		public virtual bool StaticEnableDefaultPopOutImage {
+		public bool StaticEnableDefaultPopOutImage {
 			get {
 				object o = ViewState ["sedpoi"];
 				if (o != null) return (bool)o;
@@ -314,9 +314,9 @@ namespace System.Web.UI.WebControls
 
 	    [DefaultValueAttribute (null)]
 		[PersistenceMode (PersistenceMode.InnerProperty)]
-		[Editor ("System.Web.UI.Design.MenuItemCollectionEditor, " + Consts.AssemblySystem_Design, typeof (System.Drawing.Design.UITypeEditor))]
+		[Editor ("System.Web.UI.Design.MenuItemCollectionEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
 	    [MergablePropertyAttribute (false)]
-		public virtual MenuItemCollection Items {
+		public MenuItemCollection Items {
 			get {
 				if (items == null) {
 					items = new MenuItemCollection (this);
@@ -328,7 +328,7 @@ namespace System.Web.UI.WebControls
 		}
 
 		[DefaultValue ('/')]
-		public virtual char PathSeparator {
+		public char PathSeparator {
 			get {
 				object o = ViewState ["PathSeparator"];
 				if(o != null) return (char)o;
@@ -340,7 +340,7 @@ namespace System.Web.UI.WebControls
 		}
 
 		[DefaultValue (false)]
-		public virtual bool ItemWrap {
+		public bool ItemWrap {
 			get {
 				object o = ViewState ["ItemWrap"];
 				if(o != null) return (bool)o;
@@ -355,7 +355,7 @@ namespace System.Web.UI.WebControls
 		[NotifyParentProperty (true)]
 		[DefaultValue (null)]
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Content)]
-		public virtual MenuItemStyle DynamicMenuItemStyle {
+		public MenuItemStyle DynamicMenuItemStyle {
 			get {
 				if (dynamicMenuItemStyle == null) {
 					dynamicMenuItemStyle = new MenuItemStyle ();
@@ -370,7 +370,7 @@ namespace System.Web.UI.WebControls
 		[NotifyParentProperty (true)]
 		[DefaultValue (null)]
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Content)]
-		public virtual MenuItemStyle DynamicSelectedStyle {
+		public MenuItemStyle DynamicSelectedStyle {
 			get {
 				if (dynamicSelectedStyle == null) {
 					dynamicSelectedStyle = new MenuItemStyle ();
@@ -385,7 +385,7 @@ namespace System.Web.UI.WebControls
 		[NotifyParentProperty (true)]
 		[DefaultValue (null)]
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Content)]
-		public virtual SubMenuStyle DynamicMenuStyle {
+		public SubMenuStyle DynamicMenuStyle {
 			get {
 				if (dynamicMenuStyle == null) {
 					dynamicMenuStyle = new SubMenuStyle ();
@@ -400,7 +400,7 @@ namespace System.Web.UI.WebControls
 		[NotifyParentProperty (true)]
 		[DefaultValue (null)]
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Content)]
-		public virtual MenuItemStyle StaticMenuItemStyle {
+		public MenuItemStyle StaticMenuItemStyle {
 			get {
 				if (staticMenuItemStyle == null) {
 					staticMenuItemStyle = new MenuItemStyle ();
@@ -415,7 +415,7 @@ namespace System.Web.UI.WebControls
 		[NotifyParentProperty (true)]
 		[DefaultValue (null)]
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Content)]
-		public virtual MenuItemStyle StaticSelectedStyle {
+		public MenuItemStyle StaticSelectedStyle {
 			get {
 				if (staticSelectedStyle == null) {
 					staticSelectedStyle = new MenuItemStyle ();
@@ -430,7 +430,7 @@ namespace System.Web.UI.WebControls
 		[NotifyParentProperty (true)]
 		[DefaultValue (null)]
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Content)]
-		public virtual SubMenuStyle StaticMenuStyle {
+		public SubMenuStyle StaticMenuStyle {
 			get {
 				if (staticMenuStyle == null) {
 					staticMenuStyle = new SubMenuStyle ();
@@ -443,8 +443,8 @@ namespace System.Web.UI.WebControls
 
 		[DefaultValue (null)]
 		[PersistenceMode (PersistenceMode.InnerProperty)]
-	    [Editor ("System.Web.UI.Design.WebControls.MenuItemStyleCollectionEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
-		public virtual MenuItemStyleCollection LevelMenuItemStyles {
+	    [Editor ("System.Web.UI.Design.WebControls.MenuItemStyleCollectionEditor," + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
+		public MenuItemStyleCollection LevelMenuItemStyles {
 			get {
 				if (levelMenuItemStyles == null) {
 					levelMenuItemStyles = new MenuItemStyleCollection ();
@@ -457,8 +457,8 @@ namespace System.Web.UI.WebControls
 
 		[DefaultValue (null)]
 		[PersistenceMode (PersistenceMode.InnerProperty)]
-	    [Editor ("System.Web.UI.Design.WebControls.MenuItemStyleCollectionEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
-		public virtual MenuItemStyleCollection LevelSelectedStyles {
+	    [Editor ("System.Web.UI.Design.WebControls.MenuItemStyleCollectionEditor," + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
+		public MenuItemStyleCollection LevelSelectedStyles {
 			get {
 				if (levelSelectedStyles == null) {
 					levelSelectedStyles = new MenuItemStyleCollection ();
@@ -471,8 +471,8 @@ namespace System.Web.UI.WebControls
 
 		[DefaultValue (null)]
 		[PersistenceMode (PersistenceMode.InnerProperty)]
-	    [Editor ("System.Web.UI.Design.WebControls.MenuItemStyleCollectionEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
-		public virtual SubMenuStyleCollection LevelSubMenuStyles {
+	    [Editor ("System.Web.UI.Design.WebControls.SubMenuStyleCollectionEditor," + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
+		public SubMenuStyleCollection LevelSubMenuStyles {
 			get {
 				if (levelSubMenuStyles == null) {
 					levelSubMenuStyles = new SubMenuStyleCollection ();
@@ -487,7 +487,7 @@ namespace System.Web.UI.WebControls
 		[NotifyParentProperty (true)]
 		[DefaultValue (null)]
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Content)]
-		public virtual Style DynamicHoverStyle {
+		public Style DynamicHoverStyle {
 			get {
 				if (dynamicHoverStyle == null) {
 					dynamicHoverStyle = new Style ();
@@ -502,7 +502,7 @@ namespace System.Web.UI.WebControls
 		[NotifyParentProperty (true)]
 		[DefaultValue (null)]
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Content)]
-		public virtual Style StaticHoverStyle {
+		public Style StaticHoverStyle {
 			get {
 				if (staticHoverStyle == null) {
 					staticHoverStyle = new Style ();
@@ -515,7 +515,7 @@ namespace System.Web.UI.WebControls
 		
 		[DefaultValue ("")]
 		[UrlProperty]
-		[Editor ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, typeof (System.Drawing.Design.UITypeEditor))]
+		[Editor ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
 		public string ScrollDownImageUrl {
 			get {
 				object o = ViewState ["sdiu"];
@@ -529,7 +529,7 @@ namespace System.Web.UI.WebControls
 
 		[DefaultValue ("")]
 		[UrlProperty]
-		[Editor ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, typeof (System.Drawing.Design.UITypeEditor))]
+		[Editor ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
 		public string ScrollUpImageUrl {
 			get {
 				object o = ViewState ["suiu"];
@@ -542,7 +542,7 @@ namespace System.Web.UI.WebControls
 		}
 
 		[Localizable (true)]
-		public virtual string ScrollDownText {
+		public string ScrollDownText {
 			get {
 				object o = ViewState ["ScrollDownText"];
 				if (o != null) return (string) o;
@@ -554,7 +554,7 @@ namespace System.Web.UI.WebControls
 		}
 
 		[Localizable (true)]
-		public virtual string ScrollUpText {
+		public string ScrollUpText {
 			get {
 				object o = ViewState ["ScrollUpText"];
 				if (o != null) return (string) o;
@@ -565,10 +565,22 @@ namespace System.Web.UI.WebControls
 			}
 		}
 
+		[MonoTODO]
+		public string DynamicPopOutImageTextFormatString 
+		{
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+		
+
 		[DefaultValue ("")]
 		[UrlProperty]
-		[Editor ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, typeof (System.Drawing.Design.UITypeEditor))]
-		public virtual string DynamicPopOutImageUrl {
+		[Editor ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
+		public string DynamicPopOutImageUrl {
 			get {
 				object o = ViewState ["dpoiu"];
 				if (o != null) return (string)o;
@@ -579,9 +591,21 @@ namespace System.Web.UI.WebControls
 			}
 		}
 
+		[MonoTODO]
+		public string StaticPopOutImageTextFormatString
+		{
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+		
+
 		[DefaultValue ("")]
 		[UrlProperty]
-		[Editor ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, typeof (System.Drawing.Design.UITypeEditor))]
+		[Editor ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
 		public string StaticPopOutImageUrl {
 			get {
 				object o = ViewState ["spoiu"];
@@ -594,7 +618,7 @@ namespace System.Web.UI.WebControls
 		}
 
 		[DefaultValue ("")]
-		public virtual string Target {
+		public string Target {
 			get {
 				object o = ViewState ["Target"];
 				if (o != null) return (string) o;
@@ -642,6 +666,19 @@ namespace System.Web.UI.WebControls
 			get { return selectedItem != null ? selectedItem.Value : null; }
 		}
 
+		[MonoTODO]
+		[Localizable (true)]
+		public string SkipLinkText 
+		{
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+		
+
 		internal void SetSelectedItem (MenuItem item)
 		{
 			if (selectedItem == item) return;
@@ -721,13 +758,19 @@ namespace System.Web.UI.WebControls
 			node.SetDataItem (dataItem);
 		}
 		
-		public void RaisePostBackEvent (string eventArgument)
+		protected internal virtual void RaisePostBackEvent (string eventArgument)
 		{
 			MenuItem item = FindItemByPos (eventArgument);
 			if (item == null) return;
 			item.Selected = true;
 			OnMenuItemClick (new MenuEventArgs (item));
 		}
+
+		[MonoTODO]
+		void IPostBackEventHandler.RaisePostBackEvent (string eventArgument)
+		{
+			throw new NotImplementedException ();
+		}
 		
 		MenuItem FindItemByPos (string path)
 		{
@@ -848,7 +891,7 @@ namespace System.Web.UI.WebControls
 				((IStateManager)LevelSubMenuStyles).LoadViewState(states[13]);
 		}
 		
-		protected override void OnInit (EventArgs e)
+		protected internal override void OnInit (EventArgs e)
 		{
 			Page.RegisterRequiresControlState (this);
 			base.OnInit (e);
@@ -873,7 +916,7 @@ namespace System.Web.UI.WebControls
 				return null;
 		}
 		
-		protected override void CreateChildControls ()
+		protected internal override void CreateChildControls ()
 		{
 			base.CreateChildControls ();
 		}
@@ -882,7 +925,19 @@ namespace System.Web.UI.WebControls
 		{
 			base.EnsureDataBound ();
 		}
-		
+
+		[MonoTODO]
+		protected override IDictionary GetDesignModeState ()
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		protected override void SetDesignModeState (IDictionary data)
+		{
+			throw new NotImplementedException ();
+		}
+				
 		public override ControlCollection Controls {
 			get { return base.Controls; }
 		}
@@ -892,7 +947,19 @@ namespace System.Web.UI.WebControls
 			base.DataBind ();
 		}
 		
-		protected override void OnPreRender (EventArgs e)
+		[MonoTODO]
+		protected override bool OnBubbleEvent (object source, EventArgs e)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		protected override void OnDataBinding (EventArgs e)
+		{
+			throw new NotImplementedException ();
+		}
+		
+		protected internal override void OnPreRender (EventArgs e)
 		{
 			base.OnPreRender (e);
 			
@@ -972,7 +1039,7 @@ namespace System.Web.UI.WebControls
 			Page.Header.StyleSheet.CreateStyleRule (ts, "." + baseStyle.RegisteredCssClass + " A", this);
 		}
 		
-		protected override void Render (HtmlTextWriter writer)
+		protected internal override void Render (HtmlTextWriter writer)
 		{
 			base.Render (writer);
 		}
@@ -999,7 +1066,7 @@ namespace System.Web.UI.WebControls
 			dynamicMenus = null;
 		}
 		
-		protected override void RenderContents (HtmlTextWriter writer)
+		protected internal override void RenderContents (HtmlTextWriter writer)
 		{
 			dynamicMenus = new ArrayList ();
 			RenderMenuBody (writer, Items, Orientation == Orientation.Vertical, false);

+ 1 - 1
mcs/class/System.Web/System.Web.UI.WebControls/MenuItemTemplateContainer.cs

@@ -54,7 +54,7 @@ namespace System.Web.UI.WebControls
 		}
 		
 		[MonoTODO]
-		protected override void Render (HtmlTextWriter writer)
+		protected internal override void Render (HtmlTextWriter writer)
 		{
 			base.Render (writer);
 		}

+ 36 - 24
mcs/class/System.Web/System.Web.UI.WebControls/MultiView.cs

@@ -26,7 +26,7 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
+//
 
 #if NET_2_0
 
@@ -92,7 +92,7 @@ namespace System.Web.UI.WebControls
 		public virtual int ActiveViewIndex {
 			get { return viewIndex; }
 			set {
-				if (!initied) {
+				if (!initied) {
 					initialIndex = value;
 					return;
 				}
@@ -103,12 +103,24 @@ namespace System.Web.UI.WebControls
 				if (viewIndex != -1)
 					((View)Controls [viewIndex]).NotifyActivation (false);
 
-				viewIndex = value;
+				viewIndex = value;
 
 				if (viewIndex != -1)
-					((View)Controls [viewIndex]).NotifyActivation (true);
+					((View)Controls [viewIndex]).NotifyActivation (true);
+
+				UpdateViewVisibility ();
+			}
+		}
 
-				UpdateViewVisibility ();
+		[Browsable (true)]
+		[MonoTODO]
+		public virtual new bool EnableTheming
+		{
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
 			}
 		}
 		
@@ -150,38 +162,38 @@ namespace System.Web.UI.WebControls
 			return false;
 		}
 		
-		protected override void OnInit (EventArgs e)
+		protected internal override void OnInit (EventArgs e)
 		{
 			initied = true;
-			Page.RegisterRequiresControlState (this);
+			Page.RegisterRequiresControlState (this);
 			if (initialIndex != -1) {
-				ActiveViewIndex = initialIndex;
-				initialIndex = -1;
+				ActiveViewIndex = initialIndex;
+				initialIndex = -1;
 			}
 			base.OnInit (e);
-		}
+		}
 		
-		void UpdateViewVisibility ()
-		{
-			for (int n=0; n<Views.Count; n++)
-				Views [n].Visible = (n == viewIndex);
-		}
+		void UpdateViewVisibility ()
+		{
+			for (int n=0; n<Views.Count; n++)
+				Views [n].Visible = (n == viewIndex);
+		}
 		
 		protected internal override void RemovedControl (Control ctl)
 		{
 			if (viewIndex >= Controls.Count) {
-				viewIndex = Controls.Count - 1;
-				UpdateViewVisibility ();
+				viewIndex = Controls.Count - 1;
+				UpdateViewVisibility ();
 			}
 
 			base.RemovedControl (ctl);
 		}
 		
 		protected internal override void LoadControlState (object state)
-		{
-			if (state != null) {
-				viewIndex = (int)state;
-				UpdateViewVisibility ();
+		{
+			if (state != null) {
+				viewIndex = (int)state;
+				UpdateViewVisibility ();
 			}
 			else viewIndex = -1;
 		}
@@ -200,9 +212,9 @@ namespace System.Web.UI.WebControls
 			}
 		}
 		
-		protected override void Render (HtmlTextWriter writer)
-		{
-			if (!initied) viewIndex = initialIndex;
+		protected internal override void Render (HtmlTextWriter writer)
+		{
+			if (!initied) viewIndex = initialIndex;
 			if (viewIndex != -1)
 				GetActiveView ().Render (writer);
 		}

+ 81 - 1
mcs/class/System.Web/System.Web.UI.WebControls/ObjectDataSource.cs

@@ -34,6 +34,7 @@ using System.Collections.Specialized;
 using System.ComponentModel;
 using System.IO;
 using System.Security.Permissions;
+using System.Drawing;
 
 namespace System.Web.UI.WebControls
 {
@@ -45,6 +46,7 @@ namespace System.Web.UI.WebControls
 	[PersistChildrenAttribute (false)]
 	[AspNetHostingPermissionAttribute (SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
 	[AspNetHostingPermissionAttribute (SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)]
+	[ToolboxBitmap ("bitmap file goes here")]
 	public class ObjectDataSource : DataSourceControl
 	{
 		ObjectDataSourceView defaultView;
@@ -132,12 +134,64 @@ namespace System.Web.UI.WebControls
 			remove { DefaultView.Updating -= value; }
 		}
 
+		[DefaultValue (0)]
+		[TypeConverter ("System.Web.UI.DataSourceCacheDurationConverter, " + Consts.AssemblySystem_Web)]
+		[MonoTODO]
+		public virtual int CacheDuration 
+		{
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+
+		[DefaultValue (DataSourceCacheExpiry.Absolute)]
+		[MonoTODO]
+		public virtual DataSourceCacheExpiry CacheExpirationPolicy 
+		{
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+
+		[DefaultValue ("")]
+		[MonoTODO]
+		public virtual string CacheKeyDependency 
+		{
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+		
+		
+		
 	    [WebCategoryAttribute ("Data")]
 	    [DefaultValueAttribute (ConflictOptions.OverwriteChanges)]
 		public ConflictOptions ConflictDetection {
 			get { return DefaultView.ConflictDetection; }
 			set { DefaultView.ConflictDetection = value; }
 		}
+
+		[DefaultValue (false)]
+		[MonoTODO]
+		public bool ConvertNullToDBNull
+		{
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+		
 		
 	    [WebCategoryAttribute ("Data")]
 	    [DefaultValueAttribute ("")]
@@ -161,6 +215,19 @@ namespace System.Web.UI.WebControls
 		public ParameterCollection DeleteParameters {
 			get { return DefaultView.DeleteParameters; }
 		}
+
+		[DefaultValue (false)]
+		[MonoTODO]
+		public virtual bool EnableCaching 
+		{
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+		
 		
 	    [WebCategoryAttribute ("Paging")]
 	    [DefaultValueAttribute (false)]
@@ -244,6 +311,19 @@ namespace System.Web.UI.WebControls
 			get { return DefaultView.SortParameterName; }
 			set { DefaultView.SortParameterName = value; }
 		}
+
+		[DefaultValue ("")]
+		[MonoTODO]
+		public virtual string SqlCacheDependency
+		{
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+		
 		
 	    [WebCategoryAttribute ("Paging")]
 	    [DefaultValueAttribute ("startRowIndex")]
@@ -308,7 +388,7 @@ namespace System.Web.UI.WebControls
 			return DefaultView.Insert (empty);
 		}
 		
-		protected override void OnInit (EventArgs e)
+		protected internal override void OnInit (EventArgs e)
 		{
 			Page.LoadComplete += OnPageLoadComplete;
 		}

+ 43 - 2
mcs/class/System.Web/System.Web.UI.WebControls/SiteMapPath.cs

@@ -36,6 +36,7 @@ using System.ComponentModel;
 
 namespace System.Web.UI.WebControls
 {
+	[Designer ("System.Web.UI.Design.WebControls.SiteMapPathDesigner, " + Consts.AssemblySystem_Design, "System.ComponentModel.Design.IDesigner")]
 	public class SiteMapPath: CompositeControl
 	{
 		SiteMapProvider provider;
@@ -271,7 +272,7 @@ namespace System.Web.UI.WebControls
 		
 	    [DefaultValueAttribute ("")]
 	    [ThemeableAttribute (false)]
-		public string SiteMapProvider {
+		public virtual string SiteMapProvider {
 			get {
 				object o = ViewState ["SiteMapProvider"];
 				if (o != null) return (string) o;
@@ -282,13 +283,37 @@ namespace System.Web.UI.WebControls
 				UpdateControls ();
 			}
 		}
+
+		[Localizable (true)]
+		[MonoTODO]
+		public virtual string SkipLinkText 
+		{
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+		
 		
 		void UpdateControls ()
 		{
 			ChildControlsCreated = false;
 		}
+
+		[MonoTODO]
+		public override void DataBind ()
+		{
+			throw new NotImplementedException ();
+		}
 		
-		protected override void CreateChildControls ()
+		protected override void AddAttributesToRender (HtmlTextWriter writer)
+		{
+			base.AddAttributesToRender (writer);
+		}
+		
+		protected internal override void CreateChildControls ()
 		{
 			Controls.Clear ();
 			CreateControlHierarchy ();
@@ -435,6 +460,22 @@ namespace System.Web.UI.WebControls
 			if (states[3] != null) ((IStateManager)PathSeparatorStyle).LoadViewState (states[3]);
 			if (states[4] != null) ((IStateManager)RootNodeStyle).LoadViewState (states[4]);
 		}
+
+		[MonoTODO]
+		protected override void OnDataBinding (EventArgs e)
+		{
+			throw new NotImplementedException ();
+		}
+		
+		protected internal override void Render (HtmlTextWriter w)
+		{
+			base.Render (w);
+		}
+
+		protected internal override void RenderContents (HtmlTextWriter w)
+		{
+			base.RenderContents (w);
+		}
 		
 		protected override object SaveViewState ()
 		{

+ 2 - 1
mcs/class/System.Web/System.Web.UI.WebControls/SqlDataSourceSelectingEventArgs.cs

@@ -29,13 +29,14 @@
 //
 
 #if NET_2_0
+using System.Data.Common;
 
 namespace System.Web.UI.WebControls {
 	public class SqlDataSourceSelectingEventArgs : SqlDataSourceCommandEventArgs {
 		DataSourceSelectArguments arguments;
 		bool executeSelect;
 		
-		public SqlDataSourceSelectingEventArgs (IDbCommand command, DataSourceSelectArguments argument, 
+		public SqlDataSourceSelectingEventArgs (DbCommand command, DataSourceSelectArguments argument, 
 			bool executeSelect) : base (command)
 		{
 			this.arguments = argument;

+ 2 - 2
mcs/class/System.Web/System.Web.UI.WebControls/TableCaptionAlign.cs

@@ -25,8 +25,9 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_1_1
 namespace System.Web.UI.WebControls {
+
+	// present in Fx 1.1 SP1
         public enum TableCaptionAlign {
                 NotSet = 0,
 		Top = 1,
@@ -35,4 +36,3 @@ namespace System.Web.UI.WebControls {
 		Right = 4		
         }
 }
-#endif

+ 61 - 36
mcs/class/System.Web/System.Web.UI.WebControls/TreeView.cs

@@ -43,6 +43,7 @@ namespace System.Web.UI.WebControls
 {
 	[ControlValueProperty ("SelectedValue")]
 	[DefaultEvent ("SelectedNodeChanged")]
+	[Designer ("System.Web.UI.Design.WebControls.TreeViewDesigner, " + Consts.AssemblySystem_Design, "System.ComponentModel.Design.IDesigner")]
 	public class TreeView: HierarchicalDataBoundControl, IPostBackEventHandler, IPostBackDataHandler, ICallbackEventHandler
 	{
 		Style hoverNodeStyle;
@@ -188,7 +189,7 @@ namespace System.Web.UI.WebControls
 
 
 		[Localizable (true)]
-		public virtual string CollapseImageToolTip {
+		public string CollapseImageToolTip {
 			get {
 				object o = ViewState ["CollapseImageToolTip"];
 				if (o != null) return (string)o;
@@ -203,7 +204,7 @@ namespace System.Web.UI.WebControls
 		[WebCategory ("Behavior")]
 		[WebSysDescription ("Whether the tree will automatically generate bindings.")]
 		[DefaultValue (true)]
-		public virtual bool AutoGenerateDataBindings {
+		public bool AutoGenerateDataBindings {
 			get {
 				object o = ViewState ["AutoGenerateDataBindings"];
 				if (o != null) return (bool)o;
@@ -218,8 +219,8 @@ namespace System.Web.UI.WebControls
 		[WebSysDescription ("The url of the image to show when a node can be collapsed.")]
 		[UrlProperty]
 		[WebCategory ("Appearance")]
-		[Editor ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, typeof (System.Drawing.Design.UITypeEditor))]
-		public virtual string CollapseImageUrl {
+		[Editor ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
+		public string CollapseImageUrl {
 			get {
 				object o = ViewState ["CollapseImageUrl"];
 				if (o != null) return (string)o;
@@ -233,10 +234,10 @@ namespace System.Web.UI.WebControls
 		[WebCategory ("Data")]
 		[PersistenceMode (PersistenceMode.InnerProperty)]
 		[WebSysDescription ("Bindings for tree nodes.")]
-		[Editor ("System.Web.UI.Design.TreeViewBindingsEditor, " + Consts.AssemblySystem_Design, typeof (System.Drawing.Design.UITypeEditor))]
+		[Editor ("System.Web.UI.Design.WebControls.TreeViewBindingsEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
 	    [DefaultValueAttribute (null)]
 	    [MergablePropertyAttribute (false)]
-		public virtual TreeNodeBindingCollection DataBindings {
+		public TreeNodeBindingCollection DataBindings {
 			get {
 				if (dataBindings == null) {
 					dataBindings = new TreeNodeBindingCollection ();
@@ -251,7 +252,7 @@ namespace System.Web.UI.WebControls
 		[WebSysDescription ("Whether the tree view can use client-side script to expand and collapse nodes.")]
 		[Themeable (false)]
 		[DefaultValue (true)]
-		public virtual bool EnableClientScript {
+		public bool EnableClientScript {
 			get {
 				object o = ViewState ["EnableClientScript"];
 				if (o != null) return (bool)o;
@@ -265,7 +266,8 @@ namespace System.Web.UI.WebControls
 		[DefaultValue (-1)]
 		[WebCategory ("Behavior")]
 		[WebSysDescription ("The initial expand depth.")]
-		public virtual int ExpandDepth {
+		[TypeConverter ("System.Web.UI.WebControls.TreeView+TreeViewExpandDepthConverter, " + Consts.AssemblySystem_Web)]
+		public int ExpandDepth {
 			get {
 				object o = ViewState ["ExpandDepth"];
 				if (o != null) return (int)o;
@@ -277,7 +279,7 @@ namespace System.Web.UI.WebControls
 		}
 
 		[Localizable (true)]
-		public virtual string ExpandImageToolTip {
+		public string ExpandImageToolTip {
 			get {
 				object o = ViewState ["ExpandImageToolTip"];
 				if(o != null) return (string)o;
@@ -292,8 +294,8 @@ namespace System.Web.UI.WebControls
 		[UrlProperty]
 		[WebSysDescription ("The url of the image to show when a node can be expanded.")]
 		[WebCategory ("Appearance")]
-		[Editor ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, typeof (System.Drawing.Design.UITypeEditor))]
-		public virtual string ExpandImageUrl {
+		[Editor ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
+		public string ExpandImageUrl {
 			get {
 				object o = ViewState ["ExpandImageUrl"];
 				if(o != null) return (string)o;
@@ -309,7 +311,7 @@ namespace System.Web.UI.WebControls
 		[DefaultValue (null)]
 		[WebCategory ("Styles")]
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Content)]
-		public virtual Style HoverNodeStyle {
+		public Style HoverNodeStyle {
 			get {
 				if (hoverNodeStyle == null) {
 					hoverNodeStyle = new Style();
@@ -321,7 +323,7 @@ namespace System.Web.UI.WebControls
 		}
 
 		[DefaultValue (TreeViewImageSet.Custom)]
-		public virtual TreeViewImageSet ImageSet {
+		public TreeViewImageSet ImageSet {
 			get {
 				object o = ViewState ["ImageSet"];
 				if(o != null) return (TreeViewImageSet)o;
@@ -337,7 +339,7 @@ namespace System.Web.UI.WebControls
 		[DefaultValue (null)]
 		[WebCategory ("Styles")]
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Content)]
-		public virtual TreeNodeStyle LeafNodeStyle {
+		public TreeNodeStyle LeafNodeStyle {
 			get {
 				if (leafNodeStyle == null) {
 					leafNodeStyle = new TreeNodeStyle ();
@@ -351,9 +353,8 @@ namespace System.Web.UI.WebControls
 		[DefaultValue (null)]
 		[WebCategory ("Styles")]
 		[PersistenceMode (PersistenceMode.InnerProperty)]
-		[DesignerSerializationVisibility (DesignerSerializationVisibility.Content)]
-		[Editor ("System.Web.UI.Design.TreeNodeStyleCollectionEditor, " + Consts.AssemblySystem_Design, typeof (System.Drawing.Design.UITypeEditor))]
-		public virtual TreeNodeStyleCollection LevelStyles {
+		[Editor ("System.Web.UI.Design.WebControls.TreeNodeStyleCollectionEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
+		public TreeNodeStyleCollection LevelStyles {
 			get {
 				if (levelStyles == null) {
 					levelStyles = new TreeNodeStyleCollection ();
@@ -401,10 +402,10 @@ namespace System.Web.UI.WebControls
 		}
 		
 		[PersistenceMode (PersistenceMode.InnerProperty)]
-		[Editor ("System.Web.UI.Design.TreeNodeCollectionEditor, " + Consts.AssemblySystem_Design, typeof (System.Drawing.Design.UITypeEditor))]
+		[Editor ("System.Web.UI.Design.WebControls.TreeNodeCollectionEditor," + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
 	    [DefaultValueAttribute (null)]
 	    [MergablePropertyAttribute (false)]
-		public virtual TreeNodeCollection Nodes {
+		public TreeNodeCollection Nodes {
 			get {
 				if (nodes == null) {
 					nodes = new TreeNodeCollection (this);
@@ -420,7 +421,7 @@ namespace System.Web.UI.WebControls
 		[DefaultValue (null)]
 		[WebCategory ("Styles")]
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Content)]
-		public virtual TreeNodeStyle NodeStyle {
+		public TreeNodeStyle NodeStyle {
 			get {
 				if (nodeStyle == null) {
 					nodeStyle = new TreeNodeStyle ();
@@ -432,7 +433,7 @@ namespace System.Web.UI.WebControls
 		}
 		
 		[DefaultValue (false)]
-		public virtual bool NodeWrap {
+		public bool NodeWrap {
 			get {
 				object o = ViewState ["NodeWrap"];
 				if(o != null) return (bool)o;
@@ -447,8 +448,8 @@ namespace System.Web.UI.WebControls
 		[DefaultValue ("")]
 		[WebSysDescription ("The url of the image to show for leaf nodes.")]
 		[WebCategory ("Appearance")]
-		[Editor ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, typeof (System.Drawing.Design.UITypeEditor))]
-		public virtual string NoExpandImageUrl {
+		[Editor ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
+		public string NoExpandImageUrl {
 			get {
 				object o = ViewState ["NoExpandImageUrl"];
 				if(o != null) return (string)o;
@@ -464,7 +465,7 @@ namespace System.Web.UI.WebControls
 		[DefaultValue (null)]
 		[WebCategory ("Styles")]
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Content)]
-		public virtual TreeNodeStyle ParentNodeStyle {
+		public TreeNodeStyle ParentNodeStyle {
 			get {
 				if (parentNodeStyle == null) {
 					parentNodeStyle = new TreeNodeStyle ();
@@ -476,7 +477,7 @@ namespace System.Web.UI.WebControls
 		}
 		
 		[DefaultValue ('/')]
-		public virtual char PathSeparator {
+		public char PathSeparator {
 			get {
 				object o = ViewState ["PathSeparator"];
 				if(o != null) return (char)o;
@@ -488,7 +489,7 @@ namespace System.Web.UI.WebControls
 		}
 
 		[DefaultValue (true)]
-		public virtual bool PopulateNodesFromClient {
+		public bool PopulateNodesFromClient {
 			get {
 				object o = ViewState ["PopulateNodesFromClient"];
 				if(o != null) return (bool)o;
@@ -504,7 +505,7 @@ namespace System.Web.UI.WebControls
 		[DefaultValue (null)]
 		[WebCategory ("Styles")]
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Content)]
-		public virtual TreeNodeStyle RootNodeStyle {
+		public TreeNodeStyle RootNodeStyle {
 			get {
 				if (rootNodeStyle == null) {
 					rootNodeStyle = new TreeNodeStyle ();
@@ -520,7 +521,7 @@ namespace System.Web.UI.WebControls
 		[DefaultValue (null)]
 		[WebCategory ("Styles")]
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Content)]
-		public virtual TreeNodeStyle SelectedNodeStyle {
+		public TreeNodeStyle SelectedNodeStyle {
 			get {
 				if (selectedNodeStyle == null) {
 					selectedNodeStyle = new TreeNodeStyle ();
@@ -532,7 +533,7 @@ namespace System.Web.UI.WebControls
 		}
 		
 		[DefaultValue (TreeNodeTypes.None)]
-		public virtual TreeNodeTypes ShowCheckBoxes {
+		public TreeNodeTypes ShowCheckBoxes {
 			get {
 				object o = ViewState ["ShowCheckBoxes"];
 				if(o != null) return (TreeNodeTypes) o;
@@ -544,7 +545,7 @@ namespace System.Web.UI.WebControls
 		}
 
 		[DefaultValue (true)]
-		public virtual bool ShowExpandCollapse {
+		public bool ShowExpandCollapse {
 			get {
 				object o = ViewState ["ShowExpandCollapse"];
 				if(o != null) return (bool)o;
@@ -556,7 +557,7 @@ namespace System.Web.UI.WebControls
 		}
 
 		[DefaultValue (false)]
-		public virtual bool ShowLines {
+		public bool ShowLines {
 			get {
 				object o = ViewState ["ShowLines"];
 				if(o != null) return (bool)o;
@@ -566,6 +567,19 @@ namespace System.Web.UI.WebControls
 				ViewState ["ShowLines"] = value;
 			}
 		}
+
+		[Localizable (true)]
+		[MonoTODO]
+		public string SkipLinkText
+		{
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+		
 		
 		[Browsable (false)]
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
@@ -581,7 +595,7 @@ namespace System.Web.UI.WebControls
 		}
 
 		[DefaultValue ("")]
-		public virtual string Target {
+		public string Target {
 			get {
 				object o = ViewState ["Target"];
 				if(o != null) return (string)o;
@@ -591,7 +605,18 @@ namespace System.Web.UI.WebControls
 				ViewState ["Target"] = value;
 			}
 		}
-		
+
+		[MonoTODO]
+		public override bool Visible 
+		{
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+				
 		[Browsable (false)]
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
 		public TreeNodeCollection CheckedNodes {
@@ -680,7 +705,7 @@ namespace System.Web.UI.WebControls
 			node.SetDataItem (dataItem);
 		}
 		
-		protected override void OnInit (EventArgs e)
+		protected internal override void OnInit (EventArgs e)
 		{
 			if (!Page.IsPostBack && ExpandDepth != 0) {
 				foreach (TreeNode node in Nodes)
@@ -928,7 +953,7 @@ namespace System.Web.UI.WebControls
 			return res;
 		}
 		
-		protected override void OnPreRender (EventArgs e)
+		protected internal override void OnPreRender (EventArgs e)
 		{
 			base.OnPreRender (e);
 			
@@ -1001,7 +1026,7 @@ namespace System.Web.UI.WebControls
 			return bin;
 		}
 		
-		protected override void RenderContents (HtmlTextWriter writer)
+		protected internal override void RenderContents (HtmlTextWriter writer)
 		{
 			ArrayList levelLines = new ArrayList ();
 			int num = Nodes.Count;

+ 64 - 37
mcs/class/System.Web/System.Web.UI.WebControls/Wizard.cs

@@ -38,7 +38,8 @@ namespace System.Web.UI.WebControls
 {
 	[DefaultEventAttribute ("FinishButtonClick")]
 	[BindableAttribute (false)]
-	[DesignerAttribute ("System.Web.UI.Design.WebControls.WizardDesigner, " + Consts.AssemblySystem_Design, "System.ComponentModel.Design.IDesigner")]
+	[DesignerAttribute ("System.Web.UI.Design.WebControls.WizardDesigner, " + Consts.AssemblySystem_Design, "System.ComponentModel.Design.IDesigner")]
+	[ToolboxData ("<{0}:Wizard runat=\"server\"> <WizardSteps> <asp:WizardStep title=\"Step 1\" runat=\"server\"></asp:WizardStep> <asp:WizardStep title=\"Step 2\" runat=\"server\"></asp:WizardStep> </WizardSteps> </{0}:Wizard>")]
 	public class Wizard: CompositeControl
 	{
 		public static readonly string CancelCommandName = "Cancel";
@@ -197,7 +198,7 @@ namespace System.Web.UI.WebControls
 		
 	    [DefaultValueAttribute (-1)]
 	    [ThemeableAttribute (false)]
-		public int ActiveStepIndex {
+		public virtual int ActiveStepIndex {
 			get {
 				return activeStepIndex;
 			}
@@ -217,7 +218,7 @@ namespace System.Web.UI.WebControls
 	    [UrlPropertyAttribute]
 	    [DefaultValueAttribute ("")]
 	    [EditorAttribute ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
-		public string CancelButtonImageUrl {
+		public virtual string CancelButtonImageUrl {
 			get {
 				object v = ViewState ["CancelButtonImageUrl"];
 				return v != null ? (string)v : string.Empty;
@@ -244,7 +245,7 @@ namespace System.Web.UI.WebControls
 		}
 		
 	    [LocalizableAttribute (true)]
-		public string CancelButtonText {
+		public virtual string CancelButtonText {
 			get {
 				object v = ViewState ["CancelButtonText"];
 				return v != null ? (string)v : "Cancel";
@@ -256,7 +257,7 @@ namespace System.Web.UI.WebControls
 		}
 		
 	    [DefaultValueAttribute (ButtonType.Button)]
-		public ButtonType CancelButtonType {
+		public virtual ButtonType CancelButtonType {
 			get {
 				object v = ViewState ["CancelButtonType"];
 				return v != null ? (ButtonType)v : ButtonType.Button;
@@ -268,9 +269,9 @@ namespace System.Web.UI.WebControls
 		}
 		
 	    [UrlPropertyAttribute]
-	    [EditorAttribute ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
+	    [EditorAttribute ("System.Web.UI.Design.UrlEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
 	    [DefaultValueAttribute ("")]
-		public string CancelDestinationPageUrl {
+		public virtual string CancelDestinationPageUrl {
 			get {
 				object v = ViewState ["CancelDestinationPageUrl"];
 				return v != null ? (string)v : string.Empty;
@@ -281,7 +282,7 @@ namespace System.Web.UI.WebControls
 		}
 	    
 	    [DefaultValueAttribute (0)]
-		public int CellPadding {
+		public virtual int CellPadding {
 			get {
 				object v = ViewState ["CellPadding"];
 				return v != null ? (int)v : 0;
@@ -293,7 +294,7 @@ namespace System.Web.UI.WebControls
 		}
 		
 	    [DefaultValueAttribute (0)]
-		public int CellSpacing {
+		public virtual int CellSpacing {
 			get {
 				object v = ViewState ["CellSpacing"];
 				return v != null ? (int)v : 0;
@@ -333,7 +334,7 @@ namespace System.Web.UI.WebControls
 	    [UrlPropertyAttribute]
 	    [DefaultValueAttribute ("")]
 	    [EditorAttribute ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
-		public string FinishCompleteButtonImageUrl {
+		public virtual string FinishCompleteButtonImageUrl {
 			get {
 				object v = ViewState ["FinishCompleteButtonImageUrl"];
 				return v != null ? (string)v : string.Empty;
@@ -360,7 +361,7 @@ namespace System.Web.UI.WebControls
 		}
 		
 	    [LocalizableAttribute (true)]
-		public string FinishCompleteButtonText {
+		public virtual string FinishCompleteButtonText {
 			get {
 				object v = ViewState ["FinishCompleteButtonText"];
 				return v != null ? (string)v : "Finish";
@@ -372,7 +373,7 @@ namespace System.Web.UI.WebControls
 		}
 		
 	    [DefaultValueAttribute (ButtonType.Button)]
-		public ButtonType FinishCompleteButtonType {
+		public virtual ButtonType FinishCompleteButtonType {
 			get {
 				object v = ViewState ["FinishCompleteButtonType"];
 				return v != null ? (ButtonType)v : ButtonType.Button;
@@ -384,9 +385,9 @@ namespace System.Web.UI.WebControls
 		}
 		
 	    [UrlPropertyAttribute]
-	    [EditorAttribute ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
+	    [EditorAttribute ("System.Web.UI.Design.UrlEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
 	    [DefaultValueAttribute ("")]
-		public string FinishDestinationPageUrl {
+		public virtual string FinishDestinationPageUrl {
 			get {
 				object v = ViewState ["FinishDestinationPageUrl"];
 				return v != null ? (string)v : string.Empty;
@@ -400,7 +401,7 @@ namespace System.Web.UI.WebControls
 		[TemplateContainer (typeof(Wizard), BindingDirection.OneWay)]
 		[PersistenceMode (PersistenceMode.InnerProperty)]
 	    [Browsable (false)]
-		public ITemplate FinishNavigationTemplate {
+		public virtual ITemplate FinishNavigationTemplate {
 			get { return finishNavigationTemplate; }
 			set { finishNavigationTemplate = value; UpdateControls (); }
 		}
@@ -408,7 +409,7 @@ namespace System.Web.UI.WebControls
 	    [UrlPropertyAttribute]
 	    [DefaultValueAttribute ("")]
 	    [EditorAttribute ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
-		public string FinishPreviousButtonImageUrl {
+		public virtual string FinishPreviousButtonImageUrl {
 			get {
 				object v = ViewState ["FinishPreviousButtonImageUrl"];
 				return v != null ? (string)v : string.Empty;
@@ -435,7 +436,7 @@ namespace System.Web.UI.WebControls
 		}
 		
 	    [LocalizableAttribute (true)]
-		public string FinishPreviousButtonText {
+		public virtual string FinishPreviousButtonText {
 			get {
 				object v = ViewState ["FinishPreviousButtonText"];
 				return v != null ? (string)v : "Previous";
@@ -447,7 +448,7 @@ namespace System.Web.UI.WebControls
 		}
 		
 	    [DefaultValueAttribute (ButtonType.Button)]
-		public ButtonType FinishPreviousButtonType {
+		public virtual ButtonType FinishPreviousButtonType {
 			get {
 				object v = ViewState ["FinishPreviousButtonType"];
 				return v != null ? (ButtonType)v : ButtonType.Button;
@@ -477,14 +478,14 @@ namespace System.Web.UI.WebControls
 		[TemplateContainer (typeof(Wizard), BindingDirection.OneWay)]
 		[PersistenceMode (PersistenceMode.InnerProperty)]
 	    [Browsable (false)]
-		public ITemplate HeaderTemplate {
+		public virtual ITemplate HeaderTemplate {
 			get { return headerTemplate; }
 			set { headerTemplate = value; UpdateControls (); }
 		}
 		
 	    [DefaultValueAttribute ("")]
 	    [LocalizableAttribute (true)]
-		public string HeaderText {
+		public virtual string HeaderText {
 			get {
 				object v = ViewState ["HeaderText"];
 				return v != null ? (string)v : string.Empty;
@@ -559,16 +560,28 @@ namespace System.Web.UI.WebControls
 		[TemplateContainer (typeof(Wizard), BindingDirection.OneWay)]
 		[PersistenceMode (PersistenceMode.InnerProperty)]
 	    [Browsable (false)]
-		public ITemplate SideBarTemplate {
+		public virtual ITemplate SideBarTemplate {
 			get { return sideBarTemplate; }
 			set { sideBarTemplate = value; UpdateControls (); }
 		}
+
+		[Localizable (true)]
+		[MonoTODO]
+		public virtual string SkipLinkText 
+		{
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
+			}
+		}
 		
 		[DefaultValue (null)]
 		[TemplateContainer (typeof(Wizard), BindingDirection.OneWay)]
 		[PersistenceMode (PersistenceMode.InnerProperty)]
 	    [Browsable (false)]
-		public ITemplate StartNavigationTemplate {
+		public virtual ITemplate StartNavigationTemplate {
 			get { return startNavigationTemplate; }
 			set { startNavigationTemplate = value; UpdateControls (); }
 		}
@@ -576,7 +589,7 @@ namespace System.Web.UI.WebControls
 	    [UrlPropertyAttribute]
 	    [DefaultValueAttribute ("")]
 	    [EditorAttribute ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
-		public string StartNextButtonImageUrl {
+		public virtual string StartNextButtonImageUrl {
 			get {
 				object v = ViewState ["StartNextButtonImageUrl"];
 				return v != null ? (string)v : string.Empty;
@@ -603,7 +616,7 @@ namespace System.Web.UI.WebControls
 		}
 		
 	    [LocalizableAttribute (true)]
-		public string StartNextButtonText {
+		public virtual string StartNextButtonText {
 			get {
 				object v = ViewState ["StartNextButtonText"];
 				return v != null ? (string)v : "Next";
@@ -615,7 +628,7 @@ namespace System.Web.UI.WebControls
 		}
 		
 	    [DefaultValueAttribute (ButtonType.Button)]
-		public ButtonType StartNextButtonType {
+		public virtual ButtonType StartNextButtonType {
 			get {
 				object v = ViewState ["StartNextButtonType"];
 				return v != null ? (ButtonType)v : ButtonType.Button;
@@ -630,7 +643,7 @@ namespace System.Web.UI.WebControls
 		[TemplateContainer (typeof(Wizard), BindingDirection.OneWay)]
 		[PersistenceMode (PersistenceMode.InnerProperty)]
 	    [Browsable (false)]
-		public ITemplate StepNavigationTemplate {
+		public virtual ITemplate StepNavigationTemplate {
 			get { return stepNavigationTemplate; }
 			set { stepNavigationTemplate = value; UpdateControls (); }
 		}
@@ -638,7 +651,7 @@ namespace System.Web.UI.WebControls
 	    [UrlPropertyAttribute]
 	    [DefaultValueAttribute ("")]
 	    [EditorAttribute ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
-		public string StepNextButtonImageUrl {
+		public virtual string StepNextButtonImageUrl {
 			get {
 				object v = ViewState ["StepNextButtonImageUrl"];
 				return v != null ? (string)v : string.Empty;
@@ -665,7 +678,7 @@ namespace System.Web.UI.WebControls
 		}
 		
 	    [LocalizableAttribute (true)]
-		public string StepNextButtonText {
+		public virtual string StepNextButtonText {
 			get {
 				object v = ViewState ["StepNextButtonText"];
 				return v != null ? (string)v : "Next";
@@ -677,7 +690,7 @@ namespace System.Web.UI.WebControls
 		}
 		
 	    [DefaultValueAttribute (ButtonType.Button)]
-		public ButtonType StepNextButtonType {
+		public virtual ButtonType StepNextButtonType {
 			get {
 				object v = ViewState ["StepNextButtonType"];
 				return v != null ? (ButtonType)v : ButtonType.Button;
@@ -691,7 +704,7 @@ namespace System.Web.UI.WebControls
 	    [UrlPropertyAttribute]
 	    [DefaultValueAttribute ("")]
 	    [EditorAttribute ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
-		public string StepPreviousButtonImageUrl {
+		public virtual string StepPreviousButtonImageUrl {
 			get {
 				object v = ViewState ["StepPreviousButtonImageUrl"];
 				return v != null ? (string)v : string.Empty;
@@ -718,7 +731,7 @@ namespace System.Web.UI.WebControls
 		}
 		
 	    [LocalizableAttribute (true)]
-		public string StepPreviousButtonText {
+		public virtual string StepPreviousButtonText {
 			get {
 				object v = ViewState ["StepPreviousButtonText"];
 				return v != null ? (string)v : "Previous";
@@ -730,7 +743,7 @@ namespace System.Web.UI.WebControls
 		}
 		
 	    [DefaultValueAttribute (ButtonType.Button)]
-		public ButtonType StepPreviousButtonType {
+		public virtual ButtonType StepPreviousButtonType {
 			get {
 				object v = ViewState ["StepPreviousButtonType"];
 				return v != null ? (ButtonType)v : ButtonType.Button;
@@ -757,16 +770,24 @@ namespace System.Web.UI.WebControls
 		}
 		
 	    [DesignerSerializationVisibilityAttribute (DesignerSerializationVisibility.Content)]
-	    [EditorAttribute ("System.Web.UI.Design.WebControls.WizardStepCollectionEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
+	    [EditorAttribute ("System.Web.UI.Design.WebControls.WizardStepCollectionEditor," + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
 	    [PersistenceModeAttribute (PersistenceMode.InnerProperty)]
 	    [ThemeableAttribute (false)]
-		public WizardStepCollection WizardSteps {
+		public virtual WizardStepCollection WizardSteps {
 			get {
 				if (steps == null)
 					steps = new WizardStepCollection (this);
 				return steps;
 			}
 		}
+
+		[MonoTODO]
+		protected virtual new HtmlTextWriterTag TagKey
+		{
+			get {
+				throw new NotImplementedException ();
+			}
+		}
 		
 		public ICollection GetHistory ()
 		{
@@ -806,7 +827,7 @@ namespace System.Web.UI.WebControls
 			return WizardSteps [index].AllowReturn;
 		} 
 		
-		protected override void OnInit (EventArgs e)
+		protected internal override void OnInit (EventArgs e)
 		{
 			Page.RegisterRequiresControlState (this);
 			base.OnInit (e);
@@ -819,7 +840,7 @@ namespace System.Web.UI.WebControls
 			return col;
 		}
 		
-		protected override void CreateChildControls ()
+		protected internal override void CreateChildControls ()
 		{
 			CreateControlHierarchy ();
 		}
@@ -1003,6 +1024,12 @@ namespace System.Web.UI.WebControls
 		{
 			return new TableStyle ();
 		}
+
+		[MonoTODO]
+		protected override IDictionary GetDesignModeState ()
+		{
+			throw new NotImplementedException ();
+		}
 		
 		protected internal override void LoadControlState (object ob)
 		{
@@ -1190,7 +1217,7 @@ namespace System.Web.UI.WebControls
 			UpdateControls ();
 		}
 		
-		protected override void Render (HtmlTextWriter writer)
+		protected internal override void Render (HtmlTextWriter writer)
 		{
 			wizardTable.ApplyStyle (ControlStyle);
 

+ 9 - 4
mcs/class/System.Web/System.Web.UI/AttributeCollection.cs

@@ -31,6 +31,7 @@
 
 using System;
 using System.Collections;
+using System.Globalization;
 
 namespace System.Web.UI {
 
@@ -60,9 +61,11 @@ namespace System.Web.UI {
 			get { return bag [key] as string; }
 
 			set {
-				if (0 == String.Compare (key, "style", true)) {
+				if (0 == String.Compare (key, "style", true, CultureInfo.InvariantCulture)) {
 					CssStyle.Clear();
-					CssStyle.FillStyle (value);
+					if (value != null) {
+						CssStyle.FillStyle (value);
+					}
 					key = "style";	// Needs to be always lowercase
 				}
 				bag.Add (key, value);
@@ -75,9 +78,11 @@ namespace System.Web.UI {
 
 		public void Add (string key, string value)
 		{
-			if (0 == String.Compare (key, "style", true)) {
+			if (0 == String.Compare (key, "style", true, CultureInfo.InvariantCulture)) {
 				CssStyle.Clear();
-				CssStyle.FillStyle (value);
+				if (value != null) {
+					CssStyle.FillStyle (value);
+				}
 				key = "style";	// Needs to be always lowercase
 			}
 			bag.Add (key, value);

+ 21 - 2
mcs/class/System.Web/System.Web.UI/BasePartialCachingControl.cs

@@ -95,13 +95,23 @@ namespace System.Web.UI
 			}
 		}
 
-		protected override void OnInit (EventArgs e)
+#if NET_2_0
+		protected internal
+#else
+		protected
+#endif
+		override void OnInit (EventArgs e)
 		{
 			control = CreateControl ();
 			Controls.Add (control);
 		}
 
-		protected override void Render (HtmlTextWriter output)
+#if NET_2_0
+		protected internal
+#else
+		protected
+#endif
+		override void Render (HtmlTextWriter output)
 		{
 			Cache cache = HttpRuntime.Cache;
 			string key = CreateKey ();
@@ -131,6 +141,15 @@ namespace System.Web.UI
 						CacheItemPriority.Normal, null);
 		}
 
+#if NET_2_0
+		public ControlCachePolicy CachePolicy 
+		{
+			get {
+				throw new NotImplementedException ();
+			}
+		}
+#endif
+
 		public CacheDependency Dependency {
 			get {return dependency;}
 			set {dependency = value;}

+ 274 - 20
mcs/class/System.Web/System.Web.UI/ChangeLog

@@ -1,34 +1,288 @@
-2005-07-25 Eyal Alaluf ([email protected])
-	* HtmlTextWriter.cs: Make several structs into clases under TARGET_JVM.
-	  (Perf issue with array of structs under TARGET_JVM).
+2005-08-26  Sebastien Pouliot  <[email protected]>
 
-2005-07-24 Gonzalo Paniagua Javier <[email protected]>
+	* CssStyleCollection.cs: Implemented setter for Value (2.0) using the
+	existing (but internal) FillStyle method. Rewrote BagToString to use an
+	HtmlTextWriter so we get the "right" format for background-image url.
 
-	* TemplateParser.cs: if there are no commas in the assembly name, just
-	LoadWithPartialName, as Load will throw.
+2005-08-26  Sebastien Pouliot  <[email protected]> 
+ 
+	* CssStyleCollection.cs: Implemented this[HtmlTextWriterStyle], 
+	Remove(HtmlTextWriterStyle) and the getter for Value (all 2.0). Removed
+	the extra space from last patch because they break some unit tests.
 
-2005-07-24 Eyal Alaluf ([email protected])
+2005-08-26  Lluis Sanchez Gual  <[email protected]> 
 
-	* TemplateControl.jvm.cs: fixed resource loading
-	* PageHandlerFactory.jvm.cs: Added file
+	* CssStyleCollection.cs: Added some spacing.
+	* HtmlTextWriter.cs: Made style and attribute tables static.
+	  Implemented StaticGetStyleName().
 
-2005-07-19 Eyal Alaluf ([email protected])
-	* Added TemplateControl.jvm.cs that implements Grasshopper (TARGET_J2EE)
-	  limited model of compiling ASP pages.
+2005-08-26  Sebastien Pouliot  <[email protected]> 
+ 
+	* CssStyleCollection.cs: Stubbed new 2.0 stuff to allow TableStyleTest
+	compilation. 
+	* HtmlTextWriter.cs: Fix style rendering for BackgroundImage in 2.0.
+	The new rendering formats the value as "url(" + original + ")".
 
-2005-07-19 Eyal Alaluf ([email protected])
+2005-08-26  Sebastien Pouliot  <[email protected]> 
 
-	* Added ControlBuilder.jvm.cs ObjectTagBuilder.jvm.cs as part of the TARGET_J2EE configuration.
+	* HtmlTextWriter.cs: Added support for VerticalAlign style (as it 
+	depends on the HtmlTextWriterStyle ordering).
 
-2005-07-13 Gonzalo Paniagua Javier <[email protected]>
+2005-08-26 Gonzalo Paniagua Javier <[email protected]>
 
-	* AttributeCollection.cs: create the style collection if it wasn't
-	created before Add ("style"...).
+	* HtmlTextWriter.cs: remove 'mistaken end of statement' and FIXME.
 
-2005-07-12 Gonzalo Paniagua Javier <[email protected]>
+2005-08-25  Sebastien Pouliot  <[email protected]> 
 
-	* AttributeCollection.cs: when the key added is 'style', use the style
-	collection.
+	* HtmlTextWriterStyle.cs: Added missing VerticalAlign in 2.0 (which 
+	fixed the rest of the enum values).
+	* UrlPropertyAttribute.cs: Removed the .ctor accepting an UrlTypes
+	parameter to match 2.0 API. Added a setter to the AllowedTypes 
+	property.
+
+2005-08-24  Chris Toshok  <[email protected]>
+
+	* Control.cs (get_Adapter): Instead of throwing an exception, just
+	return null, so we can write the rest of the Control specific
+	Adapter code and just not enable any of those code paths until we
+	have actual adapters.  Also flag TODO.
+	(EnsureChildControls): Call out to Adapter.CreateChildControls if
+	we have an adapter.
+	(RenderChildren): call "RenderControl (writer, adapter)" if we
+	have an adapter.
+	(RenderControl): implement the adapter case naively.
+	(LoadRecursive): call out to Adapter.OnLoad if we have one.
+	(PreRenderRecursiveInternal): call out to Adapter.OnPrerender if
+	we have one.
+	(InitRecursive): call out to Adapter.OnInit if we have one.
+
+2005-08-24  Chris Toshok  <[email protected]>
+
+	* Page.cs (GetPostBackEventReference): track change to
+	ClientScriptManager and don't call a removed method.
+
+	* ClientScriptManager.cs: track more recent docs and corcompare
+	output.
+
+2005-08-24  Sebastien Pouliot  <[email protected]>
+
+	* KeyedList.cs: Fixed bug when removing an unexisting object.
+	* StateManagedCollection.cs: Fixed API for beta2. Fixed buglets found 
+	in implementing RoleGroupCollection.
+
+2005-08-22  Sebastien Pouliot  <[email protected]>
+
+	* Page.cs: Use Control property (and not the _control variable) to get
+	the User (so the virtual Control property can be overriden properly).
+	Sadly this doesn't seems to be the case for other properties (like 
+	Request).
+
+2005-08-18  Dick Porter  <[email protected]>
+
+	* ControlCachePolicy.cs, PersistChildrenAttribute.cs,
+	UserControl.cs, DesignerDataBoundLiteralControl.cs,
+	PageStatePersister.cs, DataBoundLiteralControl.cs, Control.cs,
+	BasePartialCachingControl.cs, LiteralControl.cs: 2.0 API fixes and
+	stubs and attribute fixes
+
+2005-08-13  Sebastien Pouliot  <[email protected]>
+
+	* Control.cs: Add protected virtual SetDesignModeState, in 2.0 
+	profile, as this is required for the Login control.
+
+2005-08-11  Dick Porter  <[email protected]>
+
+	* CssStyleCollection.cs: Tweak the css string format to pass a
+	unit test
+
+	* AttributeCollection.cs: Don't NRE if someone sets the "style"
+	attribute to null.
+
+2005-08-05  Ben Maurer  <[email protected]>
+
+	* HtmlTextWriter.cs: Revert the patch below, see test case
+
+2005-08-05  Dick Porter  <[email protected]>
+
+	* HtmlTextWriter.cs: Make <option> tags render inline, to match
+	the ms output
+
+2005-08-03  Ben Maurer  <[email protected]>
+
+	* HtmlTextWriter.cs: Optmize this not to do insane amounts of
+	allocation for large pages, etc.
+
+2005-07-30  Chris Toshok  <[email protected]>
+
+	* Page.cs (VerifyRenderingInServerForm): copy MS's error message
+	since our form-errors jsunit tests depend on it.
+
+2005-07-30  Chris Toshok  <[email protected]>
+
+	* DataBinder.cs (FormatResult): make internal, not private.
+
+2005-07-29  Ben Maurer  <[email protected]>
+
+	* StateBag.cs: Don't remove when tracking viewstate, as per msft
+	docs.
+
+2005-07-29  Ben Maurer  <[email protected]>
+
+	* StateBag.cs: Actually *remove* items that are null. Duh.
+
+2005-07-21  Peter Dennis Bartok  <[email protected]>
+
+	* Page.cs: Need to throw exception when accessing Request but no
+	  context exists
+
+2005-07-20  Chris Toshok  <[email protected]>
+
+	* ClientScriptManager.cs (GetClientValidationEvent): the JS we
+	stick in onclick handlers for buttons/links/etc.
+
+	* Page.cs (GetSubmitStatements): new function to return
+	scriptManager.WriteSubmitStatements.  Used by HtmlForm.
+	(AreValidatorsUplevel): used by many of the button/linkbutton
+	controls (the ones that can CauseValidation) to tell whether or
+	not to emit client side validation calls.
+
+2005-07-20  Chris Toshok  <[email protected]>
+
+	* WebResourceAttribute.cs: make internal (and available) in
+	!NET_2_0.
+
+2005-07-20  Chris Toshok  <[email protected]>
+
+	* ClientScriptManager.cs (GetWebResourceUrl): make internal (but
+	available) in !NET_2_0.
+
+2005-07-18  Peter Dennis Bartok  <[email protected]>
+
+	* Control.cs: Added IDataBindingsAccessor interface methods
+
+2005-07-18  Ben Maurer  <[email protected]>
+
+	* HtmlTextWriter.cs: Fix nested indentation
+
+2005-07-18  Peter Dennis Bartok  <[email protected]>
+
+	* Control.cs: Added missing IParserAccessor.AddParsedSubObject 
+	  interface method
+
+2005-07-18  Ben Maurer  <[email protected]>
+
+	* HtmlTextWriter.cs: Fix indentation (somewhat at least)
+
+2005-07-18  Peter Dennis Bartok  <[email protected]>
+
+	* Control.cs:
+	  - Default name for controls on MS.Net is "_ctl" not "_ctrl"
+	  - MS does not append 'a' for auto-generated names
+
+2005-07-17  Ben Maurer  <[email protected]>
+
+	* AttributeCollection.cs: Use the invariant culture.
+
+	* StateBag.cs: "Duh" optimization: return null when there are no
+	dirty items in the view state
+
+2005-07-14  Ben Maurer  <[email protected]>
+
+	* StateBag.cs: A "short" version of my favorite method.
+
+	* HtmlTextWriter.cs: New method to get the tag name staticly.
+
+2005-07-14  Duncan Mak  <[email protected]>
+
+	* DataBindingHandlerAttribute.cs: Fixed after receiving some
+	comments from Gonzalo.
+
+2005-07-13  Jackson Harper  <[email protected]>
+
+	* PropertyConverter.cs: No public constructors.
+
+2005-07-13  Ben Maurer  <[email protected]>
+
+	* HtmlTextWriter.cs: Remove debugging spew. Style cleanup
+
+2005-07-12  Ben Maurer  <[email protected]>
+
+	* HtmlTextWriter.cs: Make styles work.
+
+2005-07-11  Peter Dennis Bartok  <[email protected]>
+
+	* AttributeCollection.cs: 
+	  - Changes to match MS behaviour, the "style" attribute is always 
+	    added to the list, in addition to being added to the 
+	    CssStyleCollection. Also added check for "style" attribute when 
+	    setting via index setter
+	  - When "Style" attribute is added, CssStyleCollection is 
+	    automatically created
+	  - The style keyword needs to be lowercase
+
+2005-07-11  Ben Maurer  <[email protected]>
+
+	* HtmlTextWriter.cs: Missing a PopEndTag here.
+
+	* PropertyConverter.cs: Pass tests
+
+2005-07-09  Miguel de Icaza  <[email protected]>
+
+	* DataBindingHandlerAttribute.cs: Create the "Default" property.
+
+2005-07-09  Duncan Mak  <[email protected]>
+
+	* DataBindingHandlerAttribute.cs: Implemented.
+
+2005-07-08  Ben Maurer  <[email protected]>
+
+	* HtmlTextWriter.cs: Much better compliance with msft
+
+2005-07-08  Jackson Harper  <[email protected]>
+
+	* ToolbarDataAttribute.cs: New implementation.
+
+2005-07-07  Jackson Harper  <[email protected]>
+
+	* PropertyConverter.cs: New implementation.
+
+2005-07-07  Ben Maurer  <[email protected]>
+
+	* StateBag.cs: Noticed an issue where SetDirty was called when the
+	key did not exist.
+
+2005-07-07  Ben Maurer  <[email protected]>
+
+	* StateBag.cs: Add a method that gets a string or else a default
+	value.
+
+2005-07-07  Dick Porter  <[email protected]>
+
+	* StateBag.cs: Added internal SetDirty (void) method to fix the
+	build
+
+2005-07-07  Sebastien Pouliot  <[email protected]>
+
+	* HtmlTextWriter.cs: Small fixlet when attribute has no value.
+
+2005-07-07  Miguel de Icaza  <[email protected]>
+
+	* HtmlTextWriter.cs: Return the stuff in lowercase to pass the
+	tests. 
+
+	* StateBag.cs: Add NET_2_0 SetDirty method to get the build
+	going. 
+
+2005-07-07  Sebastien Pouliot  <[email protected]>
+
+	* HtmlTextWriter.cs: Small fixlet (required for the unit tests).
+
+2005-07-06  Ben Maurer  <[email protected]>
+
+	* HtmlTextWriter.cs: Make sure to clear attributes when they are
+	written.
+
+	* StateBag.cs: New impl
 
 2005-06-25 Gonzalo Paniagua Javier <[email protected]>
 

Fișier diff suprimat deoarece este prea mare
+ 520 - 249
mcs/class/System.Web/System.Web.UI/Control.cs


+ 28 - 6
mcs/class/System.Web/System.Web.UI/CssStyleCollection.cs

@@ -6,8 +6,7 @@
 // 	Gonzalo Paniagua ([email protected])
 //
 // (C) 2002 Ximian, Inc. (http://www.ximian.com)
-//
-
+// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -29,7 +28,7 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-using System;
+using System.IO;
 using System.Collections;
 using System.Text;
 
@@ -82,10 +81,10 @@ namespace System.Web.UI {
 
 		internal string BagToString ()
 		{
-			StringBuilder sb = new StringBuilder ();
+			HtmlTextWriter writer = new HtmlTextWriter (new StringWriter ());
 			foreach (string k in style.Keys)
-				sb.AppendFormat ("{0}: {1}; ", k, style [k]);
-			return sb.ToString ();
+				writer.WriteStyleAttribute ((k as string), (style [k] as string));
+			return writer.InnerWriter.ToString ();
 		}
 		
 		public int Count
@@ -140,6 +139,29 @@ namespace System.Web.UI {
 					bag ["style"] = BagToString ();
 			}
 		}
+#if NET_2_0
+		public string this [HtmlTextWriterStyle key] {
+			get {
+				return style [HtmlTextWriter.StaticGetStyleName (key)] as string;
+			}
+			set {
+				Add (HtmlTextWriter.StaticGetStyleName (key), value);
+			}
+		}
+
+		public string Value {
+			get { return BagToString (); }
+			set {
+				Clear ();
+				FillStyle (value);
+			}
+		}
+
+		public void Remove (HtmlTextWriterStyle key)
+		{
+			Remove (HtmlTextWriter.StaticGetStyleName (key));
+		}
+#endif
 	}
 }
 

+ 21 - 1
mcs/class/System.Web/System.Web.UI/DataBoundLiteralControl.cs

@@ -37,6 +37,9 @@ namespace System.Web.UI {
 
 	[ToolboxItem(false)]
 	public sealed class DataBoundLiteralControl : Control
+#if NET_2_0
+	, ITextControl
+#endif
 	{
 		private string [] staticLiterals;
 		private string [] dataBoundLiterals;
@@ -80,7 +83,12 @@ namespace System.Web.UI {
 			}
 		}
 
-		protected override void Render (HtmlTextWriter output)
+#if NET_2_0
+		protected internal
+#else
+		protected
+#endif
+		override void Render (HtmlTextWriter output)
 		{
 			output.Write (Text);
 		}
@@ -101,6 +109,18 @@ namespace System.Web.UI {
 		{
 			staticLiterals [index] = s;
 		}
+
+#if NET_2_0
+		string ITextControl.Text 
+		{
+			get {
+				throw new NotImplementedException ();
+			}
+			set {
+				throw new NotImplementedException ();
+			}
+		}
+#endif		
 	}
 }
 

+ 6 - 1
mcs/class/System.Web/System.Web.UI/DesignerDataBoundLiteralControl.cs

@@ -65,7 +65,12 @@ namespace System.Web.UI
 				text = (string) savedState;
 		}
 
-		protected override void Render (HtmlTextWriter output)
+#if NET_2_0
+		protected internal
+#else
+		protected
+#endif
+		override void Render (HtmlTextWriter output)
 		{
 			output.Write (text);
 		}

+ 3 - 1
mcs/class/System.Web/System.Web.UI/KeyedList.cs

@@ -74,7 +74,9 @@ namespace System.Web.UI
 		public void Remove (object key)
 		{
 			objectTable.Remove (key);
-			objectList.RemoveAt (IndexOf (key));
+			int index = IndexOf (key);
+			if (index >= 0)
+				objectList.RemoveAt (index);
 		}
 
 		public void RemoveAt (int idx)

+ 9 - 1
mcs/class/System.Web/System.Web.UI/LiteralControl.cs

@@ -38,6 +38,9 @@ namespace System.Web.UI
 {
 	[ToolboxItem(false)]
         public class LiteralControl : Control
+#if NET_2_0
+	, ITextControl
+#endif	
         {
                 string _text;
 
@@ -57,7 +60,12 @@ namespace System.Web.UI
                         }
                 }
 
-                protected override void Render (HtmlTextWriter writer)
+#if NET_2_0
+		protected internal
+#else		
+                protected
+#endif		
+		override void Render (HtmlTextWriter writer)
                 {
                         writer.Write (_text);
                 }

+ 32 - 1
mcs/class/System.Web/System.Web.UI/PersistChildrenAttribute.cs

@@ -35,12 +35,24 @@ namespace System.Web.UI {
 	public sealed class PersistChildrenAttribute : Attribute
 	{
 		bool persist;
+#if NET_2_0
+		bool usesCustomPersistence;
+#endif		
 		
 		public PersistChildrenAttribute (bool persist)
 		{
 			this.persist = persist;
 		}
 
+#if NET_2_0
+		public PersistChildrenAttribute (bool persist,
+						 bool usesCustomPersistence)
+		{
+			this.persist = persist;
+			this.usesCustomPersistence = usesCustomPersistence;
+		}
+#endif		
+		
 		public static readonly PersistChildrenAttribute Default = new PersistChildrenAttribute (true);
 		public static readonly PersistChildrenAttribute Yes = new PersistChildrenAttribute (true);
 		public static readonly PersistChildrenAttribute No = new PersistChildrenAttribute (false);
@@ -49,12 +61,27 @@ namespace System.Web.UI {
 			get { return persist; }
 		}
 
+#if NET_2_0
+		public bool UsesCustomPersistence 
+		{
+			get {
+				return (usesCustomPersistence);
+			}
+		}
+#endif
+		
 		public override bool Equals (object obj)
 		{
 			if (!(obj is PersistChildrenAttribute))
 				return false;
 
-			return (((PersistChildrenAttribute) obj).persist == persist);
+			PersistChildrenAttribute pobj = obj as PersistChildrenAttribute;
+
+			return (pobj.persist == persist
+#if NET_2_0
+				&& pobj.usesCustomPersistence == usesCustomPersistence
+#endif
+				);
 		}
 
 		public override int GetHashCode ()
@@ -64,6 +91,10 @@ namespace System.Web.UI {
 
 		public override bool IsDefaultAttribute ()
 		{
+			/* No idea what the usesCustomPersistence
+			 * default is (I assume false, but its not
+			 * documented)
+			 */
 			return (persist == true);
 		}
 	}

+ 25 - 24
mcs/class/System.Web/System.Web.UI/StateManagedCollection.cs

@@ -3,10 +3,10 @@
 //
 // Authors:
 //	Ben Maurer ([email protected])
+//	Sebastien Pouliot  <[email protected]>
 //
 // (C) 2003 Ben Maurer
-//
-
+// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -29,19 +29,29 @@
 //
 
 #if NET_2_0
+
 using System.Collections;
-using System.Collections.Specialized;
-using System.Text;
 
 namespace System.Web.UI {
-	public abstract class StateManagedCollection : IList, IStateManager
-	{
+
+	public abstract class StateManagedCollection : IList, IStateManager {
+
 		ArrayList items = new ArrayList ();
 		bool saveEverything = false;
 		IStateManager[] originalItems;
-		
-		protected abstract object CreateKnownType (int index);
+
+		protected virtual object CreateKnownType (int index)
+		{
+			return null;
+		}
+
+		public void SetDirty ()
+		{
+			saveEverything = true;
+		}
+
 		protected abstract void SetDirtyObject (object o);
+
 		protected virtual Type [] GetKnownTypes ()
 		{
 			return null;
@@ -206,24 +216,12 @@ namespace System.Web.UI {
 				saveEverything = true;
 		}
 		
-		public int IndexOf (object o)
-		{
-			if (o == null)
-				return -1;
-			return items.IndexOf (o);
-		}
-		
-		public bool Contains (object o)
-		{
-			return o != null && items.Contains (o);
-		}
-		
 		public IEnumerator GetEnumerator ()
 		{
 			return items.GetEnumerator ();
 		}
 		
-		void System.Collections.ICollection.CopyTo (Array array, int index)
+		public void CopyTo (Array array, int index)
 		{
 			items.CopyTo (array, index);
 		}
@@ -268,8 +266,11 @@ namespace System.Web.UI {
 			if (value == null)
 				return;
 			OnValidate (value);
-			((IList)this).RemoveAt (IndexOf (value));
+			int i = items.IndexOf (value);
+			if (i >= 0)
+				((IList)this).RemoveAt (i);
 		}
+
 		void IList.RemoveAt (int index)
 		{
 			object o = items [index];
@@ -293,7 +294,7 @@ namespace System.Web.UI {
 				return false;
 			
 			OnValidate (value);
-			return Contains (value);
+			return items.Contains (value);
 		}
 		
 		int IList.IndexOf (object value)
@@ -302,7 +303,7 @@ namespace System.Web.UI {
 				return -1;
 			
 			OnValidate (value);
-			return IndexOf (value);
+			return items.IndexOf (value);
 		}
 
 		public int Count {

+ 4 - 9
mcs/class/System.Web/System.Web.UI/UrlPropertyAttribute.cs

@@ -4,9 +4,7 @@
 // Authors:
 //	Sanjay Gupta ([email protected])
 //
-// (C) 2004 Novell, Inc. (http://www.novell.com)
-//
-
+// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -27,8 +25,9 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
+
 #if NET_2_0
-using System;
+
 using System.ComponentModel;
 
 namespace System.Web.UI {
@@ -51,11 +50,6 @@ namespace System.Web.UI {
 			this.filter = filter;
 		}
 
-		public UrlPropertyAttribute (string filter, UrlTypes urlTypes) 
-		{
-			this.filter = filter;
-			this.urlTypes = urlTypes;
-		}
 
 		public string Filter { 
 			get { return filter; } 
@@ -63,6 +57,7 @@ namespace System.Web.UI {
 
 		public UrlTypes AllowedTypes {
 			get { return urlTypes; }
+			set { urlTypes = value; }
 		}
 		
 		public override bool Equals (object obj)

+ 27 - 2
mcs/class/System.Web/System.Web.UI/UserControl.cs

@@ -39,10 +39,19 @@ namespace System.Web.UI
 {
 	[ControlBuilder (typeof (UserControlControlBuilder))]
 	[DefaultEvent ("Load"), DesignerCategory ("ASPXCodeBehind")]
-	[ToolboxItem (false), ParseChildren (true)]
+	[ToolboxItem (false)]
 	[Designer ("System.Web.UI.Design.UserControlDesigner, " + Consts.AssemblySystem_Design, typeof (IDesigner))]
 	[RootDesignerSerializer ("Microsoft.VSDesigner.WebForms.RootCodeDomSerializer, " + Consts.AssemblyMicrosoft_VSDesigner, "System.ComponentModel.Design.Serialization.CodeDomSerializer, " + Consts.AssemblySystem_Design, true)]
+#if NET_2_0
+	[Designer ("Microsoft.VisualStudio.Web.WebForms.WebFormDesigner, " + Consts.AssemblyMicrosoft_VisualStudio_Web, typeof (IRootDesigner))]
+	[ParseChildren (true, "", ChildControlType = typeof (Control))]
+#else
+	[ParseChildren (true)]
+#endif
 	public class UserControl : TemplateControl, IAttributeAccessor, IUserControlDesignerAccessor
+#if NET_2_0
+	, INamingContainer
+#endif
 	{
 		private bool initialized;
 		private AttributeCollection attributes;
@@ -96,6 +105,17 @@ namespace System.Web.UI
 			}
 		}
 
+#if NET_2_0
+		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
+		[Browsable (false)]
+		public ControlCachePolicy CachePolicy 
+		{
+			get {
+				throw new NotImplementedException ();
+			}
+		}
+#endif		
+
 		[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
 		[Browsable (false)]
 		public bool IsPostBack
@@ -203,7 +223,12 @@ namespace System.Web.UI
 
 		}
 
-		protected override void OnInit (EventArgs e)
+#if NET_2_0
+		protected internal
+#else
+		protected
+#endif
+		override void OnInit (EventArgs e)
 		{
 			InitializeAsUserControl (Page);
 

+ 6 - 3
mcs/class/System.Web/System.Web.UI/WebResourceAttribute.cs

@@ -27,10 +27,14 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-#if NET_2_0
 namespace System.Web.UI {
 	[AttributeUsage (AttributeTargets.Assembly, AllowMultiple = true)]
-	public sealed class WebResourceAttribute : Attribute {
+#if NET_2_0
+	public
+#else
+	internal
+#endif
+	sealed class WebResourceAttribute : Attribute {
 		public WebResourceAttribute (string webResource, string contentType) : this (webResource, contentType, false) {}
 		public WebResourceAttribute (string webResource, string contentType, bool performSubstitution)
 		{
@@ -47,4 +51,3 @@ namespace System.Web.UI {
 		string webResource, contentType;
 	}
 }
-#endif

+ 8 - 2
mcs/class/System.Web/System.Web.Util/ChangeLog

@@ -1,6 +1,12 @@
-2005-07-18  Eyal Alalouf  <eyala@mainsoft.com>
+2005-07-15  Ben Maurer  <bmaurer@ximian.com>
 
-	* Icalls.jvm.cs: Added TARGET_JVM Grasshopper specific version of the file.
+	* DataSourceHelper.cs: Obsolete
+
+	* DataSourceResolver.cs: Moved from DataSourceHelper.
+
+2005-07-14  Ben Maurer  <[email protected]>
+
+	* DataSourceHelper.cs: Helper method used for data binding.
 
 2005-06-26 Gonzalo Paniagua Javier <[email protected]>
 

+ 38 - 27
mcs/class/System.Web/System.Web.dll.sources

@@ -1,18 +1,17 @@
 Assembly/AssemblyInfo.cs
-../../build/common/Consts.cs
+Assembly/Consts.cs
 ../../build/common/Locale.cs
 ../../build/common/MonoTODOAttribute.cs
 System.Web.Administration/WebAdminUserControl.cs
 System.Web/ApplicationShutdownReason.cs
 System.Web/BeginEventHandler.cs
 System.Web.Caching/Cache.cs
-System.Web.Caching/CacheDefinitions.cs
 System.Web.Caching/CacheDependency.cs
+System.Web.Caching/CacheItemPriority.cs
+System.Web.Caching/CacheItemRemovedCallback.cs
+System.Web.Caching/CacheItemRemovedReason.cs
 System.Web.Caching/CachedRawResponse.cs
 System.Web.Caching/CachedVaryBy.cs
-System.Web.Caching/CacheEntry.cs
-System.Web.Caching/CacheExpires.cs
-System.Web.Caching/ExpiresBuckets.cs
 System.Web.Caching/OutputCacheModule.cs
 System.Web/CapabilitiesLoader.cs
 System.Web.Compilation/AspComponentFoundry.cs
@@ -53,7 +52,6 @@ System.Web.Configuration/AuthorizationRuleAction.cs
 System.Web.Configuration/BuildProviderAppliesTo.cs
 System.Web.Configuration/BuildProviderCollection.cs
 System.Web.Configuration/BuildProvider.cs
-System.Web.Configuration/ClientTargetSectionHandler.cs
 System.Web.Configuration/CodeSubDirectoriesCollection.cs
 System.Web.Configuration/CodeSubDirectory.cs
 System.Web.Configuration/CompilationConfiguration.cs
@@ -71,8 +69,6 @@ System.Web.Configuration/FormsProtectionEnum.cs
 System.Web.Configuration/GlobalizationConfiguration.cs
 System.Web.Configuration/GlobalizationConfigurationHandler.cs
 System.Web.Configuration/HandlerFactoryConfiguration.cs
-System.Web.Configuration/HandlerFactoryProxy.cs
-System.Web.Configuration/HandlerItem.cs
 System.Web.Configuration/HttpCapabilitiesBase.cs
 System.Web.Configuration/HttpConfigurationContext.cs
 System.Web.Configuration/HttpHandlersSectionHandler.cs
@@ -85,7 +81,6 @@ System.Web.Configuration/MachineKeyConfig.cs
 System.Web.Configuration/MachineKeyConfigHandler.cs
 System.Web.Configuration/MachineKeyValidation.cs
 System.Web.Configuration/MembershipSection.cs
-System.Web.Configuration/ModuleItem.cs
 System.Web.Configuration/ModulesConfiguration.cs
 System.Web.Configuration/PagesConfiguration.cs
 System.Web.Configuration/PagesConfigurationHandler.cs
@@ -129,7 +124,6 @@ System.Web/HtmlizedException.cs
 System.Web/HttpApplication.cs
 System.Web/HttpApplicationFactory.cs
 System.Web/HttpApplicationState.cs
-System.Web/HttpAsyncResult.cs
 System.Web/HttpBrowserCapabilities.cs
 System.Web/HttpCacheability.cs
 System.Web/HttpCachePolicy.cs
@@ -147,29 +141,25 @@ System.Web/HttpDataTransferMode.cs
 System.Web/HttpException.cs
 System.Web/HttpFileCollection.cs
 System.Web/HttpForbiddenHandler.cs
-System.Web/HttpHelper.cs
 System.Web/HttpMethodNotAllowedHandler.cs
 System.Web/HttpModuleCollection.cs
-System.Web/HttpMultipartContentParser.cs
 System.Web/HttpParseException.cs
 System.Web/HttpPostedFile.cs
 System.Web/HttpRequest.cs
 System.Web/HttpRequestPriority.cs
-System.Web/HttpRequestStream.cs
 System.Web/HttpRequestValidationException.cs
-System.Web/HttpResponse.cs
 System.Web/HttpResponseHeader.cs
 System.Web/HttpResponseStream.cs
-System.Web/HttpResponseStreamProxy.cs
+System.Web/HttpResponse.cs
 System.Web/HttpRuntime.cs
 System.Web/HttpServerUtility.cs
 System.Web/HttpStaticObjectsCollection.cs
 System.Web/HttpUnhandledException.cs
 System.Web/HttpUtility.cs
 System.Web/HttpValidationStatus.cs
-System.Web/HttpValueCollection.cs
 System.Web/HttpWorkerRequest.cs
 System.Web/HttpWriter.cs
+System.Web/IntPtrStream.cs
 System.Web/IHttpAsyncHandler.cs
 System.Web/IHttpHandler.cs
 System.Web/IHttpHandlerFactory.cs
@@ -214,8 +204,10 @@ System.Web/ProcessModelInfo.cs
 System.Web/ProcessShutdownReason.cs
 System.Web/ProcessStatus.cs
 System.Web.Profile/ProfileAuthenticationOption.cs
+System.Web.Profile/ProfileInfo.cs
 System.Web/QueueManager.cs
 System.Web/ReusableMemoryStream.cs
+System.Web.Security/ActiveDirectoryConnectionProtection.cs
 System.Web.Security/ActiveDirectoryMembershipProvider.cs
 System.Web.Security/AnonymousIdentificationEventArgs.cs
 System.Web.Security/AnonymousIdentificationEventHandler.cs
@@ -234,12 +226,10 @@ System.Web.Security/FormsIdentity.cs
 System.Web.Security/MembershipCreateStatus.cs
 System.Web.Security/MembershipCreateUserException.cs
 System.Web.Security/Membership.cs
-System.Web.Security/MembershipOnlineStatus.cs
 System.Web.Security/MembershipPasswordException.cs
 System.Web.Security/MembershipPasswordFormat.cs
 System.Web.Security/MembershipProviderCollection.cs
 System.Web.Security/MembershipProvider.cs
-System.Web.Security/MembershipSortOptions.cs
 System.Web.Security/MembershipUserCollection.cs
 System.Web.Security/MembershipUser.cs
 System.Web.Security/MembershipValidatePasswordEventHandler.cs
@@ -298,6 +288,8 @@ System.Web/TraceContext.cs
 System.Web/TraceData.cs
 System.Web/TraceManager.cs
 System.Web/TraceMode.cs
+System.Web.UI.Adapters/ControlAdapter.cs
+System.Web.UI.Adapters/PageAdapter.cs
 System.Web.UI.Adapters/WmlPostFieldType.cs
 System.Web.UI/ApplicationFileParser.cs
 System.Web.UI/AttributeCollection.cs
@@ -317,6 +309,7 @@ System.Web.UI/ConflictOptions.cs
 System.Web.UI/ConstructorNeedsTagAttribute.cs
 System.Web.UI/ControlBuilderAttribute.cs
 System.Web.UI/ControlBuilder.cs
+System.Web.UI/ControlCachePolicy.cs
 System.Web.UI/ControlCollection.cs
 System.Web.UI/Control.cs
 System.Web.UI/ControlSkinProc.cs
@@ -353,6 +346,7 @@ System.Web.UI.HtmlControls/HtmlButton.cs
 System.Web.UI.HtmlControls/HtmlContainerControl.cs
 System.Web.UI.HtmlControls/HtmlControlBuilder.cs
 System.Web.UI.HtmlControls/HtmlControl.cs
+System.Web.UI.HtmlControls/HtmlEmptyTagControlBuilder.cs
 System.Web.UI.HtmlControls/HtmlForm.cs
 System.Web.UI.HtmlControls/HtmlGenericControl.cs
 System.Web.UI.HtmlControls/HtmlHeadBuilder.cs
@@ -442,6 +436,7 @@ System.Web.UI/OutputCacheLocation.cs
 System.Web.UI/Page.cs
 System.Web.UI/PageHandlerFactory.cs
 System.Web.UI/PageParser.cs
+System.Web.UI/PageStatePersister.cs
 System.Web.UI/Pair.cs
 System.Web.UI/ParseChildrenAttribute.cs
 System.Web.UI/PartialCachingAttribute.cs
@@ -478,12 +473,16 @@ System.Web.UI/UrlTypes.cs
 System.Web.UI/UserControlControlBuilder.cs
 System.Web.UI/UserControl.cs
 System.Web.UI/UserControlParser.cs
-System.Web.UI/Utils.cs
 System.Web.UI/ValidationPropertyAttribute.cs
 System.Web.UI/ValidatorCollection.cs
 System.Web.UI/VerificationConditionalOperator.cs
 System.Web.UI/VerificationReportLevel.cs
 System.Web.UI/VerificationRule.cs
+System.Web.UI.WebControls.Adapters/DataBoundControlAdapter.cs
+System.Web.UI.WebControls.Adapters/HideDisabledControlAdapter.cs
+System.Web.UI.WebControls.Adapters/HierarchicalDataBoundControlAdapter.cs
+System.Web.UI.WebControls.Adapters/MenuAdapter.cs
+System.Web.UI.WebControls.Adapters/WebControlAdapter.cs
 System.Web.UI.WebControls/AccessDataSource.cs
 System.Web.UI.WebControls/AccessDataSourceView.cs
 System.Web.UI.WebControls/AdCreatedEventArgs.cs
@@ -558,13 +557,11 @@ System.Web.UI.WebControls/DataGridItemCollection.cs
 System.Web.UI.WebControls/DataGridItem.cs
 System.Web.UI.WebControls/DataGridItemEventArgs.cs
 System.Web.UI.WebControls/DataGridItemEventHandler.cs
-System.Web.UI.WebControls/DataGridLinkButton.cs
 System.Web.UI.WebControls/DataGridPageChangedEventArgs.cs
 System.Web.UI.WebControls/DataGridPageChangedEventHandler.cs
 System.Web.UI.WebControls/DataGridPagerStyle.cs
 System.Web.UI.WebControls/DataGridSortCommandEventArgs.cs
 System.Web.UI.WebControls/DataGridSortCommandEventHandler.cs
-System.Web.UI.WebControls/DataGridTableInternal.cs
 System.Web.UI.WebControls/DataKeyArray.cs
 System.Web.UI.WebControls/DataKeyCollection.cs
 System.Web.UI.WebControls/DataKey.cs
@@ -575,7 +572,6 @@ System.Web.UI.WebControls/DataListItemCollection.cs
 System.Web.UI.WebControls/DataListItem.cs
 System.Web.UI.WebControls/DataListItemEventArgs.cs
 System.Web.UI.WebControls/DataListItemEventHandler.cs
-System.Web.UI.WebControls/DataSourceInternal.cs
 System.Web.UI.WebControls/DayNameFormat.cs
 System.Web.UI.WebControls/DayRenderEventArgs.cs
 System.Web.UI.WebControls/DayRenderEventHandler.cs
@@ -684,7 +680,6 @@ System.Web.UI.WebControls/LabelControlBuilder.cs
 System.Web.UI.WebControls/Label.cs
 System.Web.UI.WebControls/LinkButtonControlBuilder.cs
 System.Web.UI.WebControls/LinkButton.cs
-System.Web.UI.WebControls/LinkButtonInternal.cs
 System.Web.UI.WebControls/ListBox.cs
 System.Web.UI.WebControls/ListControl.cs
 System.Web.UI.WebControls/ListItemCollection.cs
@@ -696,8 +691,14 @@ System.Web.UI.WebControls/LiteralControlBuilder.cs
 System.Web.UI.WebControls/Literal.cs
 System.Web.UI.WebControls/LiteralMode.cs
 System.Web.UI.WebControls/Localize.cs
+System.Web.UI.WebControls/Login.cs
+System.Web.UI.WebControls/LoginCancelEventArgs.cs
+System.Web.UI.WebControls/LoginCancelEventHandler.cs
 System.Web.UI.WebControls/LoginFailureAction.cs
+System.Web.UI.WebControls/LoginName.cs
+System.Web.UI.WebControls/LoginStatus.cs
 System.Web.UI.WebControls/LoginTextLayout.cs
+System.Web.UI.WebControls/LoginView.cs
 System.Web.UI.WebControls/LogoutAction.cs
 System.Web.UI.WebControls/MailMessageEventArgs.cs
 System.Web.UI.WebControls/MailMessageEventHandler.cs
@@ -759,6 +760,8 @@ System.Web.UI.WebControls/RepeaterItemEventHandler.cs
 System.Web.UI.WebControls/RepeatInfo.cs
 System.Web.UI.WebControls/RepeatLayout.cs
 System.Web.UI.WebControls/RequiredFieldValidator.cs
+System.Web.UI.WebControls/RoleGroup.cs
+System.Web.UI.WebControls/RoleGroupCollection.cs
 System.Web.UI.WebControls/ScrollBars.cs
 System.Web.UI.WebControls/SelectedDatesCollection.cs
 System.Web.UI.WebControls/SendMailErrorEventArgs.cs
@@ -778,8 +781,13 @@ System.Web.UI.WebControls/SiteMapPath.cs
 System.Web.UI.WebControls/SortDirection.cs
 System.Web.UI.WebControls/SqlDataSourceCommandEventArgs.cs
 System.Web.UI.WebControls/SqlDataSourceCommandEventHandler.cs
+System.Web.UI.WebControls/SqlDataSourceCommandType.cs
+System.Web.UI.WebControls/SqlDataSourceFilteringEventHandler.cs
+System.Web.UI.WebControls/SqlDataSourceFilteringEventArgs.cs
 System.Web.UI.WebControls/SqlDataSource.cs
 System.Web.UI.WebControls/SqlDataSourceMode.cs
+System.Web.UI.WebControls/SqlDataSourceSelectingEventHandler.cs
+System.Web.UI.WebControls/SqlDataSourceSelectingEventArgs.cs
 System.Web.UI.WebControls/SqlDataSourceStatusEventArgs.cs
 System.Web.UI.WebControls/SqlDataSourceStatusEventHandler.cs
 System.Web.UI.WebControls/SqlDataSourceView.cs
@@ -792,12 +800,15 @@ System.Web.UI.WebControls/TableCellCollection.cs
 System.Web.UI.WebControls/TableCellControlBuilder.cs
 System.Web.UI.WebControls/TableCell.cs
 System.Web.UI.WebControls/Table.cs
+System.Web.UI.WebControls/TableFooterRow.cs
 System.Web.UI.WebControls/TableHeaderCell.cs
+System.Web.UI.WebControls/TableHeaderRow.cs
 System.Web.UI.WebControls/TableHeaderScope.cs
 System.Web.UI.WebControls/TableItemStyle.cs
 System.Web.UI.WebControls/TableRowCollection.cs
 System.Web.UI.WebControls/TableRow.cs
 System.Web.UI.WebControls/TableRowSection.cs
+System.Web.UI.WebControls/TableSectionStyle.cs
 System.Web.UI.WebControls/TableStyle.cs
 System.Web.UI.WebControls/TargetConverter.cs
 System.Web.UI.WebControls/TemplateColumn.cs
@@ -851,17 +862,17 @@ System.Web.UI.WebControls.WebParts/IVersioningPersonalizable.cs
 System.Web.UI.WebControls.WebParts/IWebActionable.cs
 System.Web.UI.WebControls.WebParts/IWebPart.cs
 System.Web.UI.WebControls.WebParts/IWebPartHttpHandler.cs
+System.Web.UI.WebControls.WebParts/Part.cs
 System.Web.UI.WebControls.WebParts/PartChromeState.cs
 System.Web.UI.WebControls.WebParts/PartChromeType.cs
-System.Web.UI.WebControls.WebParts/Part.cs
 System.Web.UI.WebControls.WebParts/PersonalizationScope.cs
 System.Web.UI.WebControls.WebParts/ProviderConnectionPoint.cs
 System.Web.UI.WebControls.WebParts/TypeCollection.cs
+System.Web.UI.WebControls.WebParts/WebPart.cs
 System.Web.UI.WebControls.WebParts/WebPartAuthorizationEventArgs.cs
 System.Web.UI.WebControls.WebParts/WebPartAuthorizationEventHandler.cs
 System.Web.UI.WebControls.WebParts/WebPartCancelEventArgs.cs
 System.Web.UI.WebControls.WebParts/WebPartCancelEventHandler.cs
-System.Web.UI.WebControls.WebParts/WebPart.cs
 System.Web.UI.WebControls.WebParts/WebPartEventArgs.cs
 System.Web.UI.WebControls.WebParts/WebPartEventHandler.cs
 System.Web.UI.WebControls.WebParts/WebPartExportMode.cs
@@ -895,6 +906,7 @@ System.Web.UI/XhtmlMobileDocType.cs
 System.Web.UI/XPathBinder.cs
 System.Web.Util/AltSerialization.cs
 System.Web.Util/DataSourceHelper.cs
+System.Web.Util/DataSourceResolver.cs
 System.Web.Util/ICalls.cs
 System.Web.Util/NativeFileChangeEventHandler.cs
 System.Web.Util/StrUtils.cs
@@ -903,11 +915,10 @@ System.Web.Util/TransactedCallback.cs
 System.Web.Util/Transactions.cs
 System.Web.Util/UrlUtils.cs
 System.Web.Util/WebEncoding.cs
-System.Web.Util/WebEqualComparer.cs
-System.Web.Util/WebHashCodeProvider.cs
 System.Web.Util/WebTrace.cs
 System.Web.Util/WorkItemCallback.cs
 System.Web.Util/WorkItem.cs
 System.Web/WebCategoryAttribute.cs
+System.Web/WebROCollection.cs
 System.Web/WebSysDescriptionAttribute.cs
 System.Web/XmlSiteMapProvider.cs

+ 691 - 24
mcs/class/System.Web/System.Web/ChangeLog

@@ -1,41 +1,708 @@
-2005-07-26  Eyal Alalouf  <[email protected]>
-	* HttpResponse.cs: OnCookieAdd should not be TARGET_J2EE specific
+2005-08-26 Gonzalo Paniagua Javier <[email protected]>
 
-2005-07-26  Eyal Alalouf  <[email protected]>
-	* HttpRuntime.cs: Under TARGET_J2EE dispose the cache as well in Dispose.
+	* HttpRequest.cs:
+	* IntPtrStream.cs: now we only have a read-only MemoryStream or an
+	IntPtrStream. The copy is moved into HttpRequest.
+
+2005-08-26  Sebastien Pouliot  <[email protected]>
+
+	* WebCategoryAttribute.cs: New. Required internal attribute.
+	* WebSysDescriptionAttribute.cs: New. Required internal attribute.
+
+2005-08-26  Jackson Harper  <[email protected]>
+
+	* HttpResponseStream.cs: Use GetBuffer so the memory isn't
+	duplicated.
+
+2005-08-26 Gonzalo Paniagua Javier <[email protected]>
+
+	* HttpApplication.cs: GetHandler might return null when, for example,
+	a web service fails, but that does not mean that returning a null
+	handler should throw another exception, as the web service code
+	serialized the error as a faultString. So if the handler is null, just
+	don't call ProcessRequest and keep going.
+
+2005-08-26  Jackson Harper  <[email protected]>
+
+	* HttpResponse.cs: Send the cached headers if this is a cached
+	response. Save the headers, date header, and page data. Fix a typo.
+	* HttpResponseStream.cs: Add new accesor to get a byte [] of the
+	page data.
+
+2005-08-26 Gonzalo Paniagua Javier <[email protected]>
+
+	* HttpWorkerRequest.cs: SetEndOfSendNotification is a noop. No matter
+	what callback you use that never gets called. In XSP I actually
+	implement something for this method.
+	* HttpServerUtility.cs: unused variable.
+
+2005-08-26 Gonzalo Paniagua Javier <[email protected]>
+
+	* HttpInputStream.cs: new ctor that takes a byte [].
+	* IntPtrStream.cs: make it work on a byte [] too.
+
+	* HttpRequest.cs:
+	(ContentLength): return 0 for negative numbers or error parsing, but
+	keep content_length negative in those cases.
+	(MakeInputStream): when there's no content-length (or it's negative),
+	we still read the request into a MemoryStream. Use
+	IsEntireEntityIsPreloaded() as a fast path.
+
+2005-08-25  Sebastien Pouliot  <[email protected]>
+
+	* HttpClientCertificate.cs: On 1.x the .ctor throws a 
+	ArgumentNullException (but 2.0 throws a NRE).
+
+2005-08-25 Gonzalo Paniagua Javier <[email protected]>
+
+	* HttpRequest.cs: HttpMethod deserves its own field. Fix IsLocal.
+
+2005-08-25  Chris Toshok  <[email protected]>
+
+	* HttpApplication.cs (IsReusable): return true.
+	(InitOnce): remove the initialization of handler_factory from
+	here.
+	(GetHandler) and move it here, so we make sure to load handlers
+	from all needed web.config files.
+
+2005-08-25 Gonzalo Paniagua Javier <[email protected]>
+
+	* HttpServerUtility.cs: use GetHandler().
+	* HttpApplication.cs: remove obsolete method. Now Transfe/Execute work.
+
+2005-08-25 Gonzalo Paniagua Javier <[email protected]>
+
+	* HttpApplication.cs: no need for the local var. here.
+
+2005-08-25  Chris Toshok  <[email protected]>
+
+	* HttpApplication.cs (InitOnce): move the initialization of
+	modules above the call to HttpApplicationFactory.AttachEvents,
+	since that method accesses HttpApplication.Modules.  Fixes
+	nGallery.
+	(IsReusable): mark TODO.
+
+2005-08-23 Gonzalo Paniagua Javier <[email protected]>
+
+	* HttpResponseHeader.cs: removed obsolete class.
+	* HttpResponse.cs: no more 'obsolete' warnings.
+
+2005-08-23 Gonzalo Paniagua Javier <[email protected]>
+
+	* HttpRuntime.cs: implemeted some missing properties.
+
+2005-08-22 Gonzalo Paniagua Javier <[email protected]>
+
+	* HttpResponse.cs: implemented RemoveOutputCacheItem().
+
+2005-08-22 Gonzalo Paniagua Javier <[email protected]>
+
+	* HttpApplication.cs: implemented GetVaryByCustomString().
+
+2005-08-22 Gonzalo Paniagua Javier <[email protected]>
+
+	* HttpRequest.cs: implemented SetHeader (allows adding a header
+	circumventing the read-only protection of the collection) and SetForm,
+	which just assigns a value of the 'form' collection.
+	* HttpServerUtility.cs: NameValueCollection -> WebROCollection.
+
+2005-08-22 Gonzalo Paniagua Javier <[email protected]>
+
+	* HttpContext.cs:
+	* HttpRequest.cs: implemented RewritePath and supporting methods.
+
+2005-08-22  Sebastien Pouliot  <[email protected]>
+
+	* HttpRequest.cs: Avoid NRE if work_request if null in the ctor.
+	* HttpResponse.cs: Avoid NRE if work_request if null in the ctor.
+
+2005-08-20 Gonzalo Paniagua Javier <[email protected]>
+
+	* HttpApplication.cs: if there's any exception thrown when getting the
+	handler, don't add an extra error to the context, as we already have
+	one.
+
+2005-08-20 Gonzalo Paniagua Javier <[email protected]>
+
+	* HttpWriter.cs:
+	* HttpResponse.cs:
+	* HttpWorkerRequest.cs:
+	* HttpApplication.cs: added mising attributes and enabled methods
+	present in 1.1 SP1.
+
+2005-08-20 Gonzalo Paniagua Javier <[email protected]>
+
+	* WebROCollection.cs: a collection that allows setting IsReadOnly.
+	* HttpRequest.cs: implemented MapImageCoordinates(). Use WebROCollection
+	instead of a NameValueCollection in Form, Headers, Params, QueryString.
+
+2005-08-19 Gonzalo Paniagua Javier <[email protected]>
+
+	* HttpInputStream.cs: new copy ctor.
+	* IntPtrStream.cs: getters for base_address and size.
+	* HttpRequest.cs: implemented SaveAs(). Use a wrapper on top of
+	InputStream so that reading POST form or files does not modify the state
+	if InputStream. Don't use uri_builder.Query in QueryStringRaw, as it
+	returns the '?'.
+
+2005-08-18 Gonzalo Paniagua Javier <[email protected]>
+
+	* HttpRequest.cs: implemented UserLanguages and reuse code from
+	AcceptTypes.
+
+2005-08-18 Gonzalo Paniagua Javier <[email protected]>
+
+	* HttpRequest.cs: implemented AcceptTypes.
+
+2005-08-18 Gonzalo Paniagua Javier <[email protected]>
+
+	* HttpRequest.cs: implemented this[] in terms of Params. Don't add the
+	header collection in Params.
+
+2005-08-18 Gonzalo Paniagua Javier <[email protected]>
+
+	* HttpRequest.cs: fix Files property.
+	* HttpApplication.cs: invoke the default authentication event after all 
+	the other auth. modules.
+
+2005-08-18 Gonzalo Paniagua Javier <[email protected]>
+
+	* ServerVariablesCollection.cs: mark the collection as read-only except
+	when we fill it. Add the HTTP_blah key/value pairs too.
+
+2005-08-18  Chris Toshok  <[email protected]>
+
+	* HttpRequest.cs (get_Params): implement.
+
+2005-08-17  Chris Toshok  <[email protected]>
+
+	* HttpResponse.cs: HttpResponse's Cookie's collection acts
+	differently than HttpRequests in that it never returns null from
+	the "this [string]" accessor.
+
+2005-08-17 Gonzalo Paniagua Javier <[email protected]>
+
+	* HttpRequest.cs: check length 0 case when reading a POST.
+
+2005-08-17 Gonzalo Paniagua Javier <[email protected]>
+
+	* HttpContext.cs: added security attributes for User and
+	SkipAuthorization properties.
+	* HttpApplicationFactory.cs: AttachEvents is now called form the
+	application .ctor. Recycle instead of dispose.
+	* HttpApplication.cs: attach events to the newly created application.
+
+2005-08-15  Jackson Harper  <[email protected]>
+
+	* ApplicationShutdownReason.cs: make build
+
+2005-08-15  Miguel de Icaza  <[email protected]>
+
+	* HttpApplication.cs: Update comments
+
+	* HttpPostedFile.cs: Use a substream to read from the uploaded
+	multiparts. 
+
+	* HttpRequest.cs: use new code to read the uploaded files.
+
+2005-08-12  Miguel de Icaza  <[email protected]>
+
+	2.x API fixage and small additions:
+	
+	* HttpResponse.cs: Make constructor internal.
+
+	* HttpRequest.cs (IsLocal): Expose if NET_2.x
+
+	* HttpContext.cs: Remove internal routine.
+
+	* HttpApplication.cs: Add 2.x events. 
+
+	* HttpRequest.cs: Another iFolder issue: I was not setting up the
+	uri_builder here.
+
+	Fixes to get iFolder to work:
+	
+	* HttpApplicationFactory.cs: Set the context when we are initting
+	the application.
+
+	* HttpApplication.cs (SetContext): helper routine. 
+
+	* HttpResponse.cs: Implement the various cache operations:n
+	Expires, ExpiresAbsolute, CacheControl.
+
+	Actually produce the Cache-Control header, the "Cache" property
+	takes precedence over the compatibility settings (Expires,
+	ExpiresAbsolutely and CacheControl). 
+
+	* HttpCachePolicy.cs: Fix style.
+
+	Fix the generation of the headers, use lower-case values, do not
+	add the max-value if the value is zero.  
+
+	Allow for all possible values in SetCacheability. 
+
+	* HttpRuntime.cs (ClrInstallDirectory): Implement.
+
+	* HttpResponseStream.cs: Remove debugging stuff. 
+
+2005-08-11  Miguel de Icaza  <[email protected]>
+
+	Big chunked handling rewrite, and integration of Ben's unmanaged
+	output stream.
+
+	* HttpWriter.cs: Delegate chunked encoding writing to the
+	HttpResponse. 
+
+	* HttpResponse.cs: Rework the chunked encoding system, centralize
+	it all. 
+
+	* HttpResponseStream.cs: Deploy Ben's bucket-base unmanaged
+	buffers code. 
+
+	Changed the way that we handle chunked encoding, centralize it
+	all;  
+
+	Remove a lot of manual handling of buffering turned off, and
+	instead delegate it all to Flush, fixes several issues with the
+	new framework.
+
+	* HttpWorkerRequest.cs (SendResponseFromMemory (IntPtr, int)):
+	Provide a default implementation since currently XSP does not have
+	this method implemented. 
+
+2005-08-11  Sebastien Pouliot  <[email protected]> 
+ 
+	* HttpClientCertificate.cs: Culture insensitive int parsing. Fixed
+	NET_2_0 build.
+
+2005-08-10  Miguel de Icaza  <[email protected]>
+
+	* ServerVariablesCollection.cs: For Ben.  Implement the header
+	fetching here, do not implement it in HttpRequest.cs.
+
+2005-08-10  Sebastien Pouliot  <[email protected]> 
+ 
+	* HttpClientCertificate.cs: Changed IsPresent logic so that new unit
+	tests will work as expected.
+
+2005-08-10  Sebastien Pouliot  <[email protected]>
+
+	* HttpClientCertificate.cs: Implemented, except for validation. Note 
+	that the HttpWorkerRequest derived classes must be updated to supply 
+	the required informations.
+	* HttpRequest.cs: Create an HttpClientCertificate on first call to
+	ClientCertificate.
+
+2005-08-09  Miguel de Icaza  <[email protected]>
+
+	* HttpRuntime.cs (AspInstallDirectory): Implement.
+
+2005-08-09  Sebastien Pouliot  <[email protected]>
+
+	* HttpClientCertificate.cs: New. Stub. It won't be fun to test.
+
+2005-08-04  Ben Maurer  <[email protected]>
+
+	* HttpContext.cs: Kill a NIE.
+
+2005-08-04  Miguel de Icaza  <[email protected]>
+
+	* HttpApplicationFactory.cs: Change "Start" event like the "End"
+	event, and only do this once, when we init the type.
+
+	Fire the "Application_Start" event after we create the type.
+
+2005-08-03 Gonzalo Paniagua Javier <[email protected]>
+
+	* HttpApplication.cs: catch a ThreadAbort (coming from Response.End)
+	here too.
+
+2005-08-03 Gonzalo Paniagua Javier <[email protected]>
+
+	* HttpResponse.cs: setting the Status property resets the
+	StatusDescription (see the tests) and the default value for the
+	description is the one provided by GetStatusDescription() in
+	HttpWorkerRequest.
+
+2005-08-03 Gonzalo Paniagua Javier <[email protected]>
+
+	* HttpRequest.cs: s/boundry/boundary/ and fix typo in array creation.
+
+2005-08-03 Gonzalo Paniagua Javier <[email protected]>
+
+	* HttpApplication.cs: add call to EndOfRequest when everything is said
+	and done.
 
-2005-07-26 Gonzalo Paniagua Javier <[email protected]>
+2005-08-02  Miguel de Icaza  <miguel@novell.com>
 
-	* HttpContext.cs: fixed typo when checking for local address. Patch by
-	Mike Morano that closes bug #75633.
+	* HttpResponse.cs: Stub for TransmitFile.
 
-2005-07-25  Eyal Alalouf  <[email protected]>
+	* HttpRequest.cs (IsAuthenticated): Implement.
 
-	* HttpContext.cs HttpRuntime.cs HttpApplication.cs: timeout is not supported
-	  in TARGET_J2EE configuration (no Thread.Abort support).
+2005-08-01  Miguel de Icaza  <[email protected]>
 
-2005-07-25  Eyal Alalouf  <[email protected]>
+	* HttpRequest.cs: Cope with implementations of HttpWorkerRequest
+	(unpatched xsp) that do not send back the PreloadedEntityBody. 
 
-	* QueueManager.cs: TARGET_J2EE fixes.
-	* HttpApplicationFactory.cs: TARGET_J2EE fixes.
+	* HttpApplication.cs: keep track of the factory. 
+	(Dispose): Only dispose once, clean up other variables, release
+	the ManualResetEvent.
+	Release the handler to the factory.
 
-2005-07-24  Eyal Alalouf  <[email protected]>
-	* HttpRequest.cs: Removed GhFilePath property from TARGET_J2EE.
+	* HttpApplicationFactory.cs: Implement a stack to reuse the
+	applications. 
+
+	* HttpRequest.cs: On uploads, if the ContentLenght is zero, throw
+	a 411.
+
+	* HttpRuntime.cs: Recycle the application after using it.
+
+	* HttpPostedFile.cs: Implement SaveAs.
+
+	* HttpContext.cs: Return the "Server" property.
+
+2005-08-01 Gonzalo Paniagua Javier <[email protected]>
+
+	* HttpServerUtility.cs: implemented missing bits.
+
+2005-08-01 Gonzalo Paniagua Javier <[email protected]>
+
+	* HttpRequest.cs: query string was getting a '?' as the start of the
+	first variable name. This makes the asmx help page work again.
+
+2005-08-01  Miguel de Icaza  <[email protected]>
+
+	* HttpRequest.cs (Cookies, Forms): Add validation.
+	(Forms): Add application/x-www-form-urlencoded parsing and
+	multipart/form-data parsing.
+	
+	(HttpMultiPart): Implement new class to load multi-part data from
+	a stream since there is no longer a byte [] that holds the data
+	(currently we have an unmanaged IntPtr buffer wrapped as a
+	stream).  Also the 2.x framework will add support for large
+	uploads which are sent directly to disk, which will require the
+	FileStream interface. 
+	
+	(Path, PathInfo): Fill a couple more methods to avoid crashes.
+
+	* HttpContext.cs: Fill another one to get web services summary
+	page painting.  The page does not work though.
+	
+	* HttpApplication.cs: Rework the pipeline to not depend on
+	`finally', as `finally' would not be invoked if we choose not to
+	call the pipeline again (which happens if the `stop' variable is
+	set). 
+
+	Instead force the pipeline to go to the shutdown, and yield from
+	there after all the release-state callbacks have been invoked. 
+
+2005-07-31  Miguel de Icaza  <[email protected]>
+
+	* HttpApplication.cs: Remove debugging messages since the compiler
+	bug has been fixed.
+
+	You must use at least mcs from revision 47879 for the application
+	pipeline to work. 
+
+2005-07-30  Miguel de Icaza  <[email protected]>
+
+	* HttpContext.cs: Error handling methods.
+
+	* HttpResponse.cs: Trigger the last event.
+
+	* HttpRuntime.cs: Add queueing of the next request. 
+
+	* HttpApplication.cs: Deploy the new yield-based application
+	pipeline, add error handling to the pipeline.
+	
+	* HttpApplication.cs (AsyncRequestState): Just use the done event
+	from the parent.
+
+2005-07-29  Miguel de Icaza  <[email protected]>
+
+	* HttpResponseStream.cs, HttpRequest.cs: Fix bugs found by nunit.
+
+	* HttpApplication.cs: Fix a race condition. 
+
+	* HttpResponseStream.cs: Fix bug, send the size of the buffer that
+	we have so far instead of the internal size of the buffer.   This
+	will need work later to ensure we enforce the Content-Length
+	maximum output size if set.
+
+	* ServerVariablesCollection.cs: This class now inherits from
+	NameValueCollection, we should probably review what the middle
+	class did, there are no dependencies on it.
+
+	I need to write tests to investigate if something is missing or
+	has changed in this implementation. 
+
+2005-07-27  Miguel de Icaza  <[email protected]>
+
+	* HttpRequest.cs: No happy replies here, send a 411.
+
+2005-07-27  Chris Toshok  <[email protected]>
+
+	* HttpResponseHeader.cs: remove spew.
+	
+2005-07-27  Chris Toshok  <[email protected]>
+
+	* HttpResponseHeader.cs (HttpResponseHandler..ctor): use
+	HttpWorkerRequest.GetKnownResponseHeaderName instead of
+	GetKnownRequestHeaderName.  Fixes Response.Redirect until miguel's
+	new HttpReponse is online.
+
+2005-07-26  Miguel de Icaza  <[email protected]>
+
+	* HttpResponse.cs: use_chunked is now a byte-array, if not null,
+	we use it to hold the size of the chunked so we do not have to
+	allocate many of these. 
+	(SendSize): Helper routine to send the chunked headers.
+	(BinaryWrite): First user of the chunked writer.
+
+	* HttpApplication.cs: Do not crash if they request a Server
+	instance, but throw a NotImplementedException.
+
+	* HttpRequest.cs: fix a few problems exposed by the regression
+	test suite.
+
+	* HttpRequest.cs (Cookies): use Chris' new constructor to get the
+	cookies parsed.
+
+	: The big Uri rework: instead of using QueryString
+	as the population mechanism, populate an UriBuilder from the
+	various HttpWorkerRequest methods.
+
+	* HttpWorkerRequest.cs (GetProtocol): Implement in terms of
+	IsSecure().
+
+	* HttpResponse.cs: Pointed by Ben, Write (null) is a nop instead
+	of a crash.
+
+	* HttpContext.cs: Add a couple of properties to help the 2.x
+	build.
+	
+	* HttpResponse.cs: Make ContentLength a long, add back support for
+	session's app_path_mod.
+	(ApplyAppPathmodifier): put back.
+	(End): Pass a flag to abort so we can tell the exceptions appart
+	in HttpApplication.
+	(WriteHeaders): Send the HTTP status.
+	(Redirect): Implement.
+	(Write): Use the Output property to load writer when needed.
+	
+	* HttpRequest.cs (ctor): Temporary use of InitFromWR, will fix
+	later. 
+	(MakeInputStream): check content-length size, use routines to load
+	the preloaded data, handle incomplete transfers.
+	(Query): Do not insert null keys into the collection.
+	(Url): implement.
+	(UrlReferer): implement.
+
+	* HttpApplication.cs (RunHooks): Catch Thread.Abort, and call
+	Thread.ResetAbort after each step.
+
+	Ensure that ReleaseState is called if we ever succeed in acquiring
+	the state even if we have stopped the request pipeline.
+
+	Report file not found, directory not found.
+
+2005-07-25  Miguel de Icaza  <[email protected]>
+
+	* HttpCookieCollection.cs: Add expiration of the cookie. 
+
+	* HttpRequest.cs: Add check for ContentLength, use
+	GetPreloadedEntityBody, correct number of bytes uploaded.
+
+2005-07-21  Miguel de Icaza  <[email protected]>
+
+	* HttpResponseHeader.cs: Our implementation of HttpResponse only
+	uses the text headers, does not use any constants as XSP would go
+	through a slower code path anyways.
+
+2005-07-21  Chris Toshok  <[email protected]>
+
+	* HttpBrowserCapabilities.cs: enable support for the W3CDomVersion
+	and EcmaScriptVersion properties.
+
+2005-07-21  Chris Toshok  <[email protected]>
+
+	* HttpResponseHeader.cs: hi, i'm stupid and missed String.Replace.
+	
+2005-07-21  Chris Toshok  <[email protected]>
+
+	* HttpResponseHeader.cs: url encode just \r and \n if they're
+	present in the value.
+
+2005-07-20  Chris Toshok  <[email protected]>
+
+	* HttpPostedFile.cs: add missing ContentLength property.
+
+2005-07-20  Chris Toshok  <[email protected]>
+
+	* HttpCookieCollection.cs: add a new ctor that takes a string (the
+	contents of the Cookies: header).
+
+2005-07-20  Chris Toshok  <[email protected]>
+
+	* HttpCookieCollection.cs: add another ctor (internal, but not
+	obsolete, so we aren't passing a stupid HttpResponse in in order
+	to change the behavior of the collection.)
+
+	* HttpCookie.cs: init this.values in the internal ctor.
+
+2005-07-20  Chris Toshok  <[email protected]>
+
+	* HttpCookieCollection.cs: use "auto-fill mode" when we're dealing
+	with an HttpResponse's cookie collection.  That is, create the
+	cookie if the consumer looks it up.
+
+2005-07-20  Miguel de Icaza  <[email protected]>
+
+	* HttpApplication.cs: Ongoing work on pipeline, I will need to
+	redo this later.
+
+2005-07-19  Miguel de Icaza  <[email protected]>
+
+	* HttpContext.cs (GetService): Implement.  Return all of the
+	properties that we have access to.  Make HttpWorkerRequest the
+	first match as this is the only likely reason people need to use
+	this. 
+
+	* IntPtrStream.cs: Bring from corlib.
+
+	* MultiPartContentParser.cs: use a MemoryStream as HttpInputStream
+	will now be using IntPtrStream. 
+
+	* HttpRequest.cs (MakeInputStream): move code that loads the
+	request here
+	(CloseInputStream): Helper method that we will call later to
+	ensure that we dispose properly the malloced() block. 
+	(BinaryRead): Implemented.
+
+	* HttpInputStream.cs: Rewrite to be a descendant of
+	IntPtrStream.cs 
+
+2005-07-18  Miguel de Icaza  <[email protected]>
+
+	* HttpApplication.cs (Modules): Add modules support and
+	AsyncResult.
+
+2005-07-18  Chris Toshok  <[email protected]>
+
+	* HttpResponseHeader.cs: initial implementation.
+
+2005-07-18  Chris Toshok  <[email protected]>
+
+	* HttpModuleCollection.cs (HttpModuleCollection.GetKey): add
+	missing method.
+
+	* HttpFileCollection.cs: initial implementation.
+
+2005-07-18  Chris Toshok  <[email protected]>
+
+	* HttpModuleCollection.cs (HttpModuleCollection.CopyTo): implement
+	missing method.
+
+2005-07-18  Chris Toshok  <[email protected]>
+
+	* HttpModuleCollection.cs: initial implementation.
+
+2005-07-18  Chris Toshok  <[email protected]>
+
+	* HttpCacheVaryByHeaders.cs: only add the header if it's not
+	already in the hash.
+
+	* HttpCacheVaryByParams.cs: only add the param if it's not already
+	in the hash.
+
+2005-07-18  Chris Toshok  <[email protected]>
+
+	* HttpCookie.cs (HttpCookie+CookieNVC.Set): new override to fix an
+	MS quirk.
+
+2005-07-17  Miguel de Icaza  <[email protected]>
+
+	* HttpRequest.cs (Headers, InputStream): implemented two more
+	properties.
+
+	* HttpInputStream.cs: All we need is a MemoryStream with writable
+	set to false.
+
+	* HttpPostedFile.cs: Use a Stream.
+
+2005-07-16  Chris Toshok  <[email protected]>
+
+	* HttpCacheVaryByHeaders.cs: make sure we set vary_by_unspecified
+	= false in the custom setter.
+
+2005-07-16  Chris Toshok  <[email protected]>
+
+	* HttpCacheVaryByParams.cs: initial implementation.
+
+2005-07-16  Chris Toshok  <[email protected]>
+
+	* HttpCacheVaryByHeaders.cs: initial implementation.
+
+2005-07-15  Chris Toshok  <[email protected]>
+
+	* HttpCookie.cs: one more time.
+
+2005-07-15  Chris Toshok  <[email protected]>
+
+	* HttpCookie.cs (HttpCookie.GetCookieHeader): use
+	expires.ToString().
+	
+2005-07-15  Chris Toshok  <[email protected]>
+
+	* HttpCookie.cs (HttpCookie.GetCookieHeader): implement to fix
+	ben's bug.
+
+2005-07-15  Chris Toshok  <[email protected]>
+
+	* HttpCookieCollection.cs: initial implementation (with a couple
+	of labeled inefficiencies.)
+
+2005-07-15  Chris Toshok  <[email protected]>
+
+	* HttpCookie.cs (HttpCookie.get_HasKeys): use values.HasKeys()
+	instead of trying to be smart about it ourselves.
+
+2005-07-15  Chris Toshok  <[email protected]>
+
+	* HttpCookie.cs: initial implementation.  we fail one unit test,
+	but it might be due to a bug in NameValueCollection.
+
+2005-07-15  Miguel de Icaza  <[email protected]>
+
+	* HttpRequest.cs: 
+
+2005-07-14  Miguel de Icaza  <[email protected]>
+
+	* HttpRuntime.cs: Return a few of the values from the AppDomain
+	data. 
+
+	Put the application shutdown process.
+
+	* HttpApplicationFactory.cs (AddEvent): Fixed bug when more than
+	one method existed.
+	
+	(FireEvent): Do not ignore errors.
 
-2005-07-19  Eyal Alalouf  <[email protected]>
-	* CapabilitiesLoader.cs: Indentation fixes in TARGET_J2EE specific code.
+	* HttpContext.cs (GetAppConfig, GetConfig): First success, use
+	ConfigurationSettings.GetConfig to get the value that QueueManager
+	needed.
 
-2005-07-19  Eyal Alalouf  <[email protected]>
-	* Grasshopper compilation fixes. Disabled use of unsupported features under TARGET_JVM/J2EE configuration.
+2005-07-14  Dick Porter  <[email protected]>
 
-2005-07-18  Eyal Alalouf  <[email protected]>
+	* HttpPostedFile.cs: New basic implementation; needs someone to
+	figure out what a HttpRequestStream does
 
-	* HttpRequest.cs: Fix compilation error in TARGET_J2EE config.
-	* HttpApplicationFactory.cs: Fix compilation error in TARGET_J2EE config.
+2005-07-13  Miguel de Icaza  <[email protected]>
 
-2005-07-18  Eyal Alalouf  <[email protected]>
+	* HttpRequest.cs: More work on this file
 
-	* CapabilitiesLoader.cs: Fix compilation error in TARGET_J2EE config.
+	* HttpRequest.cs, HttpApplication.cs, HttpContext.cs,
+	HttpRuntime.cs: New from scratch implementation.
 
 2005-07-01  Lluis Sanchez Gual <[email protected]>
 

+ 267 - 191
mcs/class/System.Web/System.Web/ServerVariablesCollection.cs

@@ -3,10 +3,12 @@
 //
 // Authors:
 //   	Alon Gazit ([email protected])
+//   	Miguel de Icaza ([email protected])
+//   	Gonzalo Paniagua Javier ([email protected])
 //
 // (c) 2004 Mainsoft, Inc. (http://www.mainsoft.com)
-//
-
+// (c) 2005 Novell, Inc. (http://www.novell.com)
+//
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -27,212 +29,286 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-using System;
-using System.Collections;
-using System.Runtime.Serialization;
-using System.Globalization;
-
-namespace System.Web
-{
-
-	internal class ServerVariablesCollection:HttpValueCollection
-	{
-		private HttpRequest _request;
-		private bool _loaded = false;
+using System;
+using System.Text;
+using System.Collections;
+using System.Collections.Specialized;
+using System.Runtime.Serialization;
+using System.Globalization;
+
+namespace System.Web
+{
+	class ServerVariablesCollection : NameValueCollection
+	{
+		HttpRequest request;
+		bool loaded;
 
 		public ServerVariablesCollection(HttpRequest request)
-		{
-			_request = request;
-		}
-
-		private void loadServerVariablesCollection()
-		{
-			if (_loaded)
-				return;
-			MakeReadWrite();
-			Add("ALL_HTTP", _request.GetAllHeaders(false));
-			Add("ALL_RAW", _request.GetAllHeaders(true));
-			Add("APPL_MD_PATH", _request.WorkerRequest.GetServerVariable("APPL_MD_PATH"));
-			Add("APPL_PHYSICAL_PATH", _request.WorkerRequest.GetServerVariable("APPL_PHYSICAL_PATH"));
-
-			if (null != _request.Context.User && _request.Context.User.Identity.IsAuthenticated) {
-				Add ("AUTH_TYPE", _request.Context.User.Identity.AuthenticationType);
-				Add ("AUTH_USER", _request.Context.User.Identity.Name);
+		{
+			IsReadOnly = true;
+			this.request = request;
+		}
+
+		void AppendKeyValue (StringBuilder sb, string key, string value, bool standard)
+		{
+			//
+			// Standard has HTTP_ prefix, everything is uppercase, has no space
+			// after colon, - is changed to _
+			//
+			// Raw is header, colon, space, values, raw.
+			//
+			if (standard){
+				sb.Append ("HTTP_");
+				sb.Append (key.ToUpper ().Replace ("-", "_"));
+				sb.Append (":");
+			} else {
+				sb.Append (key);
+				sb.Append (": ");
+			}
+			sb.Append (value);
+			sb.Append ("\r\n");
+		}
+				     
+		string Fill (HttpWorkerRequest wr, bool standard)
+		{
+			StringBuilder sb = new StringBuilder ();
+			
+			for (int i = 0; i < HttpWorkerRequest.RequestHeaderMaximum; i++){
+				string val = wr.GetKnownRequestHeader (i);
+				if (val == null || val == "")
+					continue;
+				string key = HttpWorkerRequest.GetKnownRequestHeaderName (i);
+				AppendKeyValue (sb, key, val, standard);
+			}
+			string [][] other = wr.GetUnknownRequestHeaders ();
+			if (other == null)
+				return sb.ToString ();
+
+			for (int i = other.Length; i > 0; ){
+				i--;
+				AppendKeyValue (sb, other [i][0], other [i][1], standard);
+			}
+
+			return sb.ToString ();
+		}
+
+		void AddHeaderVariables (HttpWorkerRequest wr)
+		{
+			string hname;
+			string hvalue;
+
+			// Add all known headers
+			for (int i = 0; i < HttpWorkerRequest.RequestHeaderMaximum; i++) {
+				hvalue = wr.GetKnownRequestHeader (i);
+				if (null != hvalue && hvalue.Length > 0) {
+					hname = HttpWorkerRequest.GetKnownRequestHeaderName (i);
+					if (null != hname && hname.Length > 0)
+						Add ("HTTP_" + hname.ToUpper ().Replace ('-', '_'), hvalue);
+				}
+			}
+
+			// Get all other headers
+			string [][] unknown = wr.GetUnknownRequestHeaders ();
+			if (null != unknown) {
+				for (int i = 0; i < unknown.Length; i++) {
+					hname = unknown [i][0];
+					if (hname == null)
+						continue;
+					hvalue = unknown [i][1];
+					Add ("HTTP_" + hname.ToUpper ().Replace ('-', '_'), hvalue);
+				}
+			}
+		}
+
+		private void loadServerVariablesCollection()
+		{
+			if (loaded)
+				return;
+
+			IsReadOnly = false;
+
+			HttpWorkerRequest wr = request.WorkerRequest;
+			
+			Add("ALL_HTTP", Fill (wr, true));
+			Add("ALL_RAW",  Fill (wr, false));
+			    
+			Add("APPL_MD_PATH", wr.GetServerVariable("APPL_MD_PATH"));
+			Add("APPL_PHYSICAL_PATH", wr.GetServerVariable("APPL_PHYSICAL_PATH"));
+
+			if (null != request.Context.User && request.Context.User.Identity.IsAuthenticated) {
+				Add ("AUTH_TYPE", request.Context.User.Identity.AuthenticationType);
+				Add ("AUTH_USER", request.Context.User.Identity.Name);
 			} else {
 				Add ("AUTH_TYPE", "");
 				Add ("AUTH_USER", "");
 			}
 
-			Add("AUTH_PASSWORD", _request.WorkerRequest.GetServerVariable("AUTH_PASSWORD"));
-			Add ("LOGON_USER", _request.WorkerRequest.GetServerVariable("LOGON_USER"));
-			Add ("REMOTE_USER", _request.WorkerRequest.GetServerVariable("REMOTE_USER"));
-			Add("CERT_COOKIE", _request.WorkerRequest.GetServerVariable("CERT_COOKIE"));
-			Add("CERT_FLAGS", _request.WorkerRequest.GetServerVariable("CERT_FLAGS"));
-			Add("CERT_ISSUER", _request.WorkerRequest.GetServerVariable("CERT_ISSUER"));
-			Add("CERT_KEYSIZE", _request.WorkerRequest.GetServerVariable("CERT_KEYSIZE"));
-			Add("CERT_SECRETKEYSIZE", _request.WorkerRequest.GetServerVariable("CERT_SECRETKEYSIZE"));
-			Add("CERT_SERIALNUMBER", _request.WorkerRequest.GetServerVariable("CERT_SERIALNUMBER"));
-			Add("CERT_SERVER_ISSUER", _request.WorkerRequest.GetServerVariable("CERT_SERVER_ISSUER"));
-			Add("CERT_SERVER_SUBJECT", _request.WorkerRequest.GetServerVariable("CERT_SERVER_SUBJECT"));
-			Add("CERT_SUBJECT", _request.WorkerRequest.GetServerVariable("CERT_SUBJECT"));
-
-			string sTmp = _request.WorkerRequest.GetKnownRequestHeader(HttpWorkerRequest.HeaderContentLength);
+			Add("AUTH_PASSWORD", wr.GetServerVariable("AUTH_PASSWORD"));
+			Add ("LOGON_USER", wr.GetServerVariable("LOGON_USER"));
+			Add ("REMOTE_USER", wr.GetServerVariable("REMOTE_USER"));
+			Add("CERT_COOKIE", wr.GetServerVariable("CERT_COOKIE"));
+			Add("CERT_FLAGS", wr.GetServerVariable("CERT_FLAGS"));
+			Add("CERT_ISSUER", wr.GetServerVariable("CERT_ISSUER"));
+			Add("CERT_KEYSIZE", wr.GetServerVariable("CERT_KEYSIZE"));
+			Add("CERT_SECRETKEYSIZE", wr.GetServerVariable("CERT_SECRETKEYSIZE"));
+			Add("CERT_SERIALNUMBER", wr.GetServerVariable("CERT_SERIALNUMBER"));
+			Add("CERT_SERVER_ISSUER", wr.GetServerVariable("CERT_SERVER_ISSUER"));
+			Add("CERT_SERVER_SUBJECT", wr.GetServerVariable("CERT_SERVER_SUBJECT"));
+			Add("CERT_SUBJECT", wr.GetServerVariable("CERT_SUBJECT"));
+
+			string sTmp = wr.GetKnownRequestHeader(HttpWorkerRequest.HeaderContentLength);
 			if (null != sTmp)
 				Add ("CONTENT_LENGTH", sTmp);
-			Add ("CONTENT_TYPE", _request.ContentType);
-
-			Add("GATEWAY_INTERFACE", _request.WorkerRequest.GetServerVariable("GATEWAY_INTERFACE"));
-			Add("HTTPS", _request.WorkerRequest.GetServerVariable("HTTPS"));
-			Add("HTTPS_KEYSIZE", _request.WorkerRequest.GetServerVariable("HTTPS_KEYSIZE"));
-			Add("HTTPS_SECRETKEYSIZE", _request.WorkerRequest.GetServerVariable("HTTPS_SECRETKEYSIZE"));
-			Add("HTTPS_SERVER_ISSUER", _request.WorkerRequest.GetServerVariable("HTTPS_SERVER_ISSUER"));
-			Add("HTTPS_SERVER_SUBJECT", _request.WorkerRequest.GetServerVariable("HTTPS_SERVER_SUBJECT"));
-			Add("INSTANCE_ID", _request.WorkerRequest.GetServerVariable("INSTANCE_ID"));
-			Add("INSTANCE_META_PATH", _request.WorkerRequest.GetServerVariable("INSTANCE_META_PATH"));
-			Add("LOCAL_ADDR", _request.WorkerRequest.GetLocalAddress());
-			Add("PATH_INFO", _request.PathInfo);
-			Add("PATH_TRANSLATED", _request.PhysicalPath);
-			Add("QUERY_STRING", _request.QueryStringRaw);
-			Add("REMOTE_ADDR", _request.UserHostAddress);
-			Add("REMOTE_HOST", _request.UserHostName);
-			Add("REMOTE_PORT", _request.WorkerRequest.GetRemotePort ().ToString ());
-			Add("REQUEST_METHOD", _request.HttpMethod);
-			Add("SCRIPT_NAME", _request.FilePath);
-			Add("SERVER_NAME", _request.WorkerRequest.GetServerName());
-			Add("SERVER_PORT", _request.WorkerRequest.GetLocalPort().ToString());
-			if (_request.WorkerRequest.IsSecure()) 
+			Add ("CONTENT_TYPE", request.ContentType);
+
+			Add("GATEWAY_INTERFACE", wr.GetServerVariable("GATEWAY_INTERFACE"));
+			Add("HTTPS", wr.GetServerVariable("HTTPS"));
+			Add("HTTPS_KEYSIZE", wr.GetServerVariable("HTTPS_KEYSIZE"));
+			Add("HTTPS_SECRETKEYSIZE", wr.GetServerVariable("HTTPS_SECRETKEYSIZE"));
+			Add("HTTPS_SERVER_ISSUER", wr.GetServerVariable("HTTPS_SERVER_ISSUER"));
+			Add("HTTPS_SERVER_SUBJECT", wr.GetServerVariable("HTTPS_SERVER_SUBJECT"));
+			Add("INSTANCE_ID", wr.GetServerVariable("INSTANCE_ID"));
+			Add("INSTANCE_META_PATH", wr.GetServerVariable("INSTANCE_META_PATH"));
+			Add("LOCAL_ADDR", wr.GetLocalAddress());
+			Add("PATH_INFO", request.PathInfo);
+			Add("PATH_TRANSLATED", request.PhysicalPath);
+			Add("QUERY_STRING", request.QueryStringRaw);
+			Add("REMOTE_ADDR", request.UserHostAddress);
+			Add("REMOTE_HOST", request.UserHostName);
+			Add("REMOTE_PORT", wr.GetRemotePort ().ToString ());
+			Add("REQUEST_METHOD", request.HttpMethod);
+			Add("SCRIPT_NAME", request.FilePath);
+			Add("SERVER_NAME", wr.GetServerName());
+			Add("SERVER_PORT", wr.GetLocalPort().ToString());
+			if (wr.IsSecure()) 
 				Add("SERVER_PORT_SECURE", "1");
 			else
 				Add("SERVER_PORT_SECURE", "0");
-			Add("SERVER_PROTOCOL", _request.WorkerRequest.GetHttpVersion());
-			Add("SERVER_SOFTWARE", _request.WorkerRequest.GetServerVariable("SERVER_SOFTWARE"));
-			Add ("URL", _request.Url.AbsolutePath);
-
-			_request.AddHeaderVariables (this);
-			MakeReadOnly();
-			_loaded = true;
-		}
-
- 
-		public override string Get(int index)
-		{
-			loadServerVariablesCollection();
-			return base.Get(index); 
-		}
-
-		public override string Get(string name)
-		{
-			string text1;
-			if (!_loaded)
-			{
-				text1 = GetServerVar(name);
-				if (text1 != null)				
-					return text1; 				
-				loadServerVariablesCollection(); 
-			}
-			return base.Get(name); 
-
-			
-		}
-
-		private string GetServerVar(string name)
-		{
-			if (((name == null) || (name.Length <= 8)) || (this._request == null))
-				return null;
-			if (string.Compare(name, "AUTH_TYPE", true, CultureInfo.InvariantCulture) == 0)
-			{
-				if (null != _request.Context.User && _request.Context.User.Identity.IsAuthenticated) 
-					return _request.Context.User.Identity.AuthenticationType;
-				else
-					return string.Empty;
-			}
-			else if (string.Compare(name, "AUTH_USER",true, CultureInfo.InvariantCulture) == 0)
-			{
-				if (null != _request.Context.User && _request.Context.User.Identity.IsAuthenticated) 
-					return _request.Context.User.Identity.Name;
-				else
-					return string.Empty;
-			}
-			else if (string.Compare(name, "QUERY_STRING", true, CultureInfo.InvariantCulture) == 0)				
-				return this._request.QueryStringRaw; 
-			else if (string.Compare(name, "PATH_INFO", true, CultureInfo.InvariantCulture) == 0)				
-				return this._request.PathInfo; 
-			else if (string.Compare(name, "PATH_TRANSLATED", true, CultureInfo.InvariantCulture) == 0)
-				return this._request.PhysicalPath; 			
-			else if (string.Compare(name, "REQUEST_METHOD", true, CultureInfo.InvariantCulture) == 0)				
-				return this._request.HttpMethod;
-			else if (string.Compare(name, "REMOTE_ADDR", true, CultureInfo.InvariantCulture) == 0)			
-				return this._request.UserHostAddress; 			
-			else if (string.Compare(name, "REMOTE_HOST", true, CultureInfo.InvariantCulture) == 0)			
-				return this._request.UserHostName; 			
-			else if (string.Compare(name, "REMOTE_ADDRESS", true, CultureInfo.InvariantCulture) == 0)
-				return this._request.UserHostAddress; 
-			else if (string.Compare(name, "SCRIPT_NAME", true, CultureInfo.InvariantCulture) == 0)				
-				return this._request.FilePath;
-			else if (string.Compare(name, "LOCAL_ADDR", true, CultureInfo.InvariantCulture) == 0)				
-				return this._request.WorkerRequest.GetLocalAddress();
-			else if (string.Compare(name, "SERVER_PROTOCOL", true, CultureInfo.InvariantCulture) == 0)
-				return _request.WorkerRequest.GetHttpVersion();
-			else if (string.Compare(name, "SERVER_SOFTWARE", true, CultureInfo.InvariantCulture) == 0)
-				return _request.WorkerRequest.GetServerVariable("SERVER_SOFTWARE");
-			return null; 
-		}
- 
-		public override string GetKey(int index)
-		{
-			loadServerVariablesCollection();
-			return base.GetKey(index); 
-		}
- 
-		public override string[] GetValues(int index)
-		{
-			string text1;
-			string[] array1;
-			text1 = Get(index);
-			if (text1 == null)
-			{
-				return null; 
-			}
-			array1 = new string[1];
-			array1[0] = text1;
-			return array1; 
-		}
- 
-		public override string[] GetValues(string name)
-		{
-			string text1;
-			string[] array1;
-			text1 = Get(name);
-			if (text1 == null)
-			{
-				return null; 
-			}
-			array1 = new string[1];
-			array1[0] = text1;
-			return array1; 
-		}
- 
-		public override void GetObjectData(SerializationInfo info, StreamingContext context)
-		{
-			throw new SerializationException(); 
-		}
-
+			Add("SERVER_PROTOCOL", wr.GetHttpVersion());
+			Add("SERVER_SOFTWARE", wr.GetServerVariable("SERVER_SOFTWARE"));
+			Add ("URL", request.Url.AbsolutePath);
+
+			AddHeaderVariables (wr);
+
+			IsReadOnly = true;
+			loaded = true;
+		}
+
+ 
+		public override string Get(int index)
+		{
+			loadServerVariablesCollection();
+			return base.Get(index); 
+		}
+
+		public override string Get(string name)
+		{
+			string text1;
+			if (!loaded) {
+				text1 = GetServerVar(name);
+				if (text1 != null)				
+					return text1; 				
+				loadServerVariablesCollection(); 
+			}
+			return base.Get(name); 
+
+			
+		}
+
+		private string GetServerVar(string name)
+		{
+			if (((name == null) || (name.Length <= 8)) || (this.request == null))
+				return null;
+			
+			if (string.Compare(name, "AUTH_TYPE", true, CultureInfo.InvariantCulture) == 0) {
+				if (null != request.Context.User && request.Context.User.Identity.IsAuthenticated) 
+					return request.Context.User.Identity.AuthenticationType;
+				else
+					return string.Empty;
+			} else if (string.Compare(name, "AUTH_USER",true, CultureInfo.InvariantCulture) == 0) {
+				if (null != request.Context.User && request.Context.User.Identity.IsAuthenticated) 
+					return request.Context.User.Identity.Name;
+				else
+					return string.Empty;
+			} else if (string.Compare(name, "QUERY_STRING", true, CultureInfo.InvariantCulture) == 0)				
+				return this.request.QueryStringRaw; 
+			else if (string.Compare(name, "PATH_INFO", true, CultureInfo.InvariantCulture) == 0)				
+				return this.request.PathInfo; 
+			else if (string.Compare(name, "PATH_TRANSLATED", true, CultureInfo.InvariantCulture) == 0)
+				return this.request.PhysicalPath; 			
+			else if (string.Compare(name, "REQUEST_METHOD", true, CultureInfo.InvariantCulture) == 0)				
+				return this.request.HttpMethod;
+			else if (string.Compare(name, "REMOTE_ADDR", true, CultureInfo.InvariantCulture) == 0)			
+				return this.request.UserHostAddress; 			
+			else if (string.Compare(name, "REMOTE_HOST", true, CultureInfo.InvariantCulture) == 0)			
+				return this.request.UserHostName; 			
+			else if (string.Compare(name, "REMOTE_ADDRESS", true, CultureInfo.InvariantCulture) == 0)
+				return this.request.UserHostAddress; 
+			else if (string.Compare(name, "SCRIPT_NAME", true, CultureInfo.InvariantCulture) == 0)				
+				return this.request.FilePath;
+			else if (string.Compare(name, "LOCAL_ADDR", true, CultureInfo.InvariantCulture) == 0)				
+				return this.request.WorkerRequest.GetLocalAddress();
+			else if (string.Compare(name, "SERVER_PROTOCOL", true, CultureInfo.InvariantCulture) == 0)
+				return request.WorkerRequest.GetHttpVersion();
+			else if (string.Compare(name, "SERVER_SOFTWARE", true, CultureInfo.InvariantCulture) == 0)
+				return request.WorkerRequest.GetServerVariable("SERVER_SOFTWARE");
+			return null; 
+		}
+ 
+		public override string GetKey(int index)
+		{
+			loadServerVariablesCollection();
+			return base.GetKey(index); 
+		}
+ 
+		public override string[] GetValues(int index)
+		{
+			string text1;
+			string[] array1;
+
+			text1 = Get(index);
+			if (text1 == null) 
+				return null;
+			
+			array1 = new string[1];
+			array1[0] = text1;
+
+			return array1; 
+		}
+ 
+		public override string[] GetValues(string name)
+		{
+			string text1;
+			string[] array1;
+
+			text1 = Get(name);
+			if (text1 == null)
+				return null; 
+			array1 = new string[1];
+			array1[0] = text1;
+			
+			return array1; 
+		}
+ 
+		public override void GetObjectData(SerializationInfo info, StreamingContext context)
+		{
+			throw new SerializationException(); 
+		}
+
 		public override string[] AllKeys 
 		{
-			get 
-			{
-				loadServerVariablesCollection();
+			get {
+				loadServerVariablesCollection ();
 				return base.AllKeys;
 			}
-		}
-
+		}
+
 		public override int Count 
 		{
-			get 
-			{
-				loadServerVariablesCollection();
+			get {
+				loadServerVariablesCollection ();
 				return base.Count;
 			}
-		} 
-	}
-}
+		} 
+	}
+}

+ 2 - 1
mcs/class/System.Web/System.Web/StaticFileHandler.cs

@@ -67,7 +67,8 @@ namespace System.Web
 
 				response.ContentType = MimeTypes.GetMimeType (fileName);
 				response.WriteFile (fileName);
-			} catch (Exception) {
+			} catch (Exception e) {
+				Console.WriteLine ("Exception is" + e);
 				throw new HttpException (403, "Forbidden.");
 			}
 		}

+ 160 - 144
mcs/class/System.Web/System.Web/TraceContext.cs

@@ -1,13 +1,13 @@
-// 
-// System.Web.TraceContext
-//
-// Author:
-//   Patrik Torstensson ([email protected])
-//   Jackson Harper ([email protected])
-//
-// (C) 2002 2003, Patrik Torstensson
-// (C) 2003 Novell, Inc (http://www.novell.com) 
-//
+// 
+// System.Web.TraceContext
+//
+// Author:
+//   Patrik Torstensson ([email protected])
+//   Jackson Harper ([email protected])
+//
+// (C) 2002 2003, Patrik Torstensson
+// (C) 2003 Novell, Inc (http://www.novell.com) 
+//
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -29,139 +29,155 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-
-using System;
-using System.Data;
-using System.Web.UI;
-using System.Web.UI.WebControls;
-
-namespace System.Web {
-   public sealed class TraceContext {
-      private HttpContext _Context;
-      private bool _Enabled;
-      private TraceMode _Mode;
-      private TraceData data;
-      private bool data_saved;
-      private bool _haveTrace;
-           
-      public TraceContext(HttpContext Context) {
-	 _Context = Context;
-	 _Enabled = false;
-      }
-
-
-	internal bool HaveTrace {
-		get {
-			return _haveTrace;
+
+using System;
+using System.Collections;
+using System.Data;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+
+namespace System.Web {
+	public sealed class TraceContext {
+		HttpContext _Context;
+		bool _Enabled;
+		TraceMode _Mode;
+		TraceData data;
+		bool data_saved;
+		bool _haveTrace;
+		Hashtable view_states;
+
+		public TraceContext (HttpContext Context)
+		{
+			_Context = Context;
+		}
+
+		internal bool HaveTrace {
+			get {
+				return _haveTrace;
+			}
+		}
+
+		public bool IsEnabled {
+			get {
+				if (!_haveTrace)
+					return HttpRuntime.TraceManager.Enabled;
+				return _Enabled;
+			}
+
+			set {
+				if (value && data == null)
+					data = new TraceData ();
+				_haveTrace = true;
+				_Enabled = value;
+			}
+		}
+
+		public TraceMode TraceMode {
+			get {
+				return _Mode;
+			}
+			set {
+				_Mode = value;
+			}
+		}
+
+		public void Warn(string msg)
+		{
+			Write (String.Empty, msg, null, true);
+		}
+
+		public void Warn(string category, string msg)
+		{
+			Write (category, msg, null, true);
+		}
+
+		public void Warn (string category, string msg, Exception error)
+		{
+			Write (category, msg, error, true);
+		}
+
+		public void Write (string msg)
+		{
+			Write (String.Empty, msg, null, false);
+		}
+
+		public void Write (string category, string msg)
+		{
+			Write (category, msg, null, false);
+		}
+
+		public void Write (string category, string msg, Exception error)
+		{
+			Write (category, msg, error, false);
+		}
+
+		void Write (string category, string msg, Exception error, bool Warning)
+		{
+			if (!IsEnabled)
+				return;
+			if (data == null)
+				data = new TraceData ();
+			data.Write (category, msg, error, Warning);
+		}
+
+		internal void SaveData ()
+		{
+			if (data == null)
+				data = new TraceData ();
+			SetRequestDetails ();
+			if (_Context.Handler is Page)
+				data.AddControlTree ((Page) _Context.Handler, view_states);
+
+			AddCookies ();
+			AddHeaders ();
+			AddServerVars ();
+			HttpRuntime.TraceManager.AddTraceData (data);
+			data_saved = true;
+		}
+
+		internal void SaveViewState (Control ctrl, object vs)
+		{
+			if (view_states == null)
+				view_states = new Hashtable ();
+
+			view_states [ctrl] = vs;
+		}
+
+		internal void Render (HtmlTextWriter output)
+		{
+			if (!data_saved)
+				SaveData ();
+			data.Render (output);
+		}
+
+		void SetRequestDetails ()
+		{
+			data.RequestPath = _Context.Request.FilePath;
+			data.SessionID = (_Context.Session != null ? _Context.Session.SessionID : String.Empty);
+			data.RequestType = _Context.Request.RequestType;
+			data.RequestTime = _Context.Timestamp;
+			data.StatusCode = _Context.Response.StatusCode;
+			data.RequestEncoding = _Context.Request.ContentEncoding;
+			data.ResponseEncoding = _Context.Response.ContentEncoding;
+		}
+
+		void AddCookies ()
+		{
+			foreach (string key in _Context.Request.Cookies.Keys)
+				data.AddCookie (key, _Context.Request.Cookies [key].Value);
+		}
+
+		void AddHeaders ()
+		{
+			foreach (string key in _Context.Request.Headers.Keys)
+				data.AddHeader (key, _Context.Request.Headers [key]);
+		}
+
+		void AddServerVars ()
+		{
+			foreach (string key in _Context.Request.ServerVariables)
+				data.AddServerVar (key, _Context.Request.ServerVariables [key]);
 		}
 	}
-
-      public bool IsEnabled {
-	 get {
-	    if (!_haveTrace)
-	        return HttpRuntime.TraceManager.Enabled;
-	    return _Enabled;
-	 }
-
-	 set {
-		 if (value && data == null)
-			 data = new TraceData ();
-	     _haveTrace = true;
-	    _Enabled = value;
-	 }
-      }
-
-      public TraceMode TraceMode {
-	 get {
-	    return _Mode;
-	 }
-
-	 set {
-	    _Mode = value;
-	 }
-      }
-
-      public void Warn(string msg) {
-	 Write(String.Empty, msg, null, true);
-      }
-
-      public void Warn(string category, string msg) {
-	 Write(category, msg, null, true);
-      }
-
-      public void Warn(string category, string msg, Exception error) {
-	 Write(category, msg, error, true);
-      }
-
-      public void Write(string msg) {
-	 Write(String.Empty, msg, null, false);
-      }
-
-      public void Write(string category, string msg) {
-	 Write(category, msg, null, false);
-      }
-
-      public void Write(string category, string msg, Exception error) {
-	 Write(category, msg, error, false);
-      }
-
-      private void Write(string category, string msg, Exception error, bool Warning) {
-	      if (!IsEnabled)
-		      return;
-              if (data == null)
-                      data = new TraceData ();
-	      data.Write (category, msg, error, Warning);
-      }
-
-           internal void SaveData ()
-           {
-                   if (data == null)
-                           data = new TraceData ();
- 		   SetRequestDetails ();
-		   if (_Context.Handler is Page)
-			   data.AddControlTree ((Page) _Context.Handler);
-
-		   AddCookies ();
-		   AddHeaders ();
-		   AddServerVars ();
-		   HttpRuntime.TraceManager.AddTraceData (data);
-		   data_saved = true;
-	   }
-           
-	   internal void Render (HtmlTextWriter output)
-	   {
-		   if (!data_saved)
-			   SaveData ();
-		   data.Render (output);
-	   }
-
-	   private void SetRequestDetails ()
-	   {
-		   data.RequestPath = _Context.Request.FilePath;
-		   data.SessionID = (_Context.Session != null ? _Context.Session.SessionID : String.Empty);
-		   data.RequestType = _Context.Request.RequestType;
-		   data.RequestTime = _Context.Timestamp;
-		   data.StatusCode = _Context.Response.StatusCode;
-		   data.RequestEncoding = _Context.Request.ContentEncoding;
-		   data.ResponseEncoding = _Context.Response.ContentEncoding;
-	   }
-
-	   private void AddCookies ()
-	   {
-		   foreach (string key in _Context.Request.Cookies.Keys)
-			   data.AddCookie (key, _Context.Request.Cookies [key].Value);
-	   }
-	   
-	   private void AddHeaders ()
-	   {
-		   foreach (string key in _Context.Request.Headers.Keys)
-			   data.AddHeader (key, _Context.Request.Headers [key]);
-	   }
-
-	   private void AddServerVars ()
-	   {
-		   foreach (string key in _Context.Request.ServerVariables)
-			   data.AddServerVar (key, _Context.Request.ServerVariables [key]);
-	   }
-   }
-}
+}
+

+ 50 - 10
mcs/class/System.Web/System.Web/TraceData.cs

@@ -30,6 +30,8 @@
 
 
 using System;
+using System.Collections;
+using System.IO;
 using System.Text;
 using System.Data;
 using System.Web.UI;
@@ -48,6 +50,7 @@ namespace System.Web {
 		private DataTable cookie_data;
 		private DataTable header_data;
 		private DataTable servervar_data;
+		//private DataTable viewstate_data;
 
 		private string request_path;
 		private string session_id;
@@ -56,6 +59,7 @@ namespace System.Web {
 		private Encoding response_encoding;
 		private string request_type;
 		private int status_code;
+		private Page page;
 
 		public TraceData ()
 		{
@@ -85,6 +89,12 @@ namespace System.Web {
 			servervar_data.Columns.Add (new DataColumn ("Name", typeof (string)));
 			servervar_data.Columns.Add (new DataColumn ("Value", typeof (string)));
 
+			/* TODO
+			viewstate_data = new DataTable ();
+			viewstate_data.Columns.Add (new DataColumn ("ControlId", typeof (string)));
+			viewstate_data.Columns.Add (new DataColumn ("Data", typeof (string)));
+			*/
+
 			is_first_time = true;
 		}
 
@@ -153,22 +163,49 @@ namespace System.Web {
 			return res.Replace (" ", "&nbsp;");
 		}
 		
-		public void AddControlTree (Page page)
+		public void AddControlTree (Page page, Hashtable ctrl_vs)
 		{
-			AddControl (page, 0);
+			this.page = page;
+			page.SetRenderingTrace (true);
+			AddControl (page, 0, ctrl_vs);
+			page.SetRenderingTrace (false);
 		}
 
-		private void AddControl (Control c, int control_pos)
+		private void AddControl (Control c, int control_pos, Hashtable ctrl_vs)
 		{
 			DataRow r = control_data.NewRow ();
 			r ["ControlId"] = c.UniqueID;
 			r ["Type"] = c.GetType ();
 			r ["Depth"] = control_pos;
+			r ["RenderSize"] = GetRenderSize (c);
+			r ["ViewstateSize"] = GetViewStateSize (c, (ctrl_vs != null) ? ctrl_vs [c] : null);
 
 			control_data.Rows.Add (r);
-			
-			foreach (Control child in c.Controls)
-				AddControl (child, control_pos + 1);
+
+			if (c.HasControls ()) {
+				foreach (Control child in c.Controls)
+					AddControl (child, control_pos + 1, ctrl_vs);
+			}
+		}
+
+		static int GetRenderSize (Control c)
+		{
+			StringWriter sr = new StringWriter ();
+			HtmlTextWriter output = new HtmlTextWriter (sr);
+			c.RenderControl (output);
+			output.Flush ();
+			return sr.GetStringBuilder ().Length;
+		}
+
+		static int GetViewStateSize (Control ctrl, object vs)
+		{
+			if (vs == null)
+				return 0;
+
+			StringWriter sr = new StringWriter ();
+			LosFormatter fmt = new LosFormatter ();
+			fmt.Serialize (sr, vs);
+			return sr.GetStringBuilder ().Length;
 		}
 
 		public void AddCookie (string name, string value)
@@ -254,10 +291,12 @@ namespace System.Web {
 		{
 			Table table = CreateTable ();
 			
+			int page_vs_size = GetViewStateSize (page, page.GetSavedViewState ());
 			table.Rows.Add (AltRow ("Control Tree"));
 			table.Rows.Add (SubHeadRow ("Control Id", "Type",
-							"Render Size Bytes (including children)",
-							"View state Size Bytes (excluding children)"));
+						"Render Size Bytes (including children)",
+						String.Format ("View state Size (total: {0} bytes)(excluding children)",
+								page_vs_size)));
 			
 			int pos = 0;
 			foreach (DataRow r in control_data.Rows) {
@@ -266,12 +305,13 @@ namespace System.Web {
 				for (int i=0; i<depth; i++)
 					prefix += "&nbsp;&nbsp;&nbsp;&nbsp;";
 				RenderAltRow (table, pos++, prefix + r ["ControlId"],
-						r ["Type"].ToString (), "&nbsp;", "&nbsp;");
+						r ["Type"].ToString (), r ["RenderSize"].ToString (),
+						r ["ViewstateSize"].ToString ());
 			}
 			
 			table.RenderControl (output);
 		}
-		   
+
 		private void RenderCookies (HtmlTextWriter output)
 		{
 			Table table = CreateTable ();

+ 111 - 0
mcs/class/System.Web/System.Web_test.dll.sources

@@ -1,6 +1,117 @@
+System.Web/HttpCacheVaryByHeadersTest.cs
+System.Web/HttpCacheVaryByParamsTest.cs
+System.Web/HttpClientCertificateTest.cs
+System.Web/HttpContext.cs
+System.Web/HttpCookieCollectionTest.cs
+System.Web/HttpCookieTest.cs
 System.Web/HttpRequestTest.cs
+System.Web/HttpResponseTest.cs
 System.Web/HttpServerUtilityTest.cs
 System.Web/HttpUtilityTest.cs
+System.Web.Hosting/SimpleWorkerRequestTest.cs
+System.Web.Hosting/ApplicationHostTest.cs
+System.Web.Profile/ProfileInfoTest.cs
 System.Web.Security/FormsAuthenticationTest.cs
+System.Web.Security/MembershipTest.cs
+System.Web.Security/MembershipProviderCollectionTest.cs
+System.Web.Security/MembershipUserCollectionTest.cs
+System.Web.Security/RolesTest.cs
+System.Web.UI/CleanHtmlTextWriter.cs
+System.Web.UI/ControlTest.cs
+System.Web.UI/DataBindingHandlerAttributeTest.cs
+System.Web.UI.HtmlControls/HtmlAnchorTest.cs
+System.Web.UI.HtmlControls/HtmlButtonTest.cs
+System.Web.UI.HtmlControls/HtmlContainerControlTest.cs
+System.Web.UI.HtmlControls/HtmlFormTest.cs
+System.Web.UI.HtmlControls/HtmlImageTest.cs
+System.Web.UI.HtmlControls/HtmlInputButtonTest.cs
+System.Web.UI.HtmlControls/HtmlInputCheckBoxTest.cs
+System.Web.UI.HtmlControls/HtmlInputControlTest.cs
+System.Web.UI.HtmlControls/HtmlInputHiddenTest.cs
+System.Web.UI.HtmlControls/HtmlInputRadioButtonTest.cs
+System.Web.UI.HtmlControls/HtmlInputTextTest.cs
+System.Web.UI.HtmlControls/HtmlSelectTest.cs
+System.Web.UI.HtmlControls/HtmlTableCellTest.cs
+System.Web.UI.HtmlControls/HtmlTableRowTest.cs
+System.Web.UI.HtmlControls/HtmlTableTest.cs
+System.Web.UI.HtmlControls/HtmlTextAreaTest.cs
+System.Web.UI/HtmlTextWriterTest.cs
+System.Web.UI/PageTest.cs
+System.Web.UI/PropertyConverterTest.cs
+System.Web.UI/StateBagTest.cs
 System.Web.UI/TestUrlPropertyAttribute.cs
+System.Web.UI/ToolboxDataAttributeTest.cs
+System.Web.UI.WebControls/AdCreatedEventArgsTest.cs
+System.Web.UI.WebControls/BaseCompareValidatorTest.cs
+System.Web.UI.WebControls/BaseDataListTest.cs
+System.Web.UI.WebControls/BaseValidatorTest.cs
+System.Web.UI.WebControls/BoundColumnTest.cs
+System.Web.UI.WebControls/ButtonColumnTest.cs
+System.Web.UI.WebControls/ButtonTest.cs
+System.Web.UI.WebControls/CalendarDayTest.cs
+System.Web.UI.WebControls/CalendarTest.cs
+System.Web.UI.WebControls/CheckBoxListTest.cs
+System.Web.UI.WebControls/CheckBoxTest.cs
+System.Web.UI.WebControls/CompareValidatorTest.cs
+System.Web.UI.WebControls/CompositeControlTest.cs
+System.Web.UI.WebControls/CustomValidatorTest.cs
+System.Web.UI.WebControls/DataGridColumnTest.cs
+System.Web.UI.WebControls/DataGridItemCollectionTest.cs
+System.Web.UI.WebControls/DataGridItemTest.cs
+System.Web.UI.WebControls/DataGridPagerStyleTest.cs
+System.Web.UI.WebControls/DataGridTest.cs
+System.Web.UI.WebControls/DataKeyCollectionTest.cs
+System.Web.UI.WebControls/DataListItemCollectionTest.cs
+System.Web.UI.WebControls/DataListItemTest.cs
+System.Web.UI.WebControls/DataListTest.cs
+System.Web.UI.WebControls/DropDownListTest.cs
+System.Web.UI.WebControls/EditCommandColumnTest.cs
+System.Web.UI.WebControls/FontNamesConverterTest.cs
+System.Web.UI.WebControls/FontUnitTest.cs
+System.Web.UI.WebControls/HyperLinkColumnTest.cs
+System.Web.UI.WebControls/HyperLinkTest.cs
+System.Web.UI.WebControls/ImageButtonTest.cs
+System.Web.UI.WebControls/ImageTest.cs
+System.Web.UI.WebControls/LabelTest.cs
+System.Web.UI.WebControls/LinkButtonTest.cs
+System.Web.UI.WebControls/ListBoxTest.cs
+System.Web.UI.WebControls/ListControlTest.cs
+System.Web.UI.WebControls/ListItemCollectionTest.cs
+System.Web.UI.WebControls/LiteralTest.cs
+System.Web.UI.WebControls/LoginNameTest.cs
+System.Web.UI.WebControls/LoginStatusTest.cs
+System.Web.UI.WebControls/LoginTest.cs
+System.Web.UI.WebControls/PagedDataSourceTest.cs
+System.Web.UI.WebControls/PanelTest.cs
+System.Web.UI.WebControls/RadioButtonListTest.cs
+System.Web.UI.WebControls/RadioButtonTest.cs
+System.Web.UI.WebControls/RangeValidatorTest.cs
+System.Web.UI.WebControls/RegularExpressionValidatorTest.cs
+System.Web.UI.WebControls/RepeatInfoTest.auto.cs
+System.Web.UI.WebControls/RepeatInfoTest.auto.2.0.cs
+System.Web.UI.WebControls/RepeatInfoTest.cs
+System.Web.UI.WebControls/RoleGroupCollectionTest.cs
+System.Web.UI.WebControls/RoleGroupTest.cs
+System.Web.UI.WebControls/SelectedDatesCollectionTest.cs
+System.Web.UI.WebControls/StyleTest.cs
+System.Web.UI.WebControls/TableCellTest.cs
+System.Web.UI.WebControls/TableFooterRowTest.cs
+System.Web.UI.WebControls/TableHeaderCellTest.cs
+System.Web.UI.WebControls/TableHeaderRowTest.cs
+System.Web.UI.WebControls/TableItemStyleTest.cs
+System.Web.UI.WebControls/TableRowTest.cs
+System.Web.UI.WebControls/TableSectionStyleTest.cs
+System.Web.UI.WebControls/TableStyleTest.cs
+System.Web.UI.WebControls/TableTest.cs
+System.Web.UI.WebControls/TargetConverterTest.cs
 System.Web.UI.WebControls/TestControlIDConverter.cs
+System.Web.UI.WebControls/TextBoxTest.cs
+System.Web.UI.WebControls/UnitConverterTest.cs
+System.Web.UI.WebControls/UnitTest.cs
+System.Web.UI.WebControls/ValidatedControlConverterTest.cs
+System.Web.UI.WebControls/ValidationSummaryTest.cs
+System.Web.UI.WebControls/ValidatorTest.cs
+System.Web.UI.WebControls/WebColorConverterTest.cs
+System.Web.UI.WebControls/WebControlTest.cs
+System.Web.UI.WebControls/XmlTest.cs
+System.Web.UI.WebControls.WebParts/WebPartTest.cs

+ 62 - 0
mcs/class/System.Web/resources/ChangeLog

@@ -1,3 +1,65 @@
+2005-08-04  Chris Toshok  <[email protected]>
+
+	* WebUIValidation.js (CustomValidatorEvaluateIsValid): correct the
+	args.IsValid check.
+
+2005-08-04  Chris Toshok  <[email protected]>
+
+	* WebUIValidation.js (ValidatorOnLoad): set "enabled" == "true" if
+	there's no attribute present.
+	(Page_ClientValidate): a validator succeeds if it's disabled.
+
+2005-07-27  Chris Toshok  <[email protected]>
+
+	* WebUIValidation.js (ValidatorCommonOnSubmit): fix formatting of
+	List and SingleParagraph mode ValidationSummaries.
+	(ValidatorTrim): use two regexps instead of two while loops.
+	(CustomValidatorEvaluateIsValid): new function.
+
+2005-07-26  Chris Toshok  <[email protected]>
+
+	* WebUIValidation.js: fix the summary mode for
+	ValidationSummaries.
+
+2005-07-25  Chris Toshok  <[email protected]>
+
+	* WebUIValidation.js (RangeValidatorEvaluateIsValid): fix this -
+	GetAttribute is dead, long live validator.getAttribute.
+
+2005-07-24  Chris Toshok  <[email protected]>
+
+	* WebUIValidation.js: add support for validation summaries, both
+	in summary and messagebox mode.
+
+2005-07-22  Chris Toshok  <[email protected]>
+
+	* WebUIValidation.js: the JSUnit tests pointed out that
+	validator.evaluationfunction is not a string after OnLoad.  do
+	this as well so the tests pass, and deal with the difference
+	between o[attr], o.getAttribute(attr), and o.attr. Ugh.
+
+2005-07-21  Chris Toshok  <[email protected]>
+
+	* WebUIValidation.js (RequiredFieldValidatorEvaluateIsValid): trim
+	both the initial value and the control's value.
+
+2005-07-21  Chris Toshok  <[email protected]>
+
+	* WebUIValidation.js: handle validators that use
+	Display="Dynamic".
+
+2005-07-20  Chris Toshok  <[email protected]>
+
+	* WebUIValidation.js (ValidatorTrim): new function.
+	(RangeValidatorEvaluateIsValid): use ValidatorGetValue and
+	ValidatorTrim.
+	(RegularExpressionValidatorEvaluateIsValid): same.
+	(RequiredFieldValidatorEvaluateIsValid): same.
+
+2005-07-20  Chris Toshok  <[email protected]>
+
+	* WebUIValidation.js: new file.
+
 2005-03-11  Lluis Sanchez Gual <[email protected]>
 
 	* webform.js: ClientSubmit option set to true means submit

Unele fișiere nu au fost afișate deoarece prea multe fișiere au fost modificate în acest diff