Imported Upstream version 4.3.2.467

Former-commit-id: 9c2cb47f45fa221e661ab616387c9cda183f283d
This commit is contained in:
Xamarin Public Jenkins
2016-02-22 11:00:01 -05:00
parent f302175246
commit f3e3aab35a
4097 changed files with 122406 additions and 82300 deletions

View File

@@ -32,7 +32,7 @@ namespace System.Web.UI.WebControls.Adapters {
writer.WriteBreak();
break;
case BulletedListDisplayMode.HyperLink:
//
// TODO: if index == 0, set accesskey. Needs a new RenderBeginHyperlink method.
string targetURL = Control.ResolveClientUrl(items[index].Value);
if (items[index].Enabled) {
PageAdapter.RenderBeginHyperlink(writer, targetURL, true /* encode */, items[index].Text);
@@ -45,7 +45,7 @@ namespace System.Web.UI.WebControls.Adapters {
break;
case BulletedListDisplayMode.LinkButton:
if (items[index].Enabled) {
//
// TODO: if index == 0, set accesskey. Needs a new RenderPostBackEvent method.
PageAdapter.RenderPostBackEvent(writer, Control.UniqueID, index.ToString(CultureInfo.InvariantCulture),
items[index].Text, items[index].Text);
} else {

View File

@@ -21,8 +21,8 @@ namespace System.Web.UI.Adapters {
protected internal override void EndRender(HtmlTextWriter writer) {
}
//
// BUGBUG: This override is for compatibility with MMIT.
// MMIT legacy pages also use this adapter -UNDONE: Review once MMIT legacy plan is complete.
protected internal override void Render(HtmlTextWriter writer) {
WmlTextWriter wmlWriter = writer as WmlTextWriter;
if (wmlWriter == null) {

View File

@@ -20,8 +20,8 @@ namespace System.Web.UI.WebControls.Adapters {
String text = Control.Text;
if (text.Length == 0) {
// Whidbey 18195
// Whidbey 18195 UNDONE: This solution is somewhat ad hoc, awaiting spec resolution on IStaticTextControl
// in M2. For now, take text from first IStaticTextControl or DataboundLiteralControl.
foreach(Control child in Control.Controls) {
if (child is IStaticTextControl) {
text = ((IStaticTextControl)child).Text;

View File

@@ -10,9 +10,9 @@ namespace System.Web.UI.WebControls.Adapters {
using System.Web.UI.Adapters;
using System.Web.UI.WebControls;
//
// REVIEW: Inheritance. If this inherits from ImageButtonAdapter, there is no way to create a
// WmlImageAdapter and set the Control property to delegate rendering (base.Render, below). Control is read-only.
// Maybe Control should be get/set for this situation.
public class WmlImageButtonAdapter : WmlImageAdapter {
protected new ImageButton Control {
@@ -30,7 +30,7 @@ namespace System.Web.UI.WebControls.Adapters {
postUrl = Control.ResolveClientUrl (Control.PostBackUrl);
}
//
// UNDONE: Replace hard coded string indexer with strongly typed capability.
if (Page != null && Page.Request != null && (String)Page.Request.Browser["supportsImageSubmit"] == "false") {
writer.EnterStyle(Control.ControlStyle);

View File

@@ -21,7 +21,7 @@ namespace System.Web.UI.WebControls.Adapters {
protected internal override void EndRender(HtmlTextWriter writer) {
}
//
// BUGBUG: This override is for compatibility with MMIT only. -UNDONE: Review once MMIT legacy plan is complete.
protected internal override void Render(HtmlTextWriter writer) {
WmlTextWriter wmlWriter = writer as WmlTextWriter;
if (wmlWriter == null) {

View File

@@ -20,8 +20,8 @@ namespace System.Web.UI.Adapters {
protected internal override void EndRender(HtmlTextWriter writer) {
}
//
// BUGBUG: This override is for compatibility with MMIT.
// MMIT legacy pages also use this adapter -UNDONE: Review once MMIT legacy plan is complete.
protected internal override void Render(HtmlTextWriter writer) {
WmlTextWriter wmlWriter = writer as WmlTextWriter;
if (wmlWriter == null) {

View File

@@ -67,8 +67,8 @@ namespace System.Web.UI.Adapters {
}
}
//
// UNDONE: Internal because needed by WmlTextWriter. Consider removing this prop somehow.
// Returns true if form variables have been written.
internal bool WrittenFormVariables {
get {
return _writtenFormVariables;
@@ -131,8 +131,8 @@ namespace System.Web.UI.Adapters {
return collection;
}
//
// UNDONE: For M1, we only have Wml browsers which do not support accesskey. For later milestones, make this
// dependent on a capability or replace with a capability.
private bool DoesBrowserSupportAccessKey() {
return false;
}
@@ -235,16 +235,16 @@ namespace System.Web.UI.Adapters {
}
// Renders the beginning of the form.
//
// UNDONE: Remove internal modifier when method is completely removed from writer.
protected internal virtual void RenderBeginForm(WmlTextWriter writer) {
RenderBeginCardTag(writer);
// Write form variables.
//
// UNDONE: Move writer._provideBackButton to this adapter.
// Review: In V1 we had a writer.ProvideBackButton property, is there any need for this with (more advanced)
// whidbey devices?
_writtenFormVariables = true;
if (_formVariables == null) {
_formVariables = new ListDictionary();
@@ -259,7 +259,7 @@ namespace System.Web.UI.Adapters {
RenderSetFormVariables(writer);
RenderPostUrlFormVariable(writer);
writer.WriteLine("</refresh></onevent>");
//
// UNDONE: formAdapter.RenderExtraCardElements(this);
writer.BeginFormOrPanel();
}
@@ -432,7 +432,7 @@ namespace System.Web.UI.Adapters {
RenderTargetAndArgumentPostFields(writer, target, argument, postFieldType);
RenderPostFieldVariableDictionary(writer, _dynamicPostFields);
RenderPostFieldDictionary(writer, _staticPostFields);
//
// UNDONE: Add postbacks for variables which are not on the current page.
writer.WriteEndTag("go");
}
@@ -442,8 +442,8 @@ namespace System.Web.UI.Adapters {
return;
}
writer.Write("?");
//
// UNDONE: MMIT IPageAdapter.PersistCookielessData NYI
// if(Page.Adapter.PersistCookielessData && Browser["canRenderOneventAndPrevElementsTogether"] != "false")
if (!StringUtil.EqualsIgnoreCase((string)Browser["canRenderOneventAndPrevElementsTogether"], "false")) {
queryString = writer.ReplaceFormsCookieWithVariable(queryString);
}
@@ -504,7 +504,7 @@ namespace System.Web.UI.Adapters {
writer.Write("<onevent type=\"onenterforward\">");
RenderFormPostInGoAction(writer, null, _postBackEventArgumentVarName, WmlPostFieldType.Variable, String.Empty);
//
// REVIEW: Should we always include page hidden variables.
writer.WriteLine("</onevent>");
writer.WriteLine("<onevent type=\"onenterbackward\"><prev /></onevent>");

View File

@@ -11,7 +11,7 @@ namespace System.Web.UI.WebControls.Adapters {
public class WmlPhoneLinkAdapter : PhoneLinkAdapter {
//
// UNDONE: Add style.
protected internal override void Render(HtmlTextWriter markupWriter) {
WmlTextWriter writer = (WmlTextWriter)markupWriter;
String text, url, phoneNumber;
@@ -42,7 +42,7 @@ namespace System.Web.UI.WebControls.Adapters {
if (Page != null && Page.Request != null) {
browser = Page.Request.Browser;
}
//
// TODO: Replace hard coded string key.
if (browser != null && (String)browser["canInitiateVoiceCall"] != "true") {
text = String.Format(controlText,
originalNumber);
@@ -54,7 +54,7 @@ namespace System.Web.UI.WebControls.Adapters {
// showing as text so it can be selected. If it is not
// formatted in the text yet, append it to the end of the
// text.
//
// TODO: Replace hard coded string key.
if (browser != null && browser["requiresPhoneNumbersAsPlainText"] == "true") {
text = controlText + " " + phoneNumber;
url = String.Empty;

View File

@@ -141,14 +141,14 @@ namespace System.Web.UI.WebControls.Adapters {
// RenderAsGroup returns a RadioButtonGroup object if the group should be
// rendered in a single <select> statement, or null if autopostback should
// be enabled.
//
// UNDONE: Check more general case when radiobuttons do not all share the same parent
private RadioButtonGroup RenderAsGroup(RadioButton r) {
bool startedSequence = false;
bool finishedSequence = false;
RadioButtonGroup group = new RadioButtonGroup();
//
//TODO : Check all controls on page
foreach (Control c in r.Parent.Controls) {
RadioButton radioSibling = c as RadioButton;
LiteralControl literalSibling = c as LiteralControl;

View File

@@ -33,7 +33,7 @@ namespace System.Web.UI.WebControls.Adapters {
if (Control.TextMode == TextBoxMode.Password) {
value = String.Empty;
//
// UNDONE: Consider adding property or wml adapter property to set requiresRandomID to true.
requiresRandomID = true;
}
@@ -53,8 +53,8 @@ namespace System.Web.UI.WebControls.Adapters {
writer.MapClientIDToShortName(Control.ClientID, requiresRandomID);
}
//
// UNDONE: There are some wml-specific properties (format, title, size, maxLength) which
// we should consider for Whidbey.
RenderTextBox((WmlTextWriter)writer, Control.ClientID,
value,
null /* format */,
@@ -69,7 +69,7 @@ namespace System.Web.UI.WebControls.Adapters {
// Renders the TextBox.
public virtual void RenderTextBox(WmlTextWriter writer, String id, String value, String format, String title, bool password, int size, int maxLength, bool generateRandomID) {
if (!writer.AnalyzeMode) {
//
// UNDONE: Handle rendersBreakBeforeWmlSelectAndInput, if this capability is still needed for Whidbey devices
// VSWhidbey 147458. Close any style tags.
writer.CloseCurrentStyleTags();

View File

@@ -223,6 +223,10 @@ namespace System.Web.UI.WebControls {
}
}
internal void InternalEnsureDataBound() {
EnsureDataBound();
}
protected virtual void OnDataBound(EventArgs e) {
EventHandler handler = Events[EventDataBound] as EventHandler;

View File

@@ -361,7 +361,7 @@ namespace System.Web.UI.WebControls {
// strIndex is now definitely the index as a string, regardless of which case postDataKey was in.
int index = Int32.Parse(strIndex, CultureInfo.InvariantCulture);
EnsureDataBound();
EnsureDataBoundInLoadPostData();
// Maintain state from the form
if (index >= 0 && index < Items.Count) {

View File

@@ -71,7 +71,6 @@ namespace System.Web.UI.WebControls {
/// <para>Indicates the type of the item in the <see cref='System.Web.UI.WebControls.DataGrid'/>.</para>
/// </devdoc>
public virtual ListItemType ItemType {
[System.Runtime.TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")]
get {
return itemType;
}

View File

@@ -154,7 +154,7 @@ namespace System.Web.UI.WebControls {
string [] selectedItems = postCollection.GetValues(postDataKey);
EnsureDataBound();
EnsureDataBoundInLoadPostData();
if (selectedItems != null) {
ValidateEvent(postDataKey, selectedItems[0]);

View File

@@ -1 +1 @@
3d78a8ec9125f079b9fa3c63542aaebab365568c
722176466a95ca5d2aa5b924fffaa994f17ec5ba

View File

@@ -6,7 +6,7 @@
namespace System.Web.UI.WebControls {
//
// TODO, nikhilko: Change namespace to System.Web.UI
/// <devdoc>

View File

@@ -8,4 +8,4 @@
set;
}
}
}
}

View File

@@ -39,6 +39,7 @@ namespace System.Web.UI.WebControls {
private string cachedSelectedValue;
private ArrayList cachedSelectedIndices;
private bool _stateLoaded;
private bool _asyncSelectPending;
/// <devdoc>
@@ -582,10 +583,48 @@ namespace System.Web.UI.WebControls {
_stateLoaded = true;
}
private void OnDataSourceViewSelectCallback(IEnumerable data) {
_asyncSelectPending = false;
PerformDataBinding(data);
PostPerformDataBindingAction();
}
protected override void OnDataBinding(EventArgs e) {
base.OnDataBinding(e);
IEnumerable data = GetData().ExecuteSelect(DataSourceSelectArguments.Empty);
PerformDataBinding(data);
DataSourceView view = GetData();
// view could be null when a user implements his own GetData().
if (null == view) {
throw new InvalidOperationException(SR.GetString(SR.DataControl_ViewNotFound, ID));
}
// DevDiv 1036362: enable async model binding for ListControl
bool useAsyncSelect = false;
if (AppSettings.EnableAsyncModelBinding) {
var modelDataView = view as ModelDataSourceView;
useAsyncSelect = modelDataView != null && modelDataView.IsSelectMethodAsync;
}
if (useAsyncSelect) {
_asyncSelectPending = true; // disable post data binding action until the callback is invoked
view.Select(SelectArguments, OnDataSourceViewSelectCallback);
}
else {
IEnumerable data = view.ExecuteSelect(DataSourceSelectArguments.Empty);
PerformDataBinding(data);
}
}
internal void EnsureDataBoundInLoadPostData() {
if (!SkipEnsureDataBoundInLoadPostData) {
EnsureDataBound();
}
}
internal bool SkipEnsureDataBoundInLoadPostData {
get;
set;
}
@@ -715,6 +754,13 @@ namespace System.Web.UI.WebControls {
// performed the databind, and we need to maintain backward compat. OnDataBinding will retrieve the
// data from the view synchronously and call PerformDataBinding with the data, preserving the OM.
OnDataBinding(EventArgs.Empty);
PostPerformDataBindingAction();
}
private void PostPerformDataBindingAction() {
if (_asyncSelectPending)
return;
RequiresDataBinding = false;
MarkAsDataBound();
OnDataBound(EventArgs.Empty);

View File

@@ -191,7 +191,7 @@ namespace System.Web.UI.WebControls {
string[] selectedItems = postCollection.GetValues(postDataKey);
bool selectionChanged = false;
EnsureDataBound();
EnsureDataBoundInLoadPostData();
if (selectedItems != null) {
if (SelectionMode == ListSelectionMode.Single) {

View File

@@ -13,4 +13,4 @@ namespace System.Web.UI.WebControls {
Table,
List,
}
}
}

Some files were not shown because too many files have changed in this diff Show More