Example #1
0
 public void AbsoluteLocationWithoutPathGoogle()
 {
     var url = "http://www.google.de";
     var location = new Location(url);
     Assert.AreEqual("", location.Hash);
     Assert.AreEqual("", location.Port);
     Assert.AreEqual("", location.Search);
     Assert.AreEqual("/", location.PathName);
     Assert.AreEqual("http:", location.Protocol);
     Assert.AreEqual("www.google.de", location.Host);
     Assert.AreEqual(url + "/", location.Href);
     Assert.IsFalse(location.IsRelative);
 }
Example #2
0
 public void ProtocolRelativeLocationWithPathGoogleApis()
 {
     var url = "//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js";
     var location = new Location(url);
     Assert.AreEqual("", location.Hash);
     Assert.AreEqual("", location.Port);
     Assert.AreEqual("", location.Search);
     Assert.AreEqual("/ajax/libs/jquery/1.4.2/jquery.js", location.PathName);
     Assert.AreEqual("", location.Protocol);
     Assert.AreEqual("ajax.googleapis.com", location.Host);
     Assert.AreEqual(url, location.Href);
     Assert.IsTrue(location.IsRelative);
 }
Example #3
0
 public void AbsoluteLocationWithPortAndQueryLocalhost()
 {
     var url = "http://localhost:8080/?mytest";
     var location = new Location(url);
     Assert.AreEqual("", location.Hash);
     Assert.AreEqual("8080", location.Port);
     Assert.AreEqual("?mytest", location.Search);
     Assert.AreEqual("/", location.PathName);
     Assert.AreEqual("http:", location.Protocol);
     Assert.AreEqual("localhost:8080", location.Host);
     Assert.AreEqual("localhost", location.HostName);
     Assert.AreEqual(url, location.Href);
     Assert.IsFalse(location.IsRelative);
 }
Example #4
0
 public void DataLocationSchemeOnly()
 {
     var url = "data:";
     var location = new Location(url);
     Assert.AreEqual("", location.Hash);
     Assert.AreEqual("", location.Port);
     Assert.AreEqual("", location.Search);
     Assert.AreEqual("/", location.PathName);
     Assert.AreEqual("data:", location.Protocol);
     Assert.AreEqual("", location.Host);
     Assert.AreEqual("", location.HostName);
     Assert.AreEqual(url, location.Href);
     Assert.IsFalse(location.IsRelative);
 }
Example #5
0
 /// <summary>
 /// Creates a new document node.
 /// </summary>
 /// <param name="context">The context of the document.</param>
 /// <param name="source">The underlying source.</param>
 internal Document(IBrowsingContext context, TextSource source)
     : base(null, "#document", NodeType.Document)
 {
     _async = true;
     _designMode = false;
     _firedUnload = false;
     _salvageable = true;
     _shown = false;
     _preferredStyleSheetSet = String.Empty;
     _context = context ?? BrowsingContext.New();
     _source = source;
     _referrer = String.Empty;
     _contentType = MimeTypes.ApplicationXml;
     _ready = DocumentReadyState.Loading;
     _sandbox = Sandboxes.None;
     _quirksMode = QuirksMode.Off;
     _tasks = new CancellableTasks();
     _mutations = new MutationHost(Options);
     _loadingScripts = new Queue<HtmlScriptElement>();
     _location = new Location(AboutBlank);
     _ranges = new List<WeakReference<Range>>();
     _location.Changed += LocationChanged;
     _styleSheets = this.CreateStyleSheets();
     _view = this.CreateWindow();
     _loader = this.CreateLoader();
 }
Example #6
0
 public void LocationCorrectAddressWithPathChange()
 {
     var hostname = "www.w3.org";
     var protocol = "http:";
     var path = "/some/path";
     var address = protocol + "//" + hostname + path;
     var location = new Location(address);
     Assert.AreEqual(path, location.PathName);
     path = "/";
     location.PathName = "";
     address = protocol + "//" + hostname + path;
     Assert.AreEqual(protocol, location.Protocol);
     Assert.AreEqual(String.Empty, location.Hash);
     Assert.AreEqual(hostname, location.Host);
     Assert.AreEqual(hostname, location.HostName);
     Assert.AreEqual(address, location.Href);
     Assert.AreEqual(path, location.PathName);
     Assert.AreEqual(String.Empty, location.Port);
     Assert.AreEqual(protocol, location.Protocol);
     Assert.AreEqual(address, location.Href);
 }
Example #7
0
 public void RelativeLocationEmpty()
 {
     var url = "";
     var location = new Location(url);
     Assert.AreEqual("", location.Hash);
     Assert.AreEqual("", location.Port);
     Assert.AreEqual("", location.Search);
     Assert.AreEqual("/", location.PathName);
     Assert.AreEqual("", location.Protocol);
     Assert.AreEqual("", location.Host);
     Assert.AreEqual(url, location.Href);
     Assert.IsTrue(location.IsRelative);
 }
