private void StartWebViewCoreIfPossible()
        {
            if (!RequiredStartupPropertiesSet ||
                _webviewManager != null)
            {
                return;
            }
            if (NativeView == null)
            {
                throw new InvalidOperationException($"Can't start {nameof(BlazorWebView)} without native web view instance.");
            }

            // We assume the host page is always in the root of the content directory, because it's
            // unclear there's any other use case. We can add more options later if so.
            var contentRootDir       = Path.GetDirectoryName(HostPage !) ?? string.Empty;
            var hostPageRelativePath = Path.GetRelativePath(contentRootDir, HostPage !);

            // On Windows we don't use IFileProvider because it is sync-only, whereas in WinUI all the
            // file storage APIs are async-only. So instead we override HandleWebResourceRequest in
            // WinUIWebViewManager so that loading static assets is done entirely there.
            var mauiAssetFileProvider = new NullFileProvider();

            _webviewManager = new WinUIWebViewManager(NativeView, new WinUIWebView2Wrapper(NativeView), Services !, MauiDispatcher.Instance, mauiAssetFileProvider, VirtualView.JSComponents, hostPageRelativePath, contentRootDir);

            if (RootComponents != null)
            {
                foreach (var rootComponent in RootComponents)
                {
                    // Since the page isn't loaded yet, this will always complete synchronously
                    _ = rootComponent.AddToWebViewManagerAsync(_webviewManager);
                }
            }
            _webviewManager.Navigate("/");
        }
Exemple #2
0
        public void GetCompiler_ThrowsIfNullFileProvider()
        {
            // Arrange
            var expected =
                $"'{typeof(RazorViewEngineOptions).FullName}.{nameof(RazorViewEngineOptions.FileProviders)}' must " +
                $"not be empty. At least one '{typeof(IFileProvider).FullName}' is required to locate a view for " +
                "rendering.";
            var fileProvider = new NullFileProvider();
            var accessor     = Mock.Of <IRazorViewEngineFileProviderAccessor>(a => a.FileProvider == fileProvider);

            var partManager = new ApplicationPartManager();
            var options     = Options.Create(new RazorViewEngineOptions());

            var referenceManager = new DefaultRazorReferenceManager(partManager, options);

            var provider = new RazorViewCompilerProvider(
                partManager,
                new RazorTemplateEngine(
                    RazorEngine.Create(),
                    new FileProviderRazorProject(accessor)),
                accessor,
                new CSharpCompiler(referenceManager, Mock.Of <IHostingEnvironment>()),
                options,
                NullLoggerFactory.Instance);

            // Act & Assert
            var exception = Assert.Throws <InvalidOperationException>(
                () => provider.GetCompiler());

            Assert.Equal(expected, exception.Message);
        }
 public BenchmarkHostingEnvironment()
 {
     ApplicationName         = typeof(ViewAssemblyMarker).Assembly.FullName;
     WebRootFileProvider     = new NullFileProvider();
     ContentRootFileProvider = new NullFileProvider();
     ContentRootPath         = AppContext.BaseDirectory;
     WebRootPath             = AppContext.BaseDirectory;
 }
Exemple #4
0
 public TestHostingEnvironment()
 {
     ApplicationName         = typeof(TestHostingEnvironment).Assembly.FullName;
     WebRootFileProvider     = new NullFileProvider();
     ContentRootFileProvider = new NullFileProvider();
     ContentRootPath         = AppContext.BaseDirectory;
     WebRootPath             = AppContext.BaseDirectory;
 }
 public DummyHostEnvironment()
 {
     EnvironmentName         = "Development";
     ApplicationName         = "Gridwich";
     WebRootPath             = "/a/b/c";
     WebRootFileProvider     = new NullFileProvider();
     ContentRootFileProvider = new NullFileProvider();
     ContentRootPath         = "/";
 }
Exemple #6
0
        public void TransformFile()
        {
            NullFileProvider nullFile = new NullFileProvider();

            File.WriteAllText("before.txt", "mattias;asplund;1971\namanda;asplund;2003\n");
            File.WriteAllText("after.txt", "MATTIAS ASPLUND ÄR 46 ÅR GAMMAL.\nAMANDA ASPLUND ÄR 14 ÅR GAMMAL.\n");
            var sut = new FileConverter();

            sut.TransformFile("before.txt", "actual.txt");
            string expected = File.ReadAllText("after.txt");
            string actual   = File.ReadAllText("actual.txt");

            Assert.AreEqual(expected, actual);
        }
