Exemplo n.º 1
0
 public async Task ImportPageWithDirectCycle()
 {
     var content = "<!doctype html><link rel=import href=http://example.com/test.html>";
     var requester = new MockRequester();
     var requestCount = 0;
     requester.OnRequest = request => requestCount++;
     requester.BuildResponse(request => content);
     var config = Configuration.Default.WithDefaultLoader(setup => setup.IsResourceLoadingEnabled = true, new[] { requester });
     var document = await BrowsingContext.New(config).OpenAsync(m => m.Content(content));
     var link = document.QuerySelector<IHtmlLinkElement>("link");
     Assert.AreEqual("import", link.Relation);
     Assert.IsNotNull(link.Import);
     Assert.AreEqual(1, requestCount);
 }
Exemplo n.º 2
0
        public async Task ImportPageFromVirtualRequest()
        {
            var requester = new MockRequester();
            var receivedRequest = new TaskCompletionSource<String>();
            requester.OnRequest = request => receivedRequest.SetResult(request.Address.Href);
            var config = Configuration.Default.WithDefaultLoader(setup => setup.IsResourceLoadingEnabled = true, new[] { requester });

            var document = await BrowsingContext.New(config).OpenAsync(m => m.Content("<!doctype html><link rel=import href=http://example.com/test.html>"));
            var link = document.QuerySelector<IHtmlLinkElement>("link");
            var result = await receivedRequest.Task;

            Assert.AreEqual("import", link.Relation);
            Assert.IsNotNull(link.Import);
            Assert.AreEqual("http://example.com/test.html", result);
        }
Exemplo n.º 3
0
 public async Task DocumentWriteDynamicallyWithCustomScriptEngineAndSource()
 {
     var scripting = new TestScriptEngine(options => options.Document.Write("<b>Dynamically written</b>"));
     var mockRequester = new MockRequester();
     var config = Configuration.Default
                               .With(new TestScriptService(scripting))
                               .WithDefaultLoader(setup => setup.IsResourceLoadingEnabled = true, new[] { mockRequester });
     var baseAddress = "http://www.example.com";
     var filename = "foo.cs";
     var hasFoo = false;
     mockRequester.OnRequest = request => hasFoo = request.Address.Href == baseAddress + "/" + filename;
     var source = "<title>Some title</title><body><script type='c-sharp' src='" + filename + "'></script>";
     var doc = await BrowsingContext.New(config).OpenAsync(m => m.Content(source).Address(baseAddress));
     Assert.IsTrue(hasFoo);
     Assert.AreEqual("Dynamically written", doc.Body.TextContent);
     Assert.AreEqual(1, doc.QuerySelectorAll("b").Length);
     var bold = doc.QuerySelector("b");
     Assert.AreEqual("Dynamically written", bold.TextContent);
 }
Exemplo n.º 4
0
        static Task<IDocument> CreateDocumentWithOptions(String source)
        {
            var mockRequester = new MockRequester();
            mockRequester.BuildResponse(request =>
            {
                if (request.Address.Path.EndsWith("a.css"))
                {
                    return "div#A   { color: blue;	}";
                }
                else if (request.Address.Path.EndsWith("b.css"))
                {
                    return "div#B   { color: red;   }";
                }

                return null;
            });
            var config = Configuration.Default.WithCss().WithMockRequester(mockRequester);
            var context = BrowsingContext.New(config);
            return context.OpenAsync(m => m.Content(source));
        }
Exemplo n.º 5
0
 public async Task DocumentWriteDynamicallyWithCustomScriptEngineAndSourceNested()
 {
     var index = 0;
     var content = new[]
     {
         "<script type='c-sharp' src='foo2.cs'></script>",
         "<b>Dynamically written</b>"
     };
     var scripting = new TestScriptEngine(options => options.Document.Write(content[index++]));
     var mockRequester = new MockRequester();
     var config = Configuration.Default
                               .With(new TestScriptService(scripting))
                               .WithDefaultLoader(setup => setup.IsResourceLoadingEnabled = true, new[] { mockRequester });
     var source = "<title>Some title</title><body><script type='c-sharp' src='foo.cs'></script>";
     var doc = await BrowsingContext.New(config).OpenAsync(m => m.Content(source).Address("http://www.example.com"));
     Assert.AreEqual("Dynamically written", doc.Body.TextContent);
     Assert.AreEqual(1, doc.QuerySelectorAll("b").Length);
     var bold = doc.QuerySelector("b");
     Assert.AreEqual("Dynamically written", bold.TextContent);
     Assert.AreEqual(2, index);
 }
Exemplo n.º 6
0
 public async Task FilteringRequestsWork()
 {
     var requester = new MockRequester();
     var requests = new List<IRequest>();
     var filtered = new List<IRequest>();
     requester.OnRequest = request => requests.Add(request);
     var content = "<!doctype><html><link rel=stylesheet type=text/css href=test.css><div><img src=foo.jpg><iframe src=test.html></iframe></div>";
     var config = Configuration.Default.WithDefaultLoader(setup =>
     {
         setup.IsResourceLoadingEnabled = true;
         setup.Filter = request =>
         {
             filtered.Add(request);
             return !request.Address.Href.EndsWith(".jpg");
         };
     }, new[] { requester });
     var context = BrowsingContext.New(config);
     var document = await context.OpenAsync(m => m.Content(content).Address("http://localhost"));
     Assert.IsNotNull(document);
     Assert.AreEqual(2, requests.Count);
     Assert.AreEqual(3, filtered.Count);
     Assert.AreEqual("test.css", requests[0].Address.Path);
     Assert.AreEqual("test.html", requests[1].Address.Path);
 }