2 // System.Web.Configuration.HttpCapabilitiesBase
5 // Chris Toshok (toshok@ximian.com)
7 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
9 // Permission is hereby granted, free of charge, to any person obtaining
10 // a copy of this software and associated documentation files (the
11 // "Software"), to deal in the Software without restriction, including
12 // without limitation the rights to use, copy, modify, merge, publish,
13 // distribute, sublicense, and/or sell copies of the Software, and to
14 // permit persons to whom the Software is furnished to do so, subject to
15 // the following conditions:
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29 using System.Collections;
30 using System.Security.Permissions;
34 namespace System.Web.Configuration
36 public partial class HttpCapabilitiesBase: IFilterResolutionService
38 internal IDictionary capabilities;
40 public HttpCapabilitiesBase () { }
42 public virtual string this [string key]
44 get { return capabilities [key] as string; }
47 internal static string GetUserAgentForDetection (HttpRequest request)
50 if (request.Context.CurrentHandler is System.Web.UI.Page)
51 ua = ((System.Web.UI.Page) request.Context.CurrentHandler).ClientTarget;
53 if (String.IsNullOrEmpty (ua)) {
54 ua = request.ClientTarget;
56 if (String.IsNullOrEmpty (ua))
57 ua = request.UserAgent;
63 static HttpBrowserCapabilities GetHttpBrowserCapabilitiesFromBrowscapini(string ua)
65 HttpBrowserCapabilities bcap = new HttpBrowserCapabilities();
66 bcap.capabilities = CapabilitiesLoader.GetCapabilities (ua);
70 public static HttpCapabilitiesBase GetConfigCapabilities (string configKey, HttpRequest request)
72 string ua = GetUserAgentForDetection (request);
73 HttpBrowserCapabilities bcap = GetHttpBrowserCapabilitiesFromBrowscapini(ua);
74 GetConfigCapabilities_called = true;
75 if (HttpApplicationFactory.AppBrowsersFiles.Length > 0)
76 bcap = HttpApplicationFactory.CapabilitiesProcessor.Process(request, bcap.Capabilities);
82 // Used by unit tests to determine whether GetConfigCapabilities was called.
83 static internal bool GetConfigCapabilities_called;
85 protected virtual void Init ()
89 int IFilterResolutionService.CompareFilters (string filter1, string filter2)
91 throw new NotImplementedException ();
94 bool IFilterResolutionService.EvaluateFilter (string filterName)
96 throw new NotImplementedException ();
99 public void AddBrowser (string browserName)
103 public HtmlTextWriter CreateHtmlTextWriter (TextWriter w)
105 return (HtmlTextWriter) Activator.CreateInstance (TagWriter, new object[] {w});
108 public void DisableOptimizedCacheKey ()
110 throw new NotImplementedException ();
113 IDictionary adapters = null;
114 public IDictionary Adapters {
116 if (!Get (HaveAdapters)) {
117 adapters = GetAdapters();
125 internal virtual IDictionary GetAdapters ()
127 return new Hashtable();
130 bool canCombineFormsInDeck;
131 public virtual bool CanCombineFormsInDeck {
133 if (!Get (HaveCanCombineFormsInDeck)) {
134 canCombineFormsInDeck = ReadBoolean ("cancombineformsindeck");
135 Set (HaveCanCombineFormsInDeck);
138 return canCombineFormsInDeck;
142 bool canInitiateVoiceCall;
143 public virtual bool CanInitiateVoiceCall {
145 if (!Get (HaveCanInitiateVoiceCall)) {
146 canInitiateVoiceCall = ReadBoolean ("caninitiatevoicecall");
147 Set (HaveCanInitiateVoiceCall);
150 return canInitiateVoiceCall;
154 bool canRenderAfterInputOrSelectElement;
155 public virtual bool CanRenderAfterInputOrSelectElement {
157 if (!Get (HaveCanRenderAfterInputOrSelectElement)) {
158 canRenderAfterInputOrSelectElement = ReadBoolean ("canrenderafterinputorselectelement");
159 Set (HaveCanRenderAfterInputOrSelectElement);
162 return canRenderAfterInputOrSelectElement;
166 bool canRenderEmptySelects;
167 public virtual bool CanRenderEmptySelects {
169 if (!Get (HaveCanRenderEmptySelects)) {
170 canRenderEmptySelects = ReadBoolean ("canrenderemptyselects");
171 Set (HaveCanRenderEmptySelects);
174 return canRenderEmptySelects;
178 bool canRenderInputAndSelectElementsTogether;
179 public virtual bool CanRenderInputAndSelectElementsTogether {
181 if (!Get (HaveCanRenderInputAndSelectElementsTogether)) {
182 canRenderInputAndSelectElementsTogether = ReadBoolean ("canrenderinputandselectelementstogether");
183 Set (HaveCanRenderInputAndSelectElementsTogether);
186 return canRenderInputAndSelectElementsTogether;
190 bool canRenderMixedSelects;
191 public virtual bool CanRenderMixedSelects {
193 if (!Get (HaveCanRenderMixedSelects)) {
194 canRenderMixedSelects = ReadBoolean ("canrendermixedselects");
195 Set (HaveCanRenderMixedSelects);
198 return canRenderMixedSelects;
202 bool canRenderOneventAndPrevElementsTogether;
203 public virtual bool CanRenderOneventAndPrevElementsTogether {
205 if (!Get (HaveCanRenderOneventAndPrevElementsTogether)) {
206 canRenderOneventAndPrevElementsTogether = ReadBoolean ("canrenderoneventandprevelementstogether");
207 Set (HaveCanRenderOneventAndPrevElementsTogether);
210 return canRenderOneventAndPrevElementsTogether;
214 bool canRenderPostBackCards;
215 public virtual bool CanRenderPostBackCards {
217 if (!Get (HaveCanRenderPostBackCards)) {
218 canRenderPostBackCards = ReadBoolean ("canrenderpostbackcards");
219 Set (HaveCanRenderPostBackCards);
222 return canRenderPostBackCards;
226 bool canRenderSetvarZeroWithMultiSelectionList;
227 public virtual bool CanRenderSetvarZeroWithMultiSelectionList {
229 if (!Get (HaveCanRenderSetvarZeroWithMultiSelectionList)) {
230 canRenderSetvarZeroWithMultiSelectionList = ReadBoolean ("canrendersetvarzerowithmultiselectionlist");
231 Set (HaveCanRenderSetvarZeroWithMultiSelectionList);
234 return canRenderSetvarZeroWithMultiSelectionList;
239 public virtual bool CanSendMail {
241 if (!Get (HaveCanSendMail)) {
242 canSendMail = ReadBoolean ("cansendmail");
243 Set (HaveCanSendMail);
250 public IDictionary Capabilities {
251 get { return capabilities; }
252 set { capabilities = value; }
255 int defaultSubmitButtonLimit;
256 public virtual int DefaultSubmitButtonLimit {
258 if (!Get (HaveDefaultSubmitButtonLimit)) {
259 defaultSubmitButtonLimit = ReadInt32 ("defaultsubmitbuttonlimit");
260 Set (HaveDefaultSubmitButtonLimit);
263 return defaultSubmitButtonLimit;
267 int gatewayMajorVersion;
268 public virtual int GatewayMajorVersion {
270 if (!Get (HaveGatewayMajorVersion)) {
271 gatewayMajorVersion = ReadInt32 ("gatewaymajorversion");
272 Set (HaveGatewayMajorVersion);
275 return gatewayMajorVersion;
279 Double gatewayMinorVersion;
280 public virtual Double GatewayMinorVersion {
282 if (!Get (HaveGatewayMinorVersion)) {
283 gatewayMinorVersion = ReadDouble ("gatewayminorversion");
284 Set (HaveGatewayMinorVersion);
287 return gatewayMinorVersion;
291 string gatewayVersion;
292 public virtual string GatewayVersion {
294 if (!Get (HaveGatewayVersion)) {
295 gatewayVersion = ReadString ("gatewayversion");
296 Set (HaveGatewayVersion);
299 return gatewayVersion;
304 public virtual bool HasBackButton {
306 if (!Get (HaveHasBackButton)) {
307 hasBackButton = ReadBoolean ("hasbackbutton");
308 Set (HaveHasBackButton);
311 return hasBackButton;
315 bool hidesRightAlignedMultiselectScrollbars;
316 public virtual bool HidesRightAlignedMultiselectScrollbars {
318 if (!Get (HaveHidesRightAlignedMultiselectScrollbars)) {
319 hidesRightAlignedMultiselectScrollbars = ReadBoolean ("hidesrightalignedmultiselectscrollbars");
320 Set (HaveHidesRightAlignedMultiselectScrollbars);
323 return hidesRightAlignedMultiselectScrollbars;
327 string htmlTextWriter;
328 public string HtmlTextWriter {
330 if (!Get (HaveHtmlTextWriter)) {
331 htmlTextWriter = ReadString ("htmlTextWriter");
332 Set (HaveHtmlTextWriter);
335 return htmlTextWriter;
338 Set (HaveHtmlTextWriter);
339 htmlTextWriter = value;
344 get { return this.Browser; }
348 public virtual string InputType {
350 if (!Get (HaveInputType)) {
351 inputType = ReadString ("inputtype");
360 public virtual bool IsColor {
362 if (!Get (HaveIsColor)) {
363 isColor = ReadBoolean ("iscolor");
372 public virtual bool IsMobileDevice {
374 if (!Get (HaveIsMobileDevice)) {
375 isMobileDevice = ReadBoolean ("ismobiledevice");
376 Set (HaveIsMobileDevice);
379 return isMobileDevice;
383 Version jscriptVersion;
384 public Version JScriptVersion {
386 if (!Get (HaveJScriptVersion)) {
387 jscriptVersion = ReadVersion ("jscriptversion");
388 Set (HaveJScriptVersion);
391 return jscriptVersion;
395 int maximumHrefLength;
396 public virtual int MaximumHrefLength {
398 if (!Get (HaveMaximumHrefLength)) {
399 maximumHrefLength = ReadInt32 ("maximumhreflength");
400 Set (HaveMaximumHrefLength);
403 return maximumHrefLength;
407 int maximumRenderedPageSize;
408 public virtual int MaximumRenderedPageSize {
410 if (!Get (HaveMaximumRenderedPageSize)) {
411 maximumRenderedPageSize = ReadInt32 ("maximumrenderedpagesize");
412 Set (HaveMaximumRenderedPageSize);
415 return maximumRenderedPageSize;
419 int maximumSoftkeyLabelLength;
420 public virtual int MaximumSoftkeyLabelLength {
422 if (!Get (HaveMaximumSoftkeyLabelLength)) {
423 maximumSoftkeyLabelLength = ReadInt32 ("maximumsoftkeylabellength");
424 Set (HaveMaximumSoftkeyLabelLength);
427 return maximumSoftkeyLabelLength;
431 string minorVersionString;
432 public string MinorVersionString {
434 if (!Get (HaveMinorVersionString)) {
435 minorVersionString = ReadString ("minorversionstring");
436 Set (HaveMinorVersionString);
439 return minorVersionString;
443 string mobileDeviceManufacturer;
444 public virtual string MobileDeviceManufacturer {
446 if (!Get (HaveMobileDeviceManufacturer)) {
447 mobileDeviceManufacturer = ReadString ("mobiledevicemanufacturer");
448 Set (HaveMobileDeviceManufacturer);
451 return mobileDeviceManufacturer;
455 string mobileDeviceModel;
456 public virtual string MobileDeviceModel {
458 if (!Get (HaveMobileDeviceModel)) {
459 mobileDeviceModel = ReadString ("mobiledevicemodel");
460 Set (HaveMobileDeviceModel);
463 return mobileDeviceModel;
467 int numberOfSoftkeys;
468 public virtual int NumberOfSoftkeys {
470 if (!Get (HaveNumberOfSoftkeys)) {
471 numberOfSoftkeys = ReadInt32 ("numberofsoftkeys");
472 Set (HaveNumberOfSoftkeys);
475 return numberOfSoftkeys;
479 string preferredImageMime;
480 public virtual string PreferredImageMime {
482 if (!Get (HavePreferredImageMime)) {
483 preferredImageMime = ReadString ("preferredimagemime");
484 Set (HavePreferredImageMime);
487 return preferredImageMime;
491 string preferredRenderingMime;
492 public virtual string PreferredRenderingMime {
494 if (!Get (HavePreferredRenderingMime)) {
495 preferredRenderingMime = ReadString ("preferredrenderingmime");
496 Set (HavePreferredRenderingMime);
499 return preferredRenderingMime;
503 string preferredRenderingType;
504 public virtual string PreferredRenderingType {
506 if (!Get (HavePreferredRenderingType)) {
507 preferredRenderingType = ReadString ("preferredrenderingtype");
508 Set (HavePreferredRenderingType);
511 return preferredRenderingType;
515 string preferredRequestEncoding;
516 public virtual string PreferredRequestEncoding {
518 if (!Get (HavePreferredRequestEncoding)) {
519 preferredRequestEncoding = ReadString ("preferredrequestencoding");
520 Set (HavePreferredRequestEncoding);
523 return preferredRequestEncoding;
527 string preferredResponseEncoding;
528 public virtual string PreferredResponseEncoding {
530 if (!Get (HavePreferredResponseEncoding)) {
531 preferredResponseEncoding = ReadString ("preferredresponseencoding");
532 Set (HavePreferredResponseEncoding);
535 return preferredResponseEncoding;
539 bool rendersBreakBeforeWmlSelectAndInput;
540 public virtual bool RendersBreakBeforeWmlSelectAndInput {
542 if (!Get (HaveRendersBreakBeforeWmlSelectAndInput)) {
543 rendersBreakBeforeWmlSelectAndInput = ReadBoolean ("rendersbreakbeforewmlselectandinput");
544 Set (HaveRendersBreakBeforeWmlSelectAndInput);
547 return rendersBreakBeforeWmlSelectAndInput;
551 bool rendersBreaksAfterHtmlLists;
552 public virtual bool RendersBreaksAfterHtmlLists {
554 if (!Get (HaveRendersBreaksAfterHtmlLists)) {
555 rendersBreaksAfterHtmlLists = ReadBoolean ("rendersbreaksafterhtmllists");
556 Set (HaveRendersBreaksAfterHtmlLists);
559 return rendersBreaksAfterHtmlLists;
563 bool rendersBreaksAfterWmlAnchor;
564 public virtual bool RendersBreaksAfterWmlAnchor {
566 if (!Get (HaveRendersBreaksAfterWmlAnchor)) {
567 rendersBreaksAfterWmlAnchor = ReadBoolean ("rendersbreaksafterwmlanchor");
568 Set (HaveRendersBreaksAfterWmlAnchor);
571 return rendersBreaksAfterWmlAnchor;
575 bool rendersBreaksAfterWmlInput;
576 public virtual bool RendersBreaksAfterWmlInput {
578 if (!Get (HaveRendersBreaksAfterWmlInput)) {
579 rendersBreaksAfterWmlInput = ReadBoolean ("rendersbreaksafterwmlinput");
580 Set (HaveRendersBreaksAfterWmlInput);
583 return rendersBreaksAfterWmlInput;
587 bool rendersWmlDoAcceptsInline;
588 public virtual bool RendersWmlDoAcceptsInline {
590 if (!Get (HaveRendersWmlDoAcceptsInline)) {
591 rendersWmlDoAcceptsInline = ReadBoolean ("renderswmldoacceptsinline");
592 Set (HaveRendersWmlDoAcceptsInline);
595 return rendersWmlDoAcceptsInline;
599 bool rendersWmlSelectsAsMenuCards;
600 public virtual bool RendersWmlSelectsAsMenuCards {
602 if (!Get (HaveRendersWmlSelectsAsMenuCards)) {
603 rendersWmlSelectsAsMenuCards = ReadBoolean ("renderswmlselectsasmenucards");
604 Set (HaveRendersWmlSelectsAsMenuCards);
607 return rendersWmlSelectsAsMenuCards;
611 string requiredMetaTagNameValue;
612 public virtual string RequiredMetaTagNameValue {
614 if (!Get (HaveRequiredMetaTagNameValue)) {
615 requiredMetaTagNameValue = ReadString ("requiredmetatagnamevalue");
616 Set (HaveRequiredMetaTagNameValue);
619 return requiredMetaTagNameValue;
623 bool requiresAttributeColonSubstitution;
624 public virtual bool RequiresAttributeColonSubstitution {
626 if (!Get (HaveRequiresAttributeColonSubstitution)) {
627 requiresAttributeColonSubstitution = ReadBoolean ("requiresattributecolonsubstitution");
628 Set (HaveRequiresAttributeColonSubstitution);
631 return requiresAttributeColonSubstitution;
635 bool requiresContentTypeMetaTag;
636 public virtual bool RequiresContentTypeMetaTag {
638 if (!Get (HaveRequiresContentTypeMetaTag)) {
639 requiresContentTypeMetaTag = ReadBoolean ("requiresContentTypeMetaTag");
640 Set (HaveRequiresContentTypeMetaTag);
643 return requiresContentTypeMetaTag;
647 bool requiresControlStateInSession;
648 public bool RequiresControlStateInSession {
650 if (!Get (HaveRequiresControlStateInSession)) {
651 requiresControlStateInSession = ReadBoolean ("requiresControlStateInSession");
652 Set (HaveRequiresControlStateInSession);
655 return requiresControlStateInSession;
659 bool requiresDBCSCharacter;
660 public virtual bool RequiresDBCSCharacter {
662 if (!Get (HaveRequiresDBCSCharacter)) {
663 requiresDBCSCharacter = ReadBoolean ("requiresdbcscharacter");
664 Set (HaveRequiresDBCSCharacter);
667 return requiresDBCSCharacter;
671 bool requiresHtmlAdaptiveErrorReporting;
672 public virtual bool RequiresHtmlAdaptiveErrorReporting {
674 if (!Get (HaveRequiresHtmlAdaptiveErrorReporting)) {
675 requiresHtmlAdaptiveErrorReporting = ReadBoolean ("requireshtmladaptiveerrorreporting");
676 Set (HaveRequiresHtmlAdaptiveErrorReporting);
679 return requiresHtmlAdaptiveErrorReporting;
683 bool requiresLeadingPageBreak;
684 public virtual bool RequiresLeadingPageBreak {
686 if (!Get (HaveRequiresLeadingPageBreak)) {
687 requiresLeadingPageBreak = ReadBoolean ("requiresleadingpagebreak");
688 Set (HaveRequiresLeadingPageBreak);
691 return requiresLeadingPageBreak;
695 bool requiresNoBreakInFormatting;
696 public virtual bool RequiresNoBreakInFormatting {
698 if (!Get (HaveRequiresNoBreakInFormatting)) {
699 requiresNoBreakInFormatting = ReadBoolean ("requiresnobreakinformatting");
700 Set (HaveRequiresNoBreakInFormatting);
703 return requiresNoBreakInFormatting;
707 bool requiresOutputOptimization;
708 public virtual bool RequiresOutputOptimization {
710 if (!Get (HaveRequiresOutputOptimization)) {
711 requiresOutputOptimization = ReadBoolean ("requiresoutputoptimization");
712 Set (HaveRequiresOutputOptimization);
715 return requiresOutputOptimization;
719 bool requiresPhoneNumbersAsPlainText;
720 public virtual bool RequiresPhoneNumbersAsPlainText {
722 if (!Get (HaveRequiresPhoneNumbersAsPlainText)) {
723 requiresPhoneNumbersAsPlainText = ReadBoolean ("requiresphonenumbersasplaintext");
724 Set (HaveRequiresPhoneNumbersAsPlainText);
727 return requiresPhoneNumbersAsPlainText;
731 bool requiresSpecialViewStateEncoding;
732 public virtual bool RequiresSpecialViewStateEncoding {
734 if (!Get (HaveRequiresSpecialViewStateEncoding)) {
735 requiresSpecialViewStateEncoding = ReadBoolean ("requiresspecialviewstateencoding");
736 Set (HaveRequiresSpecialViewStateEncoding);
739 return requiresSpecialViewStateEncoding;
743 bool requiresUniqueFilePathSuffix;
744 public virtual bool RequiresUniqueFilePathSuffix {
746 if (!Get (HaveRequiresUniqueFilePathSuffix)) {
747 requiresUniqueFilePathSuffix = ReadBoolean ("requiresuniquefilepathsuffix");
748 Set (HaveRequiresUniqueFilePathSuffix);
751 return requiresUniqueFilePathSuffix;
755 bool requiresUniqueHtmlCheckboxNames;
756 public virtual bool RequiresUniqueHtmlCheckboxNames {
758 if (!Get (HaveRequiresUniqueHtmlCheckboxNames)) {
759 requiresUniqueHtmlCheckboxNames = ReadBoolean ("requiresuniquehtmlcheckboxnames");
760 Set (HaveRequiresUniqueHtmlCheckboxNames);
763 return requiresUniqueHtmlCheckboxNames;
767 bool requiresUniqueHtmlInputNames;
768 public virtual bool RequiresUniqueHtmlInputNames {
770 if (!Get (HaveRequiresUniqueHtmlInputNames)) {
771 requiresUniqueHtmlInputNames = ReadBoolean ("requiresuniquehtmlinputnames");
772 Set (HaveRequiresUniqueHtmlInputNames);
775 return requiresUniqueHtmlInputNames;
779 bool requiresUrlEncodedPostfieldValues;
780 public virtual bool RequiresUrlEncodedPostfieldValues {
782 if (!Get (HaveRequiresUrlEncodedPostfieldValues)) {
783 requiresUrlEncodedPostfieldValues = ReadBoolean ("requiresurlencodedpostfieldvalues");
784 Set (HaveRequiresUrlEncodedPostfieldValues);
787 return requiresUrlEncodedPostfieldValues;
792 public virtual int ScreenBitDepth {
794 if (!Get (HaveScreenBitDepth)) {
795 screenBitDepth = ReadInt32 ("screenbitdepth");
796 Set (HaveScreenBitDepth);
799 return screenBitDepth;
803 int screenCharactersHeight;
804 public virtual int ScreenCharactersHeight {
806 if (!Get (HaveScreenCharactersHeight)) {
807 screenCharactersHeight = ReadInt32 ("screencharactersheight");
808 Set (HaveScreenCharactersHeight);
811 return screenCharactersHeight;
815 int screenCharactersWidth;
816 public virtual int ScreenCharactersWidth {
818 if (!Get (HaveScreenCharactersWidth)) {
819 screenCharactersWidth = ReadInt32 ("screencharacterswidth");
820 Set (HaveScreenCharactersWidth);
823 return screenCharactersWidth;
827 int screenPixelsHeight;
828 public virtual int ScreenPixelsHeight {
830 if (!Get (HaveScreenPixelsHeight)) {
831 screenPixelsHeight = ReadInt32 ("screenpixelsheight");
832 Set (HaveScreenPixelsHeight);
835 return screenPixelsHeight;
839 int screenPixelsWidth;
840 public virtual int ScreenPixelsWidth {
842 if (!Get (HaveScreenPixelsWidth)) {
843 screenPixelsWidth = ReadInt32 ("screenpixelswidth");
844 Set (HaveScreenPixelsWidth);
847 return screenPixelsWidth;
851 bool supportsAccesskeyAttribute;
852 public virtual bool SupportsAccesskeyAttribute {
854 if (!Get (HaveSupportsAccesskeyAttribute)) {
855 supportsAccesskeyAttribute = ReadBoolean ("supportsaccesskeyattribute");
856 Set (HaveSupportsAccesskeyAttribute);
859 return supportsAccesskeyAttribute;
863 bool supportsBodyColor;
864 public virtual bool SupportsBodyColor {
866 if (!Get (HaveSupportsBodyColor)) {
867 supportsBodyColor = ReadBoolean ("supportsbodycolor");
868 Set (HaveSupportsBodyColor);
871 return supportsBodyColor;
876 public virtual bool SupportsBold {
878 if (!Get (HaveSupportsBold)) {
879 supportsBold = ReadBoolean ("supportsbold");
880 Set (HaveSupportsBold);
887 bool supportsCacheControlMetaTag;
888 public virtual bool SupportsCacheControlMetaTag {
890 if (!Get (HaveSupportsCacheControlMetaTag)) {
891 supportsCacheControlMetaTag = ReadBoolean ("supportscachecontrolmetatag");
892 Set (HaveSupportsCacheControlMetaTag);
895 return supportsCacheControlMetaTag;
899 bool supportsCallback;
900 public virtual bool SupportsCallback {
902 if (!Get (HaveSupportsCallback)) {
903 supportsCallback = ReadBoolean ("supportscallback");
904 Set (HaveSupportsCallback);
907 return supportsCallback;
912 public virtual bool SupportsCss {
914 if (!Get (HaveSupportsCss)) {
915 supportsCss = ReadBoolean ("supportscss");
916 Set (HaveSupportsCss);
923 bool supportsDivAlign;
924 public virtual bool SupportsDivAlign {
926 if (!Get (HaveSupportsDivAlign)) {
927 supportsDivAlign = ReadBoolean ("supportsdivalign");
928 Set (HaveSupportsDivAlign);
931 return supportsDivAlign;
935 bool supportsDivNoWrap;
936 public virtual bool SupportsDivNoWrap {
938 if (!Get (HaveSupportsDivNoWrap)) {
939 supportsDivNoWrap = ReadBoolean ("supportsdivnowrap");
940 Set (HaveRequiresDBCSCharacter);
943 return supportsDivNoWrap;
947 bool supportsEmptyStringInCookieValue;
948 public virtual bool SupportsEmptyStringInCookieValue {
950 if (!Get (HaveSupportsEmptyStringInCookieValue)) {
951 supportsEmptyStringInCookieValue = ReadBoolean ("supportsemptystringincookievalue");
952 Set (HaveSupportsEmptyStringInCookieValue);
955 return supportsEmptyStringInCookieValue;
959 bool supportsFontColor;
960 public virtual bool SupportsFontColor {
962 if (!Get (HaveSupportsFontColor)) {
963 supportsFontColor = ReadBoolean ("supportsfontcolor");
964 Set (HaveSupportsFontColor);
967 return supportsFontColor;
971 bool supportsFontName;
972 public virtual bool SupportsFontName {
974 if (!Get (HaveSupportsFontName)) {
975 supportsFontName = ReadBoolean ("supportsfontname");
976 Set (HaveSupportsFontName);
979 return supportsFontName;
983 bool supportsFontSize;
984 public virtual bool SupportsFontSize {
986 if (!Get (HaveSupportsFontSize)) {
987 supportsFontSize = ReadBoolean ("supportsfontsize");
988 Set (HaveSupportsFontSize);
991 return supportsFontSize;
995 bool supportsImageSubmit;
996 public virtual bool SupportsImageSubmit {
998 if (!Get (HaveSupportsImageSubmit)) {
999 supportsImageSubmit = ReadBoolean ("supportsimagesubmit");
1000 Set (HaveSupportsImageSubmit);
1003 return supportsImageSubmit;
1007 bool supportsIModeSymbols;
1008 public virtual bool SupportsIModeSymbols {
1010 if (!Get (HaveSupportsIModeSymbols)) {
1011 supportsIModeSymbols = ReadBoolean ("supportsimodesymbols");
1012 Set (HaveSupportsIModeSymbols);
1015 return supportsIModeSymbols;
1019 bool supportsInputIStyle;
1020 public virtual bool SupportsInputIStyle {
1022 if (!Get (HaveSupportsInputIStyle)) {
1023 supportsInputIStyle = ReadBoolean ("supportsinputistyle");
1024 Set (HaveSupportsInputIStyle);
1027 return supportsInputIStyle;
1031 bool supportsInputMode;
1032 public virtual bool SupportsInputMode {
1034 if (!Get (HaveSupportsInputMode)) {
1035 supportsInputMode = ReadBoolean ("supportsinputmode");
1036 Set (HaveSupportsInputMode);
1039 return supportsInputMode;
1043 bool supportsItalic;
1044 public virtual bool SupportsItalic {
1046 if (!Get (HaveSupportsItalic)) {
1047 supportsItalic = ReadBoolean ("supportsitalic");
1048 Set (HaveSupportsItalic);
1051 return supportsItalic;
1055 bool supportsJPhoneMultiMediaAttributes;
1056 public virtual bool SupportsJPhoneMultiMediaAttributes {
1058 if (!Get (HaveSupportsJPhoneMultiMediaAttributes)) {
1059 supportsJPhoneMultiMediaAttributes = ReadBoolean ("supportsjphonemultimediaattributes");
1060 Set (HaveSupportsJPhoneMultiMediaAttributes);
1063 return supportsJPhoneMultiMediaAttributes;
1067 bool supportsJPhoneSymbols;
1068 public virtual bool SupportsJPhoneSymbols {
1070 if (!Get (HaveSupportsJPhoneSymbols)) {
1071 supportsJPhoneSymbols = ReadBoolean ("supportsjphonesymbols");
1072 Set (HaveSupportsJPhoneSymbols);
1075 return supportsJPhoneSymbols;
1079 bool supportsQueryStringInFormAction;
1080 public virtual bool SupportsQueryStringInFormAction {
1082 if (!Get (HaveSupportsQueryStringInFormAction)) {
1083 supportsQueryStringInFormAction = ReadBoolean ("supportsquerystringinformaction");
1084 Set (HaveSupportsQueryStringInFormAction);
1087 return supportsQueryStringInFormAction;
1091 bool supportsRedirectWithCookie;
1092 public virtual bool SupportsRedirectWithCookie {
1094 if (!Get (HaveSupportsRedirectWithCookie)) {
1095 supportsRedirectWithCookie = ReadBoolean ("supportsredirectwithcookie");
1096 Set (HaveSupportsRedirectWithCookie);
1099 return supportsRedirectWithCookie;
1103 bool supportsSelectMultiple;
1104 public virtual bool SupportsSelectMultiple {
1106 if (!Get (HaveSupportsSelectMultiple)) {
1107 supportsSelectMultiple = ReadBoolean ("supportsselectmultiple");
1108 Set (HaveSupportsSelectMultiple);
1111 return supportsSelectMultiple;
1115 bool supportsUncheck;
1116 public virtual bool SupportsUncheck {
1118 if (!Get (HaveSupportsUncheck)) {
1119 supportsUncheck = ReadBoolean ("supportsuncheck");
1120 Set (HaveSupportsUncheck);
1123 return supportsUncheck;
1127 bool supportsXmlHttp;
1128 public virtual bool SupportsXmlHttp {
1130 if (!Get (HaveSupportsXmlHttp)) {
1131 supportsXmlHttp = ReadBoolean ("supportsxmlhttp");
1132 Set (HaveSupportsXmlHttp);
1135 return supportsXmlHttp;
1139 bool useOptimizedCacheKey;
1140 public bool UseOptimizedCacheKey {
1142 if (!Get (HaveUseOptimizedCacheKey)) {
1143 useOptimizedCacheKey = ReadBoolean ("useoptimizedcachekey");
1144 Set (HaveUseOptimizedCacheKey);
1147 return useOptimizedCacheKey;