You've already forked linux-packaging-mono
Imported Upstream version 4.6.0.125
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
This commit is contained in:
parent
a569aebcfd
commit
e79aa3c0ed
@ -0,0 +1,195 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <copyright file="ScriptReferenceBase.cs" company="Microsoft">
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// </copyright>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace System.Web.UI {
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Globalization;
|
||||
using System.Web;
|
||||
using System.Web.Resources;
|
||||
using System.Web.UI.WebControls;
|
||||
using Debug = System.Diagnostics.Debug;
|
||||
|
||||
[
|
||||
DefaultProperty("Path"),
|
||||
]
|
||||
public abstract class ScriptReferenceBase {
|
||||
private bool _alwaysLoadBeforeUI;
|
||||
private IClientUrlResolver _clientUrlResolver;
|
||||
private Control _containingControl;
|
||||
private bool _isStaticReference;
|
||||
private bool _notifyScriptLoaded = true;
|
||||
private string _path;
|
||||
private string[] _resourceUICultures;
|
||||
private ScriptMode _scriptMode;
|
||||
|
||||
protected ScriptReferenceBase() {}
|
||||
|
||||
internal bool AlwaysLoadBeforeUI {
|
||||
get {
|
||||
return _alwaysLoadBeforeUI;
|
||||
}
|
||||
set {
|
||||
_alwaysLoadBeforeUI = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Used by ScriptManager to associate a ScriptReference with its url resolver
|
||||
// (i.e. ScriptManager or ScriptManagerProxy)
|
||||
internal IClientUrlResolver ClientUrlResolver {
|
||||
get {
|
||||
return _clientUrlResolver;
|
||||
}
|
||||
set {
|
||||
_clientUrlResolver = value;
|
||||
}
|
||||
}
|
||||
|
||||
internal Control ContainingControl {
|
||||
get {
|
||||
return _containingControl;
|
||||
}
|
||||
set {
|
||||
_containingControl = value;
|
||||
}
|
||||
}
|
||||
|
||||
// isStaticReference is true if the reference came from a ScriptManager or ScriptManagerProxy scripts collection,
|
||||
// false if it came from an IScriptControl or ExtenderControl.
|
||||
internal bool IsStaticReference {
|
||||
get {
|
||||
return _isStaticReference;
|
||||
}
|
||||
set {
|
||||
_isStaticReference = value;
|
||||
}
|
||||
}
|
||||
|
||||
// True if this is a reference to a bundle
|
||||
internal bool IsBundleReference {
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
[
|
||||
Category("Behavior"),
|
||||
DefaultValue(true),
|
||||
NotifyParentProperty(true),
|
||||
ResourceDescription("ScriptReference_NotifyScriptLoaded"),
|
||||
Obsolete("NotifyScriptLoaded is no longer required in script references.")
|
||||
]
|
||||
public bool NotifyScriptLoaded {
|
||||
get {
|
||||
return _notifyScriptLoaded;
|
||||
}
|
||||
set {
|
||||
_notifyScriptLoaded = value;
|
||||
}
|
||||
}
|
||||
|
||||
[
|
||||
Category("Behavior"),
|
||||
DefaultValue(""),
|
||||
NotifyParentProperty(true),
|
||||
ResourceDescription("ScriptReference_Path"),
|
||||
UrlProperty("*.js")
|
||||
]
|
||||
public string Path {
|
||||
get {
|
||||
return (_path == null) ? String.Empty : _path;
|
||||
}
|
||||
set {
|
||||
_path = value;
|
||||
}
|
||||
}
|
||||
|
||||
[
|
||||
ResourceDescription("ScriptReference_ResourceUICultures"),
|
||||
DefaultValue(null),
|
||||
Category("Behavior"),
|
||||
MergableProperty(false),
|
||||
NotifyParentProperty(true),
|
||||
TypeConverter(typeof(StringArrayConverter)),
|
||||
SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays",
|
||||
Justification = "String[] has existing TypeConverter support, which we don't want to add for List<string> to the assembly just for this property and at this point in the product cycle.")
|
||||
]
|
||||
public string[] ResourceUICultures {
|
||||
get {
|
||||
return _resourceUICultures;
|
||||
}
|
||||
set {
|
||||
_resourceUICultures = value;
|
||||
}
|
||||
}
|
||||
|
||||
[
|
||||
Category("Behavior"),
|
||||
DefaultValue(ScriptMode.Auto),
|
||||
NotifyParentProperty(true),
|
||||
ResourceDescription("ScriptReference_ScriptMode")
|
||||
]
|
||||
public ScriptMode ScriptMode {
|
||||
get {
|
||||
return _scriptMode;
|
||||
}
|
||||
set {
|
||||
if (value < ScriptMode.Auto || value > ScriptMode.Release) {
|
||||
throw new ArgumentOutOfRangeException("value");
|
||||
}
|
||||
_scriptMode = value;
|
||||
}
|
||||
}
|
||||
|
||||
[Obsolete("Use IsAjaxFrameworkScript(ScriptManager)")]
|
||||
protected internal abstract bool IsFromSystemWebExtensions();
|
||||
|
||||
protected internal virtual bool IsAjaxFrameworkScript(ScriptManager scriptManager) {
|
||||
return false;
|
||||
}
|
||||
|
||||
internal virtual bool IsDefiningSys {
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
// Script path may contain a query string, while script name may not
|
||||
// Release: foo.js?key=value
|
||||
// Debug: foo.debug.js?key=value
|
||||
internal static string GetDebugPath(string releasePath) {
|
||||
// Per RFC 3986, the '?' delimits the query, regardless of the protocol. This overrides
|
||||
// an earlier RFC, which stated that FTP protocol allows '?' as path characters.
|
||||
string pathWithoutQuery;
|
||||
string query;
|
||||
if (releasePath.IndexOf('?') >= 0) {
|
||||
int indexOfQuery = releasePath.IndexOf('?');
|
||||
pathWithoutQuery = releasePath.Substring(0, indexOfQuery);
|
||||
query = releasePath.Substring(indexOfQuery);
|
||||
}
|
||||
else {
|
||||
pathWithoutQuery = releasePath;
|
||||
query = null;
|
||||
}
|
||||
|
||||
if (!pathWithoutQuery.EndsWith(".js", StringComparison.Ordinal)) {
|
||||
throw new InvalidOperationException(
|
||||
String.Format(CultureInfo.CurrentUICulture, AtlasWeb.ScriptReference_InvalidReleaseScriptPath, pathWithoutQuery));
|
||||
}
|
||||
|
||||
return ReplaceExtension(pathWithoutQuery) + query;
|
||||
}
|
||||
|
||||
[SuppressMessage("Microsoft.Design", "CA1055", Justification = "Consistent with other URL properties in ASP.NET.")]
|
||||
protected internal abstract string GetUrl(ScriptManager scriptManager, bool zip);
|
||||
|
||||
// Assumes the input ends with ".js". Replaces the ".js" at the end of the input
|
||||
// with ".debug.js".
|
||||
protected static string ReplaceExtension(string pathOrName) {
|
||||
Debug.Assert(pathOrName.EndsWith(".js", StringComparison.Ordinal));
|
||||
return (pathOrName.Substring(0, pathOrName.Length - 2) + "debug.js");
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user