michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: #include "TestHarness.h" michael@0: michael@0: #include "nsIPrincipal.h" michael@0: #include "nsIScriptSecurityManager.h" michael@0: #include "nsIXMLHttpRequest.h" michael@0: michael@0: michael@0: #define TEST_ENSURE_BASE(_test, _msg) \ michael@0: PR_BEGIN_MACRO \ michael@0: if (_test) { \ michael@0: fail(_msg); \ michael@0: return NS_ERROR_FAILURE; \ michael@0: } \ michael@0: PR_END_MACRO michael@0: michael@0: #define TEST_ENSURE_SUCCESS(_rv, _msg) \ michael@0: TEST_ENSURE_BASE(NS_FAILED(_rv), _msg) michael@0: michael@0: #define TEST_ENSURE_FAILED(_rv, _msg) \ michael@0: TEST_ENSURE_BASE(NS_SUCCEEDED(_rv), _msg) michael@0: michael@0: nsresult TestGetURL(const nsCString& aURL) michael@0: { michael@0: nsresult rv; michael@0: michael@0: nsCOMPtr xhr = michael@0: do_CreateInstance(NS_XMLHTTPREQUEST_CONTRACTID, &rv); michael@0: TEST_ENSURE_SUCCESS(rv, "Couldn't create nsIXMLHttpRequest instance!"); michael@0: michael@0: NS_NAMED_LITERAL_CSTRING(getString, "GET"); michael@0: const nsAString& empty = EmptyString(); michael@0: michael@0: nsCOMPtr secman = michael@0: do_GetService(NS_SCRIPTSECURITYMANAGER_CONTRACTID, &rv); michael@0: TEST_ENSURE_SUCCESS(rv, "Couldn't get script security manager!"); michael@0: michael@0: nsCOMPtr systemPrincipal; michael@0: rv = secman->GetSystemPrincipal(getter_AddRefs(systemPrincipal)); michael@0: TEST_ENSURE_SUCCESS(rv, "Couldn't get system principal!"); michael@0: michael@0: rv = xhr->Init(systemPrincipal, nullptr, nullptr, nullptr); michael@0: TEST_ENSURE_SUCCESS(rv, "Couldn't initialize the XHR!"); michael@0: michael@0: rv = xhr->Open(getString, aURL, false, empty, empty); michael@0: TEST_ENSURE_SUCCESS(rv, "OpenRequest failed!"); michael@0: michael@0: rv = xhr->Send(nullptr); michael@0: TEST_ENSURE_SUCCESS(rv, "Send failed!"); michael@0: michael@0: nsAutoString response; michael@0: rv = xhr->GetResponseText(response); michael@0: TEST_ENSURE_SUCCESS(rv, "GetResponse failed!"); michael@0: michael@0: nsAutoCString responseUTF8 = NS_ConvertUTF16toUTF8(response); michael@0: printf("#BEGIN\n"); michael@0: printf("%s", responseUTF8.get()); michael@0: printf("\n#EOF\n"); michael@0: michael@0: return NS_OK; michael@0: } michael@0: michael@0: int main(int argc, char** argv) michael@0: { michael@0: if (argc < 2) { michael@0: printf("Usage: TestGetURL \n"); michael@0: exit(0); michael@0: } michael@0: michael@0: ScopedXPCOM xpcom("XMLHttpRequest"); michael@0: if (xpcom.failed()) michael@0: return 1; michael@0: michael@0: nsAutoCString targetURL(argv[1]); michael@0: michael@0: int retval = 0; michael@0: if (NS_FAILED(TestGetURL(targetURL))) { michael@0: retval = 1; michael@0: } michael@0: michael@0: return retval; michael@0: }