Exemple #7
0
        public void GetOrAdd_ThrowsIfNullFileProvider()
        {
            // Arrange
            var expected =
                $"'{typeof(RazorViewEngineOptions).FullName}.{nameof(RazorViewEngineOptions.FileProviders)}' must " +
                $"not be empty. At least one '{typeof(IFileProvider).FullName}' is required to locate a view for " +
                "rendering.";
            var fileProvider = new NullFileProvider();
            var cache        = new CompilerCache(fileProvider);

            // Act & Assert
            var exception = Assert.Throws <InvalidOperationException>(
                () => cache.GetOrAdd(ViewPath, _ => { throw new InvalidTimeZoneException(); }));

            Assert.Equal(expected, exception.Message);
        }
Exemple #8
0
        public void Test1()
        {
            //Microsoft.Extensions.FileProviders.Composite.CompositeDirectoryContents
            //    Microsoft.Extensions.FileProviders.NotFoundDirectoryContents
            //Microsoft.Extensions.FileProviders.Internal.PhysicalDirectoryContents
            //Microsoft.Extensions.FileProviders.PhysicalFileProvider
            var sss1 = new EmbeddedFileProvider(typeof(UnitTest1).Assembly);
            //var sss2 = new ManifestEmbeddedFileProvider(typeof(UnitTest1).Assembly);
            var sss3 = new PhysicalFileProvider(@"D:\Users\mccj\Source\Repos\FileManager\FileManager\");
            var sss4 = new NullFileProvider();
            var sss5 = new FileStorage.StoreFileProvider(new FileStorage.Standard.PhysicalFileSystemStore(@"D:\Users\mccj\Source\Repos\FileManager\FileManager\"));
            var sss6 = new FileStorage.StoreFileProvider(new FileStorage.Standard.FileSystemStore(@"D:\Users\mccj\Source\Repos\FileManager\FileManager\"));
            var sss7 = new CompositeFileProvider(sss1, sss3, sss4, sss5, sss6);

            var sdfsd = sss4.Watch("");
            var rr    = sss4.GetFileInfo("");

            var sss11  = sss3.GetFileInfo("aaaa");
            var sssd11 = sss5.GetFileInfo("aaaa");
            var sssc11 = sss6.GetFileInfo("aaaa");

            var sss113  = sss3.GetFileInfo("FileProviderStore");
            var sssd113 = sss5.GetFileInfo("FileProviderStore");
            var sssd213 = sss6.GetFileInfo("FileProviderStore");

            var sss112  = sss3.GetFileInfo("ApplicationBuilderExtensions.cs");
            var sssd112 = sss5.GetFileInfo("ApplicationBuilderExtensions.cs");
            var sssc112 = sss6.GetFileInfo("ApplicationBuilderExtensions.cs");


            var sss  = sss3.GetDirectoryContents("");
            var sssd = sss5.GetDirectoryContents("");
            var sssc = sss6.GetDirectoryContents("");

            var sss75 = sss3.GetDirectoryContents("aaaaa");
            var sssd5 = sss5.GetDirectoryContents("aaaaa");
            var sssdc = sss6.GetDirectoryContents("aaaaa");

            var sss76  = sss3.GetDirectoryContents("FileProviderStore");
            var sssd6  = sss5.GetDirectoryContents("FileProviderStore");
            var sssdcc = sss6.GetDirectoryContents("FileProviderStore");


            var sdsdasd = sss7.GetDirectoryContents("");
            //sss6.GetDirectoryContents("");
            //sss6.GetFileInfo("");
        }
Exemple #9
0
        /// <summary>
        /// Initializes a new instance of <see cref="ShapeTemplateFileProviderAccessor"/>.
        /// </summary>
        /// <param name="optionsAccessor">Accessor to <see cref="FluidViewOptions"/>.</param>
        public ShapeTemplateFileProviderAccessor(IOptions <ShapeTemplateOptions> optionsAccessor)
        {
            var fileProviders = optionsAccessor.Value.FileProviders;

            if (fileProviders.Count == 0)
            {
                FileProvider = new NullFileProvider();
            }
            else if (fileProviders.Count == 1)
            {
                FileProvider = fileProviders[0];
            }
            else
            {
                FileProvider = new CompositeFileProvider(fileProviders);
            }
        }
Exemple #10
0
        /// <summary>
        /// Initializes a new instance of <see cref="LiquidViewFileProviderAccessor"/>.
        /// </summary>
        /// <param name="optionsAccessor">Accessor to <see cref="LiquidViewOptions"/>.</param>
        public LiquidViewFileProviderAccessor(IOptions <LiquidViewOptions> optionsAccessor)
        {
            var fileProviders = optionsAccessor.Value.FileProviders;

            if (fileProviders.Count == 0)
            {
                FileProvider = new NullFileProvider();
            }
            else if (fileProviders.Count == 1)
            {
                FileProvider = fileProviders[0];
            }
            else
            {
                FileProvider = new CompositeFileProvider(fileProviders);
            }
        }
Exemple #11
0
        /// <summary>
        /// Initializes a new instance of <see cref="DefaultRazorViewEngineFileProviderAccessor"/>.
        /// </summary>
        /// <param name="optionsAccessor">Accessor to <see cref="RazorViewEngineOptions"/>.</param>
        public DefaultRazorViewEngineFileProviderAccessor(IOptions <RazorViewEngineOptions> optionsAccessor)
        {
            var fileProviders = optionsAccessor.Value.FileProviders;

            if (fileProviders.Count == 0)
            {
                FileProvider = new NullFileProvider();
            }
            else if (fileProviders.Count == 1)
            {
                FileProvider = fileProviders[0];
            }
            else
            {
                FileProvider = new CompositeFileProvider(fileProviders);
            }
        }
Exemple #12
0
        public void UseStaticWebAssetsCore_DoesNothing_WhenManifestDoesNotContainEntries()
        {
            // Arrange
            var manifestContent = @$ "<StaticWebAssets Version=" "1.0" ">
</StaticWebAssets>";

            var manifest     = CreateManifest(manifestContent);
            var originalRoot = new NullFileProvider();
            var environment  = new HostingEnvironment()
            {
                WebRootFileProvider = originalRoot
            };

            // Act
            StaticWebAssetsLoader.UseStaticWebAssetsCore(environment, manifest);

            // Assert
            Assert.Equal(originalRoot, environment.WebRootFileProvider);
        }
Exemple #13
0
        public void ResolveManifest_FindsEmbeddedManifestProvider()
        {
            // Arrange
            var expectedManifest = @"<StaticWebAssets Version=""1.0"">
  <ContentRoot Path=""/Path"" BasePath=""/BasePath"" />
</StaticWebAssets>
";
            var originalRoot     = new NullFileProvider();
            var environment      = new HostingEnvironment()
            {
                ApplicationName = typeof(StaticWebAssetsReaderTests).Assembly.GetName().Name
            };

            // Act
            var manifest = StaticWebAssetsLoader.ResolveManifest(environment);

            // Assert
            Assert.Equal(expectedManifest, new StreamReader(manifest).ReadToEnd());
        }
Exemple #14
0
        public void UseStaticWebAssetsCore_CreatesCompositeRoot_WhenThereAreContentRootsInTheManifest()
        {
            // Arrange
            var manifestContent = @$ "<StaticWebAssets Version=" "1.0" ">
    <ContentRoot Path=" "{AppContext.BaseDirectory}" " BasePath=" "/BasePath" " />
</StaticWebAssets>";

            var manifest     = CreateManifest(manifestContent);
            var originalRoot = new NullFileProvider();
            var environment  = new HostingEnvironment()
            {
                WebRootFileProvider = originalRoot
            };

            // Act
            StaticWebAssetsLoader.UseStaticWebAssetsCore(environment, manifest);

            // Assert
            var composite = Assert.IsType <CompositeFileProvider>(environment.WebRootFileProvider);

            Assert.Equal(2, composite.FileProviders.Count());
            Assert.Equal(originalRoot, composite.FileProviders.First());
        }
 protected RecordFSRepository(string rootPath)
 {
     RootPath     = rootPath;
     FileProvider = new NullFileProvider().AsFileProvider();
 }