Example #8
0
 public void AbsoluteLocationUnicodeLetters()
 {
     var url = "http://www.詹姆斯.com/atomtests/iri/詹.html";
     var location = new Location(url);
     Assert.AreEqual("", location.Hash);
     Assert.AreEqual("", location.Port);
     Assert.AreEqual("", location.Search);
     Assert.AreEqual("/atomtests/iri/%E8%A9%B9.html", location.PathName);
     Assert.AreEqual("http:", location.Protocol);
     Assert.AreEqual("www.詹姆斯.com", location.Host);
     Assert.AreEqual("http://www.詹姆斯.com/atomtests/iri/%E8%A9%B9.html", location.Href);
     Assert.IsFalse(location.IsRelative);
 }
Example #9
0
 public void RelativeLocationWithoutProtocol()
 {
     var url = "//example.com/";
     var location = new Location(url);
     Assert.AreEqual("", location.Hash);
     Assert.AreEqual("", location.Port);
     Assert.AreEqual("", location.Search);
     Assert.AreEqual("/", location.PathName);
     Assert.AreEqual("", location.Protocol);
     Assert.AreEqual("example.com", location.Host);
     Assert.AreEqual(url, location.Href);
     Assert.IsTrue(location.IsRelative);
 }
Example #10
0
 public void RelativeLocationOneUp()
 {
     var url = "mid/content=5/../6";
     var location = new Location(url);
     Assert.AreEqual("", location.Hash);
     Assert.AreEqual("", location.Port);
     Assert.AreEqual("", location.Search);
     Assert.AreEqual("/mid/6", location.PathName);
     Assert.AreEqual("", location.Protocol);
     Assert.AreEqual("", location.Host);
     Assert.AreEqual("mid/6", location.Href);
     Assert.IsTrue(location.IsRelative);
 }
Example #11
0
 public void AbsoluteLocationCurrentDirectory()
 {
     var url = "http://example.com/%2E/";
     var location = new Location(url);
     Assert.AreEqual("", location.Hash);
     Assert.AreEqual("", location.Port);
     Assert.AreEqual("", location.Search);
     Assert.AreEqual("/", location.PathName);
     Assert.AreEqual("http:", location.Protocol);
     Assert.AreEqual("example.com", location.Host);
     Assert.AreEqual("http://example.com/", location.Href);
     Assert.IsFalse(location.IsRelative);
 }
Example #12
0
 public void AbsoluteLocationQueryString()
 {
     var url = "http://example.com/?q=string";
     var location = new Location(url);
     Assert.AreEqual("", location.Hash);
     Assert.AreEqual("", location.Port);
     Assert.AreEqual("?q=string", location.Search);
     Assert.AreEqual("/", location.PathName);
     Assert.AreEqual("http:", location.Protocol);
     Assert.AreEqual("example.com", location.Host);
     Assert.AreEqual(url, location.Href);
     Assert.IsFalse(location.IsRelative);
 }
Example #13
0
 public void AbsoluteLocationPercentPathDouble()
 {
     var url = "http://example.com/%25C3%2587";
     var location = new Location(url);
     Assert.AreEqual("", location.Hash);
     Assert.AreEqual("", location.Port);
     Assert.AreEqual("", location.Search);
     Assert.AreEqual("/%25C3%2587", location.PathName);
     Assert.AreEqual("http:", location.Protocol);
     Assert.AreEqual("example.com", location.Host);
     Assert.AreEqual(url, location.Href);
     Assert.IsFalse(location.IsRelative);
 }
Example #14
0
 public void RelativeLocationGoingUpAndDown()
 {
     var url = "/a/b/c/./../../g";
     var location = new Location(url);
     Assert.AreEqual("", location.Hash);
     Assert.AreEqual("", location.Port);
     Assert.AreEqual("", location.Search);
     Assert.AreEqual("/a/g", location.PathName);
     Assert.AreEqual("", location.Protocol);
     Assert.AreEqual("", location.Host);
     Assert.AreEqual("a/g", location.Href);
     Assert.IsTrue(location.IsRelative);
 }
Example #15
0
 public void AbsoluteLocationGoingUpToRoot()
 {
     var url = "http://example.com/../..";
     var location = new Location(url);
     Assert.AreEqual("", location.Hash);
     Assert.AreEqual("", location.Port);
     Assert.AreEqual("", location.Search);
     Assert.AreEqual("/", location.PathName);
     Assert.AreEqual("http:", location.Protocol);
     Assert.AreEqual("example.com", location.Host);
     Assert.AreEqual("http://example.com/", location.Href);
     Assert.IsFalse(location.IsRelative);
 }
