Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Framework / MS / Internal / AppModel / AppModelKnownContentFactory.cs / 1 / AppModelKnownContentFactory.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // Description: // Provides a method to turn a baml stream into an object. // // // History: // 11/22/04: [....]: Initial Creation // // //--------------------------------------------------------------------------- using System; using System.IO; using System.Net; // WebPermission. using System.Security; using System.Security.Permissions; using System.Windows; using System.Windows.Markup; using System.Windows.Navigation; using MS.Internal.Controls; using MS.Internal.Navigation; using MS.Internal.Utility; using MS.Internal.Resources; using System.IO.Packaging; using MS.Internal.PresentationFramework; using System.ComponentModel; namespace MS.Internal.AppModel { // !!!! Note: Those methods are registered as MimeObjectFactory.StreamToObjectFactoryDelegate. The caller expects the // delgate to close stream. internal static class AppModelKnownContentFactory { //// Creates an object instance from a Baml stream and it's Uri // internal static object BamlConverter(Stream stream, Uri baseUri, bool canUseTopLevelBrowser, bool sandboxExternalContent, bool allowAsync, bool isJournalNavigation, out XamlReader asyncObjectConverter) { asyncObjectConverter = null; // If this stream comes from outside the application throw // if (!BaseUriHelper.IsPackApplicationUri(baseUri)) { throw new InvalidOperationException(SR.Get(SRID.BamlIsNotSupportedOutsideOfApplicationResources)); } // If this stream comes from a content file also throw Uri partUri = PackUriHelper.GetPartUri(baseUri); string partName, assemblyName, assemblyVersion, assemblyKey; BaseUriHelper.GetAssemblyNameAndPart(partUri, out partName, out assemblyName, out assemblyVersion, out assemblyKey); if (ContentFileHelper.IsContentFile(partName)) { throw new InvalidOperationException(SR.Get(SRID.BamlIsNotSupportedOutsideOfApplicationResources)); } ParserContext pc = new ParserContext(); pc.BaseUri = baseUri; pc.SkipJournaledProperties = isJournalNavigation; return Application.LoadBamlStreamWithSyncInfo(stream, pc); } //// Creates an object instance from a Xaml stream and it's Uri // ////// Critical - Keep track of this, as sandboxing is meant to be a way for an application to /// isolate xaml content from the hosting application. /// TreatAsSafe - the act of putting this content in a new webbrowser control (and by extention, a new PresentationHost) /// isolates the xaml content from the rest of the application. /// [SecurityCritical, SecurityTreatAsSafe] internal static object XamlConverter(Stream stream, Uri baseUri, bool canUseTopLevelBrowser, bool sandboxExternalContent, bool allowAsync, bool isJournalNavigation, out XamlReader asyncObjectConverter) { asyncObjectConverter = null; if (sandboxExternalContent) { if (SecurityHelper.AreStringTypesEqual(baseUri.Scheme, BaseUriHelper.PackAppBaseUri.Scheme)) { baseUri = BaseUriHelper.ConvertPackUriToAbsoluteExternallyVisibleUri(baseUri); } stream.Close(); return new WebBrowser(baseUri);; } else { ParserContext pc = new ParserContext(); pc.BaseUri = baseUri; pc.SkipJournaledProperties = isJournalNavigation; pc.XamlTypeMapper = XmlParserDefaults.DefaultMapper; if (allowAsync) { XamlReader xr = new XamlReader(); asyncObjectConverter = xr; xr.LoadCompleted += new AsyncCompletedEventHandler(OnParserComplete); // XamlReader.Load will close the stream. return xr.LoadAsync(stream, pc); } else { // XamlReader.Load will close the stream. return XamlReader.Load(stream, pc); } } } private static void OnParserComplete(object sender, AsyncCompletedEventArgs args) { // We can get this event from cancellation. We do not care about the error if there is any // that happened as a result of cancellation. if ((! args.Cancelled) && (args.Error != null)) { throw args.Error; } } internal static object HtmlXappConverter(Stream stream, Uri baseUri, bool canUseTopLevelBrowser, bool sandboxExternalContent, bool allowAsync, bool isJournalNavigation, out XamlReader asyncObjectConverter) { asyncObjectConverter = null; if (canUseTopLevelBrowser) { return null; } if (SecurityHelper.AreStringTypesEqual(baseUri.Scheme, BaseUriHelper.PackAppBaseUri.Scheme)) { baseUri = BaseUriHelper.ConvertPackUriToAbsoluteExternallyVisibleUri(baseUri); } stream.Close(); return new WebBrowser(baseUri); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XmlReflectionImporter.cs
- FastPropertyAccessor.cs
- DrawingContextWalker.cs
- ProxyAttribute.cs
- GridLengthConverter.cs
- FixedDSBuilder.cs
- EntityDataSourceStatementEditorForm.cs
- Stack.cs
- SafePointer.cs
- AssemblyAttributes.cs
- ConditionBrowserDialog.cs
- ByteAnimationBase.cs
- DataGridHelper.cs
- TextCompositionManager.cs
- Vars.cs
- ColorConverter.cs
- CustomValidator.cs
- ListViewUpdateEventArgs.cs
- DataTable.cs
- BindingSource.cs
- ObjectList.cs
- ImageIndexConverter.cs
- DocumentSchemaValidator.cs
- EntityClientCacheKey.cs
- DispatcherHookEventArgs.cs
- PartialList.cs
- LoaderAllocator.cs
- XamlWriterExtensions.cs
- StrokeSerializer.cs
- XmlUtil.cs
- StackOverflowException.cs
- SerializationObjectManager.cs
- AutoResetEvent.cs
- PointConverter.cs
- XmlSchemaSimpleContentRestriction.cs
- ProfileServiceManager.cs
- WpfKnownMember.cs
- ChainOfDependencies.cs
- EntityTransaction.cs
- ToolStripDropDownItem.cs
- RSAPKCS1KeyExchangeFormatter.cs
- SqlCommandSet.cs
- StreamUpdate.cs
- GenericEnumerator.cs
- MultiSelectRootGridEntry.cs
- AnnotationObservableCollection.cs
- RequestValidator.cs
- LinearGradientBrush.cs
- SqlUdtInfo.cs
- SamlAssertion.cs
- XmlUtil.cs
- ToolStripDropDownButton.cs
- HashAlgorithm.cs
- ExtensionFile.cs
- Imaging.cs
- EntitySqlQueryBuilder.cs
- CompilerCollection.cs
- AssemblyBuilder.cs
- ConfigXmlAttribute.cs
- ContextMenu.cs
- InfiniteIntConverter.cs
- TextEditorParagraphs.cs
- RenderingEventArgs.cs
- HelpProvider.cs
- DataControlCommands.cs
- FontStretches.cs
- PositiveTimeSpanValidator.cs
- StateManagedCollection.cs
- TextRangeEditLists.cs
- NotEqual.cs
- SerializationException.cs
- FormatSettings.cs
- ServerValidateEventArgs.cs
- InternalRelationshipCollection.cs
- Compiler.cs
- WebErrorHandler.cs
- CompositeDuplexElement.cs
- FilterEventArgs.cs
- CharAnimationBase.cs
- ExceptionHandlers.cs
- PolicyLevel.cs
- _DisconnectOverlappedAsyncResult.cs
- COM2FontConverter.cs
- COM2Properties.cs
- AssemblyContextControlItem.cs
- DbParameterCollectionHelper.cs
- InitializeCorrelation.cs
- SignerInfo.cs
- DataGridViewSelectedRowCollection.cs
- ObjectResult.cs
- PageAdapter.cs
- EventArgs.cs
- FixedSOMPageElement.cs
- Int32Animation.cs
- SolidColorBrush.cs
- ScriptControlManager.cs
- RotateTransform.cs
- SafeLibraryHandle.cs
- EncodingTable.cs
- DataTableCollection.cs