1 /* ***** BEGIN LICENSE BLOCK *****
2 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
4 * The contents of this file are subject to the Mozilla Public License Version
5 * 1.1 (the "License"); you may not use this file except in compliance with
6 * the License. You may obtain a copy of the License at
7 * http://www.mozilla.org/MPL/
9 * Software distributed under the License is distributed on an "AS IS" basis,
10 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
11 * for the specific language governing rights and limitations under the
14 * The Original Code is Mozilla XMLHttpRequest Tests.
16 * The Initial Developer of the Original Code is
17 * Ben Turner <bent.mozilla@gmail.com>.
18 * Portions created by the Initial Developer are Copyright (C) 2008
19 * the Initial Developer. All Rights Reserved.
23 * Alternatively, the contents of this file may be used under the terms of
24 * either the GNU General Public License Version 2 or later (the "GPL"), or
25 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
26 * in which case the provisions of the GPL or the LGPL are applicable instead
27 * of those above. If you wish to allow use of your version of this file only
28 * under the terms of either the GPL or the LGPL, and not to allow others to
29 * use your version of this file under the terms of the MPL, indicate your
30 * decision by deleting the provisions above and replace them with the notice
31 * and other provisions required by the GPL or the LGPL. If you do not delete
32 * the provisions above, a recipient may use your version of this file under
33 * the terms of any one of the MPL, the GPL or the LGPL.
35 * ***** END LICENSE BLOCK ***** */
37 #include "TestHarness.h"
39 #include "nsIDOMDocument.h"
40 #include "nsIPrincipal.h"
41 #include "nsIScriptSecurityManager.h"
42 #include "nsIXMLHttpRequest.h"
44 #include "nsServiceManagerUtils.h"
45 #include "nsStringGlue.h"
47 #define REPORT_ERROR(_msg) \
48 printf("FAIL " _msg "\n")
50 #define TEST_FAIL(_msg) \
53 return NS_ERROR_FAILURE; \
56 #define TEST_ENSURE_BASE(_test, _msg) \
63 #define TEST_ENSURE_SUCCESS(_rv, _msg) \
64 TEST_ENSURE_BASE(NS_FAILED(_rv), _msg)
66 #define TEST_ENSURE_FAILED(_rv, _msg) \
67 TEST_ENSURE_BASE(NS_SUCCEEDED(_rv), _msg)
69 #define TEST_URL_PREFIX \
71 #define TEST_URL_CONTENT \
72 "<foo><bar></bar></foo>"
75 TEST_URL_PREFIX TEST_URL_CONTENT
77 nsresult
TestNativeXMLHttpRequest()
81 nsCOMPtr
<nsIXMLHttpRequest
> xhr
=
82 do_CreateInstance(NS_XMLHTTPREQUEST_CONTRACTID
, &rv
);
83 TEST_ENSURE_SUCCESS(rv
, "Couldn't create nsIXMLHttpRequest instance!");
85 NS_NAMED_LITERAL_CSTRING(getString
, "GET");
86 NS_NAMED_LITERAL_CSTRING(testURL
, TEST_URL
);
87 const nsAString
& empty
= EmptyString();
89 printf("*** About to see an expected warning about mPrincipal:\n");
90 rv
= xhr
->OpenRequest(getString
, testURL
, PR_FALSE
, empty
, empty
);
91 printf("*** End of expected warning output.\n");
92 TEST_ENSURE_FAILED(rv
, "OpenRequest should have failed!");
94 nsCOMPtr
<nsIScriptSecurityManager
> secman
=
95 do_GetService(NS_SCRIPTSECURITYMANAGER_CONTRACTID
, &rv
);
96 TEST_ENSURE_SUCCESS(rv
, "Couldn't get script security manager!");
98 nsCOMPtr
<nsIPrincipal
> systemPrincipal
;
99 rv
= secman
->GetSystemPrincipal(getter_AddRefs(systemPrincipal
));
100 TEST_ENSURE_SUCCESS(rv
, "Couldn't get system principal!");
102 rv
= xhr
->Init(systemPrincipal
, nsnull
, nsnull
);
103 TEST_ENSURE_SUCCESS(rv
, "Couldn't initialize the XHR!");
105 rv
= xhr
->OpenRequest(getString
, testURL
, PR_FALSE
, empty
, empty
);
106 TEST_ENSURE_SUCCESS(rv
, "OpenRequest failed!");
108 rv
= xhr
->Send(nsnull
);
109 TEST_ENSURE_SUCCESS(rv
, "Send failed!");
111 nsAutoString response
;
112 rv
= xhr
->GetResponseText(response
);
113 TEST_ENSURE_SUCCESS(rv
, "GetResponse failed!");
115 if (!response
.EqualsLiteral(TEST_URL_CONTENT
)) {
116 TEST_FAIL("Response text does not match!");
119 nsCOMPtr
<nsIDOMDocument
> dom
;
120 rv
= xhr
->GetResponseXML(getter_AddRefs(dom
));
121 TEST_ENSURE_SUCCESS(rv
, "GetResponseXML failed!");
124 TEST_FAIL("No DOM document constructed!");
127 printf("Native XMLHttpRequest PASSED!\n");
131 int main(int argc
, char** argv
)
133 ScopedXPCOM
xpcom("XMLHttpRequest");
138 if (NS_FAILED(TestNativeXMLHttpRequest())) {