mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-08 16:58:38 +09:00
import FIREFOX_52_6_0esr_RELEASE from mozilla-esr52 hg repo
This commit is contained in:
commit
dcd9973243
150858 changed files with 23884658 additions and 0 deletions
90
netwerk/test/TestOpen.cpp
Normal file
90
netwerk/test/TestOpen.cpp
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* 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 "TestCommon.h"
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsStringAPI.h"
|
||||
#include "nsIURI.h"
|
||||
#include "nsIChannel.h"
|
||||
#include "nsIHttpChannel.h"
|
||||
#include "nsIInputStream.h"
|
||||
#include "nsNetUtil.h"
|
||||
#include "nsServiceManagerUtils.h"
|
||||
#include "mozilla/Unused.h"
|
||||
#include "nsIScriptSecurityManager.h"
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
using namespace mozilla;
|
||||
|
||||
/*
|
||||
* Test synchronous Open.
|
||||
*/
|
||||
|
||||
#define RETURN_IF_FAILED(rv, what) \
|
||||
PR_BEGIN_MACRO \
|
||||
if (NS_FAILED(rv)) { \
|
||||
printf(what ": failed - %08x\n", static_cast<uint32_t>(rv)); \
|
||||
return -1; \
|
||||
} \
|
||||
PR_END_MACRO
|
||||
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
if (test_common_init(&argc, &argv) != 0)
|
||||
return -1;
|
||||
|
||||
nsresult rv = NS_InitXPCOM2(nullptr, nullptr, nullptr);
|
||||
if (NS_FAILED(rv)) return -1;
|
||||
|
||||
char buf[256];
|
||||
|
||||
if (argc != 3) {
|
||||
printf("Usage: TestOpen url filename\nLoads a URL using ::Open, writing it to a file\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIURI> uri;
|
||||
nsCOMPtr<nsIInputStream> stream;
|
||||
|
||||
rv = NS_NewURI(getter_AddRefs(uri), argv[1]);
|
||||
RETURN_IF_FAILED(rv, "NS_NewURI");
|
||||
|
||||
nsCOMPtr<nsIScriptSecurityManager> secman =
|
||||
do_GetService(NS_SCRIPTSECURITYMANAGER_CONTRACTID, &rv);
|
||||
RETURN_IF_FAILED(rv, "Couldn't get script security manager!");
|
||||
nsCOMPtr<nsIPrincipal> systemPrincipal;
|
||||
rv = secman->GetSystemPrincipal(getter_AddRefs(systemPrincipal));
|
||||
RETURN_IF_FAILED(rv, "Couldn't get system principal!");
|
||||
|
||||
nsCOMPtr<nsIChannel> channel;
|
||||
rv = NS_NewChannel(getter_AddRefs(channel),
|
||||
uri,
|
||||
systemPrincipal,
|
||||
nsILoadInfo::SEC_ALLOW_CROSS_ORIGIN_DATA_IS_NULL,
|
||||
nsIContentPolicy::TYPE_OTHER);
|
||||
RETURN_IF_FAILED(rv, "NS_NewChannel");
|
||||
|
||||
rv = channel->Open2(getter_AddRefs(stream));
|
||||
RETURN_IF_FAILED(rv, "channel->Open2()");
|
||||
|
||||
FILE* outfile = fopen(argv[2], "wb");
|
||||
if (!outfile) {
|
||||
printf("error opening %s\n", argv[2]);
|
||||
return 1;
|
||||
}
|
||||
|
||||
uint32_t read;
|
||||
while (NS_SUCCEEDED(stream->Read(buf, sizeof(buf), &read)) && read) {
|
||||
Unused << fwrite(buf, 1, read, outfile);
|
||||
}
|
||||
printf("Done\n");
|
||||
|
||||
fclose(outfile);
|
||||
|
||||
NS_ShutdownXPCOM(nullptr);
|
||||
return 0;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue