Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
1 const Cc = Components.classes;
2 const Ci = Components.interfaces;
3 const Cu = Components.utils;
4 const Cr = Components.results;
6 Cu.import("resource://testing-common/httpd.js");
8 function getRDFService()
9 {
10 return Cc["@mozilla.org/rdf/rdf-service;1"].
11 getService(Ci.nsIRDFService);
12 }
14 var server1, server2;
16 function run_test()
17 {
18 var samplefile = do_get_file('sample.rdf');
20 server1 = new HttpServer();
21 server1.registerPathHandler("/sample-xs.rdf", xsRedirect);
22 server1.registerPathHandler("/sample-local.rdf", localRedirect);
23 server1.registerFile('/sample.rdf', samplefile);
24 server1.start(4444);
26 server2 = new HttpServer();
27 server2.registerFile('/sample.rdf', samplefile);
28 server2.start(4445);
30 do_test_pending();
32 new rdfLoadObserver('http://localhost:4444/sample.rdf', true);
33 new rdfLoadObserver('http://localhost:4445/sample.rdf', true);
34 new rdfLoadObserver('http://localhost:4444/sample-xs.rdf', false);
35 new rdfLoadObserver('http://localhost:4444/sample-local.rdf', true);
36 }
38 var gPending = 0;
40 function rdfLoadObserver(uri, shouldPass)
41 {
42 this.shouldPass = shouldPass;
43 this.uri = uri;
45 ++gPending;
47 var rdfService = getRDFService();
48 this.ds = rdfService.GetDataSource(uri).
49 QueryInterface(Ci.nsIRDFXMLSink);
50 this.ds.addXMLSinkObserver(this);
51 }
53 rdfLoadObserver.prototype =
54 {
55 onBeginLoad : function() { },
56 onInterrupt : function() { },
57 onResume : function() { },
58 onEndLoad : function() {
59 print("Testing results of loading " + this.uri);
61 var rdfs = getRDFService();
62 var res = rdfs.GetResource("urn:mozilla:sample-data");
63 var arc = rdfs.GetResource("http://purl.org/dc/elements/1.1/title");
64 var answer = this.ds.GetTarget(res, arc, true);
65 if (answer !== null) {
66 do_check_true(this.shouldPass);
67 do_check_true(answer instanceof Ci.nsIRDFLiteral);
68 do_check_eq(answer.Value, "Sample");
69 }
70 else {
71 do_check_false(this.shouldPass);
72 }
74 gPending -= 1;
76 this.ds.removeXMLSinkObserver(this);
78 if (gPending == 0) {
79 do_test_pending();
80 server1.stop(do_test_finished);
81 server2.stop(do_test_finished);
82 }
83 },
84 onError : function() { }
85 }
87 function xsRedirect(metadata, response)
88 {
89 response.setStatusLine(metadata.httpVersion, 301, "Moved Permanently");
90 response.setHeader("Location", "http://localhost:4445/sample.rdf", false);
91 }
93 function localRedirect(metadata, response)
94 {
95 response.setStatusLine(metadata.httpVersion, 301, "Moved Permanently");
96 response.setHeader("Location", "http://localhost:4444/sample.rdf", false);
97 }