Example #16
0
 public void DataLocationComplete()
 {
     var data = "image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEcAAAAcCAMAAAAEJ1IZAAAABGdBTUEAALGPC/xhBQAAVAI/VAI/VAI/VAI/VAI/VAI/VAAAA////AI/VRZ0U8AAAAFJ0Uk5TYNV4S2UbgT/Gk6uQt585w2wGXS0zJO2lhGttJK6j4YqZSobH1AAAAAElFTkSuQmCC";
     var scheme = "data:";
     var url = scheme + data;
     var location = new Location(url);
     Assert.AreEqual("", location.Hash);
     Assert.AreEqual("", location.Port);
     Assert.AreEqual("", location.Search);
     Assert.AreEqual(data, location.PathName);
     Assert.AreEqual(scheme, location.Protocol);
     Assert.AreEqual("", location.Host);
     Assert.AreEqual("", location.HostName);
     Assert.AreEqual(url, location.Href);
     Assert.IsFalse(location.IsRelative);
 }
Example #17
0
 public void AbsoluteLocationFileWithPipe()
 {
     var url = "file:///c|/windows/My%20Documents%20100%20/foo.txt";
     var location = new Location(url);
     Assert.AreEqual("", location.Hash);
     Assert.AreEqual("", location.Port);
     Assert.AreEqual("", location.Search);
     Assert.AreEqual("/c:/windows/My%20Documents%20100%20/foo.txt", location.PathName);
     Assert.AreEqual("file:", location.Protocol);
     Assert.AreEqual("", location.Host);
     Assert.AreEqual("file:///c:/windows/My%20Documents%20100%20/foo.txt", location.Href);
     Assert.IsFalse(location.IsRelative);
 }
Example #18
0
 public void AbsoluteLocationOneUp()
 {
     var url = "http://www.example.com///../";
     var location = new Location(url);
     Assert.AreEqual("", location.Hash);
     Assert.AreEqual("", location.Port);
     Assert.AreEqual("", location.Search);
     Assert.AreEqual("//", location.PathName);
     Assert.AreEqual("http:", location.Protocol);
     Assert.AreEqual("www.example.com", location.Host);
     Assert.AreEqual("http://www.example.com//", location.Href);
     Assert.IsFalse(location.IsRelative);
 }
Example #19
0
 public void AbsoluteLocationAuthorityNothing()
 {
     var url = "http://:@example.com";
     var location = new Location(url);
     Assert.AreEqual("", location.UserName);
     Assert.AreEqual("", location.Password);
     Assert.AreEqual("", location.Hash);
     Assert.AreEqual("", location.Port);
     Assert.AreEqual("", location.Search);
     Assert.AreEqual("/", location.PathName);
     Assert.AreEqual("http:", location.Protocol);
     Assert.AreEqual("example.com", location.Host);
     Assert.AreEqual("http://:@example.com/", location.Href);
     Assert.IsFalse(location.IsRelative);
 }
Example #20
0
 public void AbsoluteLocationFilenameWithSemicolon()
 {
     var url = "http://example.com/file.txt;parameter";
     var location = new Location(url);
     Assert.AreEqual("", location.Hash);
     Assert.AreEqual("", location.Port);
     Assert.AreEqual("", location.Search);
     Assert.AreEqual("/file.txt;parameter", location.PathName);
     Assert.AreEqual("http:", location.Protocol);
     Assert.AreEqual("example.com", location.Host);
     Assert.AreEqual(url, location.Href);
     Assert.IsFalse(location.IsRelative);
 }
Example #21
0
 public void RelativeLocationOnlyQuery()
 {
     var url = "?one=1&two=2&three=3";
     var location = new Location(url);
     Assert.AreEqual("", location.Hash);
     Assert.AreEqual("", location.Port);
     Assert.AreEqual("?one=1&two=2&three=3", location.Search);
     Assert.AreEqual("/", location.PathName);
     Assert.AreEqual("", location.Protocol);
     Assert.AreEqual("", location.Host);
     Assert.AreEqual(url, location.Href);
     Assert.IsTrue(location.IsRelative);
 }
Example #22
0
 public void AbsoluteLocationUnknownTagScheme()
 {
     var url = "tag:example.com,2006-08-18:/path/to/something";
     var location = new Location(url);
     Assert.AreEqual("", location.Hash);
     Assert.AreEqual("", location.Port);
     Assert.AreEqual("", location.Search);
     Assert.AreEqual("tag:", location.Protocol);
     Assert.AreEqual("", location.Host);
     Assert.AreEqual("example.com,2006-08-18:/path/to/something", location.PathName);
     Assert.AreEqual(url, location.Href);
     Assert.IsFalse(location.IsRelative);
 }
