diff -r 000000000000 -r 6474c204b198 content/base/test/TestNativeXMLHttpRequest.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/content/base/test/TestNativeXMLHttpRequest.cpp Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,98 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "TestHarness.h" + +#include "nsIDOMDocument.h" +#include "nsIPrincipal.h" +#include "nsIScriptSecurityManager.h" +#include "nsIXMLHttpRequest.h" + + +#define TEST_ENSURE_BASE(_test, _msg) \ + PR_BEGIN_MACRO \ + if (_test) { \ + fail(_msg); \ + return NS_ERROR_FAILURE; \ + } \ + PR_END_MACRO + +#define TEST_ENSURE_SUCCESS(_rv, _msg) \ + TEST_ENSURE_BASE(NS_FAILED(_rv), _msg) + +#define TEST_ENSURE_FAILED(_rv, _msg) \ + TEST_ENSURE_BASE(NS_SUCCEEDED(_rv), _msg) + +#define TEST_URL_PREFIX \ + "data:text/xml," +#define TEST_URL_CONTENT \ + "" + +#define TEST_URL \ + TEST_URL_PREFIX TEST_URL_CONTENT + +nsresult TestNativeXMLHttpRequest() +{ + nsresult rv; + + nsCOMPtr xhr = + do_CreateInstance(NS_XMLHTTPREQUEST_CONTRACTID, &rv); + TEST_ENSURE_SUCCESS(rv, "Couldn't create nsIXMLHttpRequest instance!"); + + NS_NAMED_LITERAL_CSTRING(getString, "GET"); + NS_NAMED_LITERAL_CSTRING(testURL, TEST_URL); + const nsAString& empty = EmptyString(); + + nsCOMPtr secman = + do_GetService(NS_SCRIPTSECURITYMANAGER_CONTRACTID, &rv); + TEST_ENSURE_SUCCESS(rv, "Couldn't get script security manager!"); + + nsCOMPtr systemPrincipal; + rv = secman->GetSystemPrincipal(getter_AddRefs(systemPrincipal)); + TEST_ENSURE_SUCCESS(rv, "Couldn't get system principal!"); + + rv = xhr->Init(systemPrincipal, nullptr, nullptr, nullptr); + TEST_ENSURE_SUCCESS(rv, "Couldn't initialize the XHR!"); + + rv = xhr->Open(getString, testURL, false, empty, empty); + TEST_ENSURE_SUCCESS(rv, "Open failed!"); + + rv = xhr->Send(nullptr); + TEST_ENSURE_SUCCESS(rv, "Send failed!"); + + nsAutoString response; + rv = xhr->GetResponseText(response); + TEST_ENSURE_SUCCESS(rv, "GetResponse failed!"); + + if (!response.EqualsLiteral(TEST_URL_CONTENT)) { + fail("Response text does not match!"); + return NS_ERROR_FAILURE; + } + + nsCOMPtr dom; + rv = xhr->GetResponseXML(getter_AddRefs(dom)); + TEST_ENSURE_SUCCESS(rv, "GetResponseXML failed!"); + + if (!dom) { + fail("No DOM document constructed!"); + return NS_ERROR_FAILURE; + } + + passed("Native XMLHttpRequest"); + return NS_OK; +} + +int main(int argc, char** argv) +{ + ScopedXPCOM xpcom("XMLHttpRequest"); + if (xpcom.failed()) + return 1; + + int retval = 0; + if (NS_FAILED(TestNativeXMLHttpRequest())) { + retval = 1; + } + + return retval; +}