Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / xsp / System / Web / Configuration / BrowserCapabilitiesFactoryBase.cs / 2 / BrowserCapabilitiesFactoryBase.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- /* * Base class for browser capabilities object: just a read-only dictionary * holder that supports Init() * * */ using System.Web.UI; using System.Collections; using System.Collections.Specialized; using System.ComponentModel; using System.Globalization; using System.Security.Permissions; using System.Text; using System.Text.RegularExpressions; using System.Web.Util; namespace System.Web.Configuration { [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)] public class BrowserCapabilitiesFactoryBase { private IDictionary _matchedHeaders; private IDictionary _browserElements; private object _lock = new object(); public BrowserCapabilitiesFactoryBase() { } [EditorBrowsable(EditorBrowsableState.Advanced)] protected IDictionary BrowserElements { get { if (_browserElements == null) lock (_lock) { if (_browserElements == null) { _browserElements = Hashtable.Synchronized(new Hashtable(StringComparer.OrdinalIgnoreCase)); PopulateBrowserElements(_browserElements); } } return _browserElements; } } [EditorBrowsable(EditorBrowsableState.Advanced)] protected virtual void PopulateBrowserElements(IDictionary dictionary) { } internal IDictionary InternalGetMatchedHeaders() { return MatchedHeaders; } internal IDictionary InternalGetBrowserElements() { return BrowserElements; } [EditorBrowsable(EditorBrowsableState.Advanced)] protected IDictionary MatchedHeaders { get { if (_matchedHeaders == null) lock (_lock) { if (_matchedHeaders == null) { _matchedHeaders = Hashtable.Synchronized(new Hashtable(24, StringComparer.OrdinalIgnoreCase)); PopulateMatchedHeaders(_matchedHeaders); } } return _matchedHeaders; } } [EditorBrowsable(EditorBrowsableState.Advanced)] protected virtual void PopulateMatchedHeaders(IDictionary dictionary) { } internal int CompareFilters(string filter1, string filter2) { bool isFilter1DefaultFilter = String.IsNullOrEmpty(filter1); bool isFilter2DefaultFilter = String.IsNullOrEmpty(filter2); IDictionary browsers = BrowserElements; bool filter1Exists = (browsers.Contains(filter1)) || isFilter1DefaultFilter; bool filter2Exists = (browsers.Contains(filter2)) || isFilter2DefaultFilter; if (!filter1Exists) { if (!filter2Exists) { return 0; } else { return -1; } } else { if (!filter2Exists) { return 1; } } if (isFilter1DefaultFilter && !isFilter2DefaultFilter) { return 1; } if (isFilter2DefaultFilter && !isFilter1DefaultFilter) { return -1; } if (isFilter1DefaultFilter && isFilter2DefaultFilter) { return 0; } int filter1Depth = (int)((Triplet)BrowserElements[filter1]).Third; int filter2Depth = (int)((Triplet)BrowserElements[filter2]).Third; return filter2Depth - filter1Depth; } public virtual void ConfigureBrowserCapabilities(NameValueCollection headers, HttpBrowserCapabilities browserCaps) { } // CodeGenerator will override this function to declare custom browser capabilities public virtual void ConfigureCustomCapabilities(NameValueCollection headers, HttpBrowserCapabilities browserCaps) { } internal static string GetBrowserCapKey(IDictionary headers, HttpRequest request) { StringBuilder sb = new StringBuilder(); foreach(String key in headers.Keys) { if (key.Length == 0) { sb.Append(HttpCapabilitiesEvaluator.GetUserAgent(request)); } else { sb.Append(request.Headers[key]); } sb.Append("\n"); } return sb.ToString(); } internal HttpBrowserCapabilities GetHttpBrowserCapabilities(HttpRequest request) { if (request == null) throw new ArgumentNullException("request"); NameValueCollection headers = request.Headers; HttpBrowserCapabilities browserCaps = new HttpBrowserCapabilities(); Hashtable values = new Hashtable(180, StringComparer.OrdinalIgnoreCase); values[String.Empty] = HttpCapabilitiesEvaluator.GetUserAgent(request); browserCaps.Capabilities = values; ConfigureBrowserCapabilities(headers, browserCaps); ConfigureCustomCapabilities(headers, browserCaps); return browserCaps; } protected bool IsBrowserUnknown(HttpCapabilitiesBase browserCaps) { // We want to ignore the "Default" node, which will also be matched. if(browserCaps.Browsers == null || browserCaps.Browsers.Count <= 1) { return true; } return false; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- /* * Base class for browser capabilities object: just a read-only dictionary * holder that supports Init() * * */ using System.Web.UI; using System.Collections; using System.Collections.Specialized; using System.ComponentModel; using System.Globalization; using System.Security.Permissions; using System.Text; using System.Text.RegularExpressions; using System.Web.Util; namespace System.Web.Configuration { [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)] public class BrowserCapabilitiesFactoryBase { private IDictionary _matchedHeaders; private IDictionary _browserElements; private object _lock = new object(); public BrowserCapabilitiesFactoryBase() { } [EditorBrowsable(EditorBrowsableState.Advanced)] protected IDictionary BrowserElements { get { if (_browserElements == null) lock (_lock) { if (_browserElements == null) { _browserElements = Hashtable.Synchronized(new Hashtable(StringComparer.OrdinalIgnoreCase)); PopulateBrowserElements(_browserElements); } } return _browserElements; } } [EditorBrowsable(EditorBrowsableState.Advanced)] protected virtual void PopulateBrowserElements(IDictionary dictionary) { } internal IDictionary InternalGetMatchedHeaders() { return MatchedHeaders; } internal IDictionary InternalGetBrowserElements() { return BrowserElements; } [EditorBrowsable(EditorBrowsableState.Advanced)] protected IDictionary MatchedHeaders { get { if (_matchedHeaders == null) lock (_lock) { if (_matchedHeaders == null) { _matchedHeaders = Hashtable.Synchronized(new Hashtable(24, StringComparer.OrdinalIgnoreCase)); PopulateMatchedHeaders(_matchedHeaders); } } return _matchedHeaders; } } [EditorBrowsable(EditorBrowsableState.Advanced)] protected virtual void PopulateMatchedHeaders(IDictionary dictionary) { } internal int CompareFilters(string filter1, string filter2) { bool isFilter1DefaultFilter = String.IsNullOrEmpty(filter1); bool isFilter2DefaultFilter = String.IsNullOrEmpty(filter2); IDictionary browsers = BrowserElements; bool filter1Exists = (browsers.Contains(filter1)) || isFilter1DefaultFilter; bool filter2Exists = (browsers.Contains(filter2)) || isFilter2DefaultFilter; if (!filter1Exists) { if (!filter2Exists) { return 0; } else { return -1; } } else { if (!filter2Exists) { return 1; } } if (isFilter1DefaultFilter && !isFilter2DefaultFilter) { return 1; } if (isFilter2DefaultFilter && !isFilter1DefaultFilter) { return -1; } if (isFilter1DefaultFilter && isFilter2DefaultFilter) { return 0; } int filter1Depth = (int)((Triplet)BrowserElements[filter1]).Third; int filter2Depth = (int)((Triplet)BrowserElements[filter2]).Third; return filter2Depth - filter1Depth; } public virtual void ConfigureBrowserCapabilities(NameValueCollection headers, HttpBrowserCapabilities browserCaps) { } // CodeGenerator will override this function to declare custom browser capabilities public virtual void ConfigureCustomCapabilities(NameValueCollection headers, HttpBrowserCapabilities browserCaps) { } internal static string GetBrowserCapKey(IDictionary headers, HttpRequest request) { StringBuilder sb = new StringBuilder(); foreach(String key in headers.Keys) { if (key.Length == 0) { sb.Append(HttpCapabilitiesEvaluator.GetUserAgent(request)); } else { sb.Append(request.Headers[key]); } sb.Append("\n"); } return sb.ToString(); } internal HttpBrowserCapabilities GetHttpBrowserCapabilities(HttpRequest request) { if (request == null) throw new ArgumentNullException("request"); NameValueCollection headers = request.Headers; HttpBrowserCapabilities browserCaps = new HttpBrowserCapabilities(); Hashtable values = new Hashtable(180, StringComparer.OrdinalIgnoreCase); values[String.Empty] = HttpCapabilitiesEvaluator.GetUserAgent(request); browserCaps.Capabilities = values; ConfigureBrowserCapabilities(headers, browserCaps); ConfigureCustomCapabilities(headers, browserCaps); return browserCaps; } protected bool IsBrowserUnknown(HttpCapabilitiesBase browserCaps) { // We want to ignore the "Default" node, which will also be matched. if(browserCaps.Browsers == null || browserCaps.Browsers.Count <= 1) { return true; } return false; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CopyEncoder.cs
- IMembershipProvider.cs
- XmlSchemaDatatype.cs
- DataGridViewCellStyle.cs
- DesignerDataParameter.cs
- MemberProjectionIndex.cs
- Light.cs
- LogEntryUtils.cs
- BitmapData.cs
- SqlDataSourceQuery.cs
- SqlTransaction.cs
- AuthenticationException.cs
- TextSchema.cs
- safelinkcollection.cs
- Int32.cs
- SecurityValidationBehavior.cs
- TrackingCondition.cs
- DataFieldCollectionEditor.cs
- DocumentViewerBaseAutomationPeer.cs
- Classification.cs
- XmlValidatingReaderImpl.cs
- CollectionViewGroupRoot.cs
- DataStorage.cs
- LiteralTextParser.cs
- DataObjectAttribute.cs
- EntryWrittenEventArgs.cs
- IgnoreSectionHandler.cs
- UserControlBuildProvider.cs
- EventLogLink.cs
- SearchForVirtualItemEventArgs.cs
- GeometryHitTestParameters.cs
- TargetInvocationException.cs
- RefreshPropertiesAttribute.cs
- DiagnosticsConfiguration.cs
- DBCommandBuilder.cs
- DesignerCommandAdapter.cs
- SqlCommandSet.cs
- ProvidePropertyAttribute.cs
- SmtpClient.cs
- InkSerializer.cs
- InstancePersistenceCommand.cs
- SqlDataSourceSummaryPanel.cs
- SvcMapFileSerializer.cs
- NGCSerializer.cs
- CrossSiteScriptingValidation.cs
- AttachmentCollection.cs
- BrushMappingModeValidation.cs
- ParserHooks.cs
- SafeBitVector32.cs
- ConstructorArgumentAttribute.cs
- Calendar.cs
- WindowsFont.cs
- TreeView.cs
- EnumValAlphaComparer.cs
- RulePatternOps.cs
- ActivityPropertyReference.cs
- DataSourceXmlElementAttribute.cs
- DayRenderEvent.cs
- SendKeys.cs
- URLAttribute.cs
- CompilerGlobalScopeAttribute.cs
- Grammar.cs
- DbConnectionStringBuilder.cs
- AttachedPropertyBrowsableAttribute.cs
- ToolboxItem.cs
- Deflater.cs
- SizeF.cs
- GridErrorDlg.cs
- ScriptingAuthenticationServiceSection.cs
- SequentialUshortCollection.cs
- XmlSchemaAll.cs
- DoubleAnimation.cs
- HotSpot.cs
- NameNode.cs
- PrintPreviewDialog.cs
- ValueConversionAttribute.cs
- TextServicesManager.cs
- SQLDateTime.cs
- DiagnosticTrace.cs
- QueryComponents.cs
- XamlStackWriter.cs
- ConstructorExpr.cs
- Button.cs
- IMembershipProvider.cs
- DataFormat.cs
- COM2PictureConverter.cs
- DelegateSerializationHolder.cs
- ObjectConverter.cs
- Vector3D.cs
- Style.cs
- StorageEntitySetMapping.cs
- TextBox.cs
- URL.cs
- CursorInteropHelper.cs
- ToolStripSeparatorRenderEventArgs.cs
- TextTrailingCharacterEllipsis.cs
- HttpResponseHeader.cs
- XmlDataProvider.cs
- UnauthorizedAccessException.cs
- DbParameterHelper.cs