Example #23
0
 public void AbsoluteLocationFtpShortPath()
 {
     var url = "ftp://a/b/c/d;p?q";
     var location = new Location(url);
     Assert.AreEqual("", location.Hash);
     Assert.AreEqual("", location.Port);
     Assert.AreEqual("?q", location.Search);
     Assert.AreEqual("/b/c/d;p", location.PathName);
     Assert.AreEqual("ftp:", location.Protocol);
     Assert.AreEqual("a", location.Host);
     Assert.AreEqual(url, location.Href);
     Assert.IsFalse(location.IsRelative);
 }
Example #24
0
 public void AbsoluteLocationViewSourceProtocol()
 {
     var url = "view-source:http://example.com/";
     var location = new Location(url);
     Assert.AreEqual("", location.Hash);
     Assert.AreEqual("", location.Port);
     Assert.AreEqual("", location.Search);
     Assert.AreEqual("view-source:", location.Protocol);
     Assert.AreEqual("", location.Host);
     Assert.AreEqual("http://example.com/", location.PathName);
     Assert.AreEqual(url, location.Href);
     Assert.IsFalse(location.IsRelative);
 }
Example #25
0
 public void LocationCorrectAddressWithPortAndHash()
 {
     var hostname = "www.w3.org";
     var protocol = "http:";
     var port = "8080";
     var path = "/some/path";
     var hash = "#myhash";
     var host = hostname + ":" + port;
     var address = protocol + "//" + host + path + hash;
     var location = new Location(address);
     Assert.AreEqual(hash, location.Hash);
     Assert.AreEqual(host, location.Host);
     Assert.AreEqual(hostname, location.HostName);
     Assert.AreEqual(address, location.Href);
     Assert.AreEqual(path, location.PathName);
     Assert.AreEqual(port, location.Port);
     Assert.AreEqual(protocol, location.Protocol);
 }
Example #26
0
 public void AbsoluteLocationAuthorityAndPathWithQueryAndFragment()
 {
     var url = "http://*****:*****@example.com/path/to/resource?query=x#fragment";
     var location = new Location(url);
     Assert.AreEqual("user", location.UserName);
     Assert.AreEqual("pass", location.Password);
     Assert.AreEqual("#fragment", location.Hash);
     Assert.AreEqual("", location.Port);
     Assert.AreEqual("?query=x", location.Search);
     Assert.AreEqual("/path/to/resource", location.PathName);
     Assert.AreEqual("http:", location.Protocol);
     Assert.AreEqual("example.com", location.Host);
     Assert.AreEqual(url, location.Href);
     Assert.IsFalse(location.IsRelative);
 }
Example #27
0
 async void LocationChanged(Object sender, Location.LocationChangedEventArgs e)
 {
     if (e.IsHashChanged)
     {
         var ev = new HashChangedEvent();
         ev.Init(EventNames.HashChange, false, false, e.PreviousLocation, e.CurrentLocation);
         ev.IsTrusted = true;
         ev.Dispatch(this);
     }
     else
     {
         var url = new Url(e.CurrentLocation);
         var request = DocumentRequest.Get(url, source: this, referer: DocumentUri);
         await _context.OpenAsync(request, CancellationToken.None);
     }
 }
Example #28
0
 public void AbsoluteLocationWithQueryAndPercent()
 {
     var url = "http://example.com/search?q=Q%26A";
     var location = new Location(url);
     Assert.AreEqual("", location.Hash);
     Assert.AreEqual("", location.Port);
     Assert.AreEqual("?q=Q%26A", location.Search);
     Assert.AreEqual("/search", location.PathName);
     Assert.AreEqual("http:", location.Protocol);
     Assert.AreEqual("example.com", location.Host);
     Assert.AreEqual(url, location.Href);
     Assert.IsFalse(location.IsRelative);
 }
Example #29
0
 public void Assign(String url)
 {
     _parent.SetOwnAttribute(_attributeName, url);
     _location = Location;
 }
Example #30
0
 public void AbsoluteLocationWithAmpersandQueryTwoValues()
 {
     var url = "http://example.com/?q=a&&x=b";
     var location = new Location(url);
     Assert.AreEqual("", location.Hash);
     Assert.AreEqual("", location.Port);
     Assert.AreEqual("?q=a&&x=b", location.Search);
     Assert.AreEqual("/", location.PathName);
     Assert.AreEqual("http:", location.Protocol);
     Assert.AreEqual("example.com", location.Host);
     Assert.AreEqual(url, location.Href);
     Assert.IsFalse(location.IsRelative);
 }