/src/mozilla-central/netwerk/base/nsInputStreamChannel.cpp
Line | Count | Source (jump to first uncovered line) |
1 | | /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ |
2 | | /* This Source Code Form is subject to the terms of the Mozilla Public |
3 | | * License, v. 2.0. If a copy of the MPL was not distributed with this |
4 | | * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
5 | | |
6 | | #include "nsInputStreamChannel.h" |
7 | | |
8 | | //----------------------------------------------------------------------------- |
9 | | // nsInputStreamChannel |
10 | | |
11 | | namespace mozilla { |
12 | | namespace net { |
13 | | |
14 | | nsresult |
15 | | nsInputStreamChannel::OpenContentStream(bool async, nsIInputStream **result, |
16 | | nsIChannel** channel) |
17 | 0 | { |
18 | 0 | NS_ENSURE_TRUE(mContentStream, NS_ERROR_NOT_INITIALIZED); |
19 | 0 |
|
20 | 0 | // If content length is unknown, then we must guess. In this case, we assume |
21 | 0 | // the stream can tell us. If the stream is a pipe, then this will not work. |
22 | 0 |
|
23 | 0 | if (mContentLength < 0) { |
24 | 0 | uint64_t avail; |
25 | 0 | nsresult rv = mContentStream->Available(&avail); |
26 | 0 | if (rv == NS_BASE_STREAM_CLOSED) { |
27 | 0 | // This just means there's nothing in the stream |
28 | 0 | avail = 0; |
29 | 0 | } else if (NS_FAILED(rv)) { |
30 | 0 | return rv; |
31 | 0 | } |
32 | 0 | mContentLength = avail; |
33 | 0 | } |
34 | 0 |
|
35 | 0 | EnableSynthesizedProgressEvents(true); |
36 | 0 |
|
37 | 0 | NS_ADDREF(*result = mContentStream); |
38 | 0 | return NS_OK; |
39 | 0 | } |
40 | | |
41 | | //----------------------------------------------------------------------------- |
42 | | // nsInputStreamChannel::nsISupports |
43 | | |
44 | | NS_IMPL_ISUPPORTS_INHERITED(nsInputStreamChannel, |
45 | | nsBaseChannel, |
46 | | nsIInputStreamChannel) |
47 | | |
48 | | //----------------------------------------------------------------------------- |
49 | | // nsInputStreamChannel::nsIInputStreamChannel |
50 | | |
51 | | NS_IMETHODIMP |
52 | | nsInputStreamChannel::SetURI(nsIURI *uri) |
53 | 0 | { |
54 | 0 | NS_ENSURE_TRUE(!URI(), NS_ERROR_ALREADY_INITIALIZED); |
55 | 0 | nsBaseChannel::SetURI(uri); |
56 | 0 | return NS_OK; |
57 | 0 | } |
58 | | |
59 | | NS_IMETHODIMP |
60 | | nsInputStreamChannel::GetContentStream(nsIInputStream **stream) |
61 | 0 | { |
62 | 0 | NS_IF_ADDREF(*stream = mContentStream); |
63 | 0 | return NS_OK; |
64 | 0 | } |
65 | | |
66 | | NS_IMETHODIMP |
67 | | nsInputStreamChannel::SetContentStream(nsIInputStream *stream) |
68 | 0 | { |
69 | 0 | NS_ENSURE_TRUE(!mContentStream, NS_ERROR_ALREADY_INITIALIZED); |
70 | 0 | mContentStream = stream; |
71 | 0 | return NS_OK; |
72 | 0 | } |
73 | | |
74 | | NS_IMETHODIMP |
75 | | nsInputStreamChannel::GetSrcdocData(nsAString& aSrcdocData) |
76 | 0 | { |
77 | 0 | aSrcdocData = mSrcdocData; |
78 | 0 | return NS_OK; |
79 | 0 | } |
80 | | |
81 | | NS_IMETHODIMP |
82 | | nsInputStreamChannel::SetSrcdocData(const nsAString& aSrcdocData) |
83 | 0 | { |
84 | 0 | mSrcdocData = aSrcdocData; |
85 | 0 | mIsSrcdocChannel = true; |
86 | 0 | return NS_OK; |
87 | 0 | } |
88 | | |
89 | | NS_IMETHODIMP |
90 | | nsInputStreamChannel::GetIsSrcdocChannel(bool *aIsSrcdocChannel) |
91 | 0 | { |
92 | 0 | *aIsSrcdocChannel = mIsSrcdocChannel; |
93 | 0 | return NS_OK; |
94 | 0 | } |
95 | | |
96 | | NS_IMETHODIMP |
97 | | nsInputStreamChannel::GetBaseURI(nsIURI** aBaseURI) |
98 | 0 | { |
99 | 0 | *aBaseURI = mBaseURI; |
100 | 0 | NS_IF_ADDREF(*aBaseURI); |
101 | 0 | return NS_OK; |
102 | 0 | } |
103 | | |
104 | | NS_IMETHODIMP |
105 | | nsInputStreamChannel::SetBaseURI(nsIURI* aBaseURI) |
106 | 0 | { |
107 | 0 | mBaseURI = aBaseURI; |
108 | 0 | return NS_OK; |
109 | 0 | } |
110 | | |
111 | | } // namespace net |
112 | | } // namespace mozilla |