Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / 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: erichar: 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;
using System.Windows.Controls;
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();
WebBrowser webBrowser = new WebBrowser();
webBrowser.Source = baseUri;
return webBrowser;
}
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();
WebBrowser webBrowser = new WebBrowser();
webBrowser.Source = baseUri;
return webBrowser;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//----------------------------------------------------------------------------
//
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//
// Description:
// Provides a method to turn a baml stream into an object.
//
//
// History:
// 11/22/04: erichar: 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;
using System.Windows.Controls;
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();
WebBrowser webBrowser = new WebBrowser();
webBrowser.Source = baseUri;
return webBrowser;
}
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();
WebBrowser webBrowser = new WebBrowser();
webBrowser.Source = baseUri;
return webBrowser;
}
}
}
// 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
- RecordBuilder.cs
- ActiveXHost.cs
- GlyphCache.cs
- ContextMenuAutomationPeer.cs
- Subset.cs
- FormsAuthenticationCredentials.cs
- Propagator.cs
- Dictionary.cs
- DescendantOverDescendantQuery.cs
- BamlBinaryReader.cs
- XsdDateTime.cs
- DSASignatureFormatter.cs
- ChangeToolStripParentVerb.cs
- DiagnosticsConfigurationHandler.cs
- ZoomPercentageConverter.cs
- XPathExpr.cs
- ProcessModuleDesigner.cs
- OleServicesContext.cs
- documentsequencetextview.cs
- HostingEnvironment.cs
- AnnouncementEndpoint.cs
- CodeCatchClause.cs
- ToolStripInSituService.cs
- WriterOutput.cs
- HealthMonitoringSection.cs
- ElementNotAvailableException.cs
- CodeDirectiveCollection.cs
- CodeTypeReferenceCollection.cs
- SchemaElement.cs
- HtmlInputText.cs
- CompModSwitches.cs
- PermissionToken.cs
- TypeDescriptor.cs
- ToolStripItemTextRenderEventArgs.cs
- COM2Enum.cs
- ProfileModule.cs
- EventPropertyMap.cs
- Int64Storage.cs
- XmlSchemaExporter.cs
- WindowsFormsLinkLabel.cs
- XmlObjectSerializerWriteContext.cs
- IconHelper.cs
- ServiceControllerDesigner.cs
- ZipPackage.cs
- TdsValueSetter.cs
- NamedElement.cs
- PropertyIDSet.cs
- NGCPageContentCollectionSerializerAsync.cs
- ListDictionary.cs
- ConfigurationValidatorBase.cs
- CodeAttributeDeclaration.cs
- ValidationErrorCollection.cs
- mediapermission.cs
- Currency.cs
- PerformanceCounterCategory.cs
- ColorMatrix.cs
- SerializationInfo.cs
- WindowsBrush.cs
- MSAAEventDispatcher.cs
- Rectangle.cs
- ConfigDefinitionUpdates.cs
- PersonalizationAdministration.cs
- InplaceBitmapMetadataWriter.cs
- QueryCreatedEventArgs.cs
- HiddenFieldDesigner.cs
- XmlExceptionHelper.cs
- SqlCacheDependencyDatabase.cs
- XslAstAnalyzer.cs
- EditorPart.cs
- SettingsProviderCollection.cs
- ConstraintEnumerator.cs
- LedgerEntry.cs
- ImageKeyConverter.cs
- ModelVisual3D.cs
- SqlAliaser.cs
- ContextMenu.cs
- ByteStreamGeometryContext.cs
- serverconfig.cs
- ViewManager.cs
- XmlReader.cs
- PathGeometry.cs
- SynthesizerStateChangedEventArgs.cs
- IBuiltInEvidence.cs
- XmlFormatExtensionAttribute.cs
- DataTransferEventArgs.cs
- DrawListViewSubItemEventArgs.cs
- RemotingSurrogateSelector.cs
- AngleUtil.cs
- NetworkStream.cs
- StrokeCollection.cs
- EdmToObjectNamespaceMap.cs
- StatusBarDrawItemEvent.cs
- DataGridTableCollection.cs
- TransformedBitmap.cs
- MainMenu.cs
- ScriptReference.cs
- MultiBindingExpression.cs
- SqlRowUpdatedEvent.cs
- GeometryCombineModeValidation.cs
- QilPatternFactory.cs