Bug 422974 ? Prism uses old "Remember password?" mechanism. r=gavin
[wine-gecko.git] / content / base / test / TestNativeXMLHttpRequest.cpp
blob98915ccc195cc4bedf20fadf2a177b585f2e6a45
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
12 * License.
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.
21 * Contributor(s):
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) \
51 PR_BEGIN_MACRO \
52 REPORT_ERROR(_msg); \
53 return NS_ERROR_FAILURE; \
54 PR_END_MACRO
56 #define TEST_ENSURE_BASE(_test, _msg) \
57 PR_BEGIN_MACRO \
58 if (_test) { \
59 TEST_FAIL(_msg); \
60 } \
61 PR_END_MACRO
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 \
70 "data:text/xml,"
71 #define TEST_URL_CONTENT \
72 "<foo><bar></bar></foo>"
74 #define TEST_URL \
75 TEST_URL_PREFIX TEST_URL_CONTENT
77 nsresult TestNativeXMLHttpRequest()
79 nsresult rv;
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!");
123 if (!dom) {
124 TEST_FAIL("No DOM document constructed!");
127 printf("Native XMLHttpRequest PASSED!\n");
128 return NS_OK;
131 int main(int argc, char** argv)
133 ScopedXPCOM xpcom("XMLHttpRequest");
134 if (xpcom.failed())
135 return 1;
137 int retval = 0;
138 if (NS_FAILED(TestNativeXMLHttpRequest())) {
139 retval = 1;
142 return retval;