Absolute File Name: | /home/qt/qt5_coco/qt5/qtbase/src/network/access/qnetworkaccessbackend.cpp |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | - | |||||||||||||||||||
2 | - | |||||||||||||||||||
3 | - | |||||||||||||||||||
4 | - | |||||||||||||||||||
5 | - | |||||||||||||||||||
6 | - | |||||||||||||||||||
7 | - | |||||||||||||||||||
8 | - | |||||||||||||||||||
9 | class QNetworkAccessBackendFactoryData: public QList<QNetworkAccessBackendFactory *> | - | ||||||||||||||||||
10 | { | - | ||||||||||||||||||
11 | public: | - | ||||||||||||||||||
12 | QNetworkAccessBackendFactoryData() : mutex(QMutex::Recursive) | - | ||||||||||||||||||
13 | { | - | ||||||||||||||||||
14 | valid.ref(); | - | ||||||||||||||||||
15 | } | - | ||||||||||||||||||
16 | ~QNetworkAccessBackendFactoryData() | - | ||||||||||||||||||
17 | { | - | ||||||||||||||||||
18 | QMutexLocker locker(&mutex); | - | ||||||||||||||||||
19 | valid.deref(); | - | ||||||||||||||||||
20 | } | - | ||||||||||||||||||
21 | - | |||||||||||||||||||
22 | QMutex mutex; | - | ||||||||||||||||||
23 | - | |||||||||||||||||||
24 | static QBasicAtomicInt valid; | - | ||||||||||||||||||
25 | }; | - | ||||||||||||||||||
26 | namespace { namespace Q_QGS_factoryData { typedef QNetworkAccessBackendFactoryData Type; QBasicAtomicInt guard = { QtGlobalStatic::Uninitialized }; __attribute__((visibility("hidden"))) inline Type *innerFunction() { struct HolderBase { ~HolderBase() noexcept { if (guard.load() == QtGlobalStatic::Initialized) guard.store(QtGlobalStatic::Destroyed); } }; static struct Holder : public HolderBase { Type value; Holder() noexcept(noexcept(Type ())) : value () { guard.store(QtGlobalStatic::Initialized); } } holder; return &holder.value; } } } static QGlobalStatic<QNetworkAccessBackendFactoryData, Q_QGS_factoryData::innerFunction, Q_QGS_factoryData::guard> factoryData; | - | ||||||||||||||||||
27 | QBasicAtomicInt QNetworkAccessBackendFactoryData::valid = { 0 }; | - | ||||||||||||||||||
28 | - | |||||||||||||||||||
29 | QNetworkAccessBackendFactory::QNetworkAccessBackendFactory() | - | ||||||||||||||||||
30 | { | - | ||||||||||||||||||
31 | QMutexLocker locker(&factoryData()->mutex); | - | ||||||||||||||||||
32 | factoryData()->append(this); | - | ||||||||||||||||||
33 | } | - | ||||||||||||||||||
34 | - | |||||||||||||||||||
35 | QNetworkAccessBackendFactory::~QNetworkAccessBackendFactory() | - | ||||||||||||||||||
36 | { | - | ||||||||||||||||||
37 | if (QNetworkAccessBackendFactoryData::valid.load()) { | - | ||||||||||||||||||
38 | QMutexLocker locker(&factoryData()->mutex); | - | ||||||||||||||||||
39 | factoryData()->removeAll(this); | - | ||||||||||||||||||
40 | } | - | ||||||||||||||||||
41 | } | - | ||||||||||||||||||
42 | - | |||||||||||||||||||
43 | QNetworkAccessBackend *QNetworkAccessManagerPrivate::findBackend(QNetworkAccessManager::Operation op, | - | ||||||||||||||||||
44 | const QNetworkRequest &request) | - | ||||||||||||||||||
45 | { | - | ||||||||||||||||||
46 | if (QNetworkAccessBackendFactoryData::valid.load()) { | - | ||||||||||||||||||
47 | QMutexLocker locker(&factoryData()->mutex); | - | ||||||||||||||||||
48 | QNetworkAccessBackendFactoryData::ConstIterator it = factoryData()->constBegin(), | - | ||||||||||||||||||
49 | end = factoryData()->constEnd(); | - | ||||||||||||||||||
50 | while (it != end) { | - | ||||||||||||||||||
51 | QNetworkAccessBackend *backend = (*it)->create(op, request); | - | ||||||||||||||||||
52 | if (backend) { | - | ||||||||||||||||||
53 | backend->manager = this; | - | ||||||||||||||||||
54 | return backend; | - | ||||||||||||||||||
55 | } | - | ||||||||||||||||||
56 | ++it; | - | ||||||||||||||||||
57 | } | - | ||||||||||||||||||
58 | } | - | ||||||||||||||||||
59 | return 0; | - | ||||||||||||||||||
60 | } | - | ||||||||||||||||||
61 | - | |||||||||||||||||||
62 | QStringList QNetworkAccessManagerPrivate::backendSupportedSchemes() const | - | ||||||||||||||||||
63 | { | - | ||||||||||||||||||
64 | if (QNetworkAccessBackendFactoryData::valid.load()) { | - | ||||||||||||||||||
65 | QMutexLocker locker(&factoryData()->mutex); | - | ||||||||||||||||||
66 | QNetworkAccessBackendFactoryData::ConstIterator it = factoryData()->constBegin(); | - | ||||||||||||||||||
67 | QNetworkAccessBackendFactoryData::ConstIterator end = factoryData()->constEnd(); | - | ||||||||||||||||||
68 | QStringList schemes; | - | ||||||||||||||||||
69 | while (it != end) { | - | ||||||||||||||||||
70 | schemes += (*it)->supportedSchemes(); | - | ||||||||||||||||||
71 | ++it; | - | ||||||||||||||||||
72 | } | - | ||||||||||||||||||
73 | return schemes; | - | ||||||||||||||||||
74 | } | - | ||||||||||||||||||
75 | return QStringList(); | - | ||||||||||||||||||
76 | } | - | ||||||||||||||||||
77 | - | |||||||||||||||||||
78 | QNonContiguousByteDevice* QNetworkAccessBackend::createUploadByteDevice() | - | ||||||||||||||||||
79 | { | - | ||||||||||||||||||
80 | if (reply->outgoingDataBuffer) | - | ||||||||||||||||||
81 | uploadByteDevice = QNonContiguousByteDeviceFactory::createShared(reply->outgoingDataBuffer); | - | ||||||||||||||||||
82 | else if (reply->outgoingData) { | - | ||||||||||||||||||
83 | uploadByteDevice = QNonContiguousByteDeviceFactory::createShared(reply->outgoingData); | - | ||||||||||||||||||
84 | } else { | - | ||||||||||||||||||
85 | return 0; | - | ||||||||||||||||||
86 | } | - | ||||||||||||||||||
87 | - | |||||||||||||||||||
88 | - | |||||||||||||||||||
89 | if (!isSynchronous()) | - | ||||||||||||||||||
90 | connect(uploadByteDevice.data(), qFlagLocation("2""readProgress(qint64,qint64)" "\0" __FILE__ ":" "133""139"), this, qFlagLocation("1""emitReplyUploadProgress(qint64,qint64)" "\0" __FILE__ ":" "133""139")); | - | ||||||||||||||||||
91 | - | |||||||||||||||||||
92 | return uploadByteDevice.data(); | - | ||||||||||||||||||
93 | } | - | ||||||||||||||||||
94 | - | |||||||||||||||||||
95 | - | |||||||||||||||||||
96 | - | |||||||||||||||||||
97 | void QNetworkAccessBackend::emitReplyUploadProgress(qint64 bytesSent, qint64 bytesTotal) | - | ||||||||||||||||||
98 | { | - | ||||||||||||||||||
99 | if (reply->isFinished) | - | ||||||||||||||||||
100 | return; | - | ||||||||||||||||||
101 | reply->emitUploadProgress(bytesSent, bytesTotal); | - | ||||||||||||||||||
102 | } | - | ||||||||||||||||||
103 | - | |||||||||||||||||||
104 | QNetworkAccessBackend::QNetworkAccessBackend() | - | ||||||||||||||||||
105 | : manager(0) | - | ||||||||||||||||||
106 | , reply(0) | - | ||||||||||||||||||
107 | , synchronous(false) | - | ||||||||||||||||||
108 | { | - | ||||||||||||||||||
109 | } | - | ||||||||||||||||||
110 | - | |||||||||||||||||||
111 | QNetworkAccessBackend::~QNetworkAccessBackend() | - | ||||||||||||||||||
112 | { | - | ||||||||||||||||||
113 | } | - | ||||||||||||||||||
114 | - | |||||||||||||||||||
115 | void QNetworkAccessBackend::downstreamReadyWrite() | - | ||||||||||||||||||
116 | { | - | ||||||||||||||||||
117 | - | |||||||||||||||||||
118 | } | - | ||||||||||||||||||
119 | - | |||||||||||||||||||
120 | void QNetworkAccessBackend::setDownstreamLimited(bool b) | - | ||||||||||||||||||
121 | { | - | ||||||||||||||||||
122 | (void)b;; | - | ||||||||||||||||||
123 | - | |||||||||||||||||||
124 | } | - | ||||||||||||||||||
125 | - | |||||||||||||||||||
126 | void QNetworkAccessBackend::copyFinished(QIODevice *) | - | ||||||||||||||||||
127 | { | - | ||||||||||||||||||
128 | - | |||||||||||||||||||
129 | } | - | ||||||||||||||||||
130 | - | |||||||||||||||||||
131 | void QNetworkAccessBackend::ignoreSslErrors() | - | ||||||||||||||||||
132 | { | - | ||||||||||||||||||
133 | - | |||||||||||||||||||
134 | } | - | ||||||||||||||||||
135 | - | |||||||||||||||||||
136 | void QNetworkAccessBackend::ignoreSslErrors(const QList<QSslError> &errors) | - | ||||||||||||||||||
137 | { | - | ||||||||||||||||||
138 | (void)errors;; | - | ||||||||||||||||||
139 | - | |||||||||||||||||||
140 | } | - | ||||||||||||||||||
141 | - | |||||||||||||||||||
142 | void QNetworkAccessBackend::fetchSslConfiguration(QSslConfiguration &) const | - | ||||||||||||||||||
143 | { | - | ||||||||||||||||||
144 | - | |||||||||||||||||||
145 | } | - | ||||||||||||||||||
146 | - | |||||||||||||||||||
147 | void QNetworkAccessBackend::setSslConfiguration(const QSslConfiguration &) | - | ||||||||||||||||||
148 | { | - | ||||||||||||||||||
149 | - | |||||||||||||||||||
150 | } | - | ||||||||||||||||||
151 | - | |||||||||||||||||||
152 | QNetworkCacheMetaData QNetworkAccessBackend::fetchCacheMetaData(const QNetworkCacheMetaData &) const | - | ||||||||||||||||||
153 | { | - | ||||||||||||||||||
154 | return QNetworkCacheMetaData(); | - | ||||||||||||||||||
155 | } | - | ||||||||||||||||||
156 | - | |||||||||||||||||||
157 | QNetworkAccessManager::Operation QNetworkAccessBackend::operation() const | - | ||||||||||||||||||
158 | { | - | ||||||||||||||||||
159 | return reply->operation; | - | ||||||||||||||||||
160 | } | - | ||||||||||||||||||
161 | - | |||||||||||||||||||
162 | QNetworkRequest QNetworkAccessBackend::request() const | - | ||||||||||||||||||
163 | { | - | ||||||||||||||||||
164 | return reply->request; | - | ||||||||||||||||||
165 | } | - | ||||||||||||||||||
166 | - | |||||||||||||||||||
167 | - | |||||||||||||||||||
168 | QList<QNetworkProxy> QNetworkAccessBackend::proxyList() const | - | ||||||||||||||||||
169 | { | - | ||||||||||||||||||
170 | return reply->proxyList; | - | ||||||||||||||||||
171 | } | - | ||||||||||||||||||
172 | - | |||||||||||||||||||
173 | - | |||||||||||||||||||
174 | QAbstractNetworkCache *QNetworkAccessBackend::networkCache() const | - | ||||||||||||||||||
175 | { | - | ||||||||||||||||||
176 | if (!manager) | - | ||||||||||||||||||
177 | return 0; | - | ||||||||||||||||||
178 | return manager->networkCache; | - | ||||||||||||||||||
179 | } | - | ||||||||||||||||||
180 | - | |||||||||||||||||||
181 | void QNetworkAccessBackend::setCachingEnabled(bool enable) | - | ||||||||||||||||||
182 | { | - | ||||||||||||||||||
183 | reply->setCachingEnabled(enable); | - | ||||||||||||||||||
184 | } | - | ||||||||||||||||||
185 | - | |||||||||||||||||||
186 | bool QNetworkAccessBackend::isCachingEnabled() const | - | ||||||||||||||||||
187 | { | - | ||||||||||||||||||
188 | return reply->isCachingEnabled(); | - | ||||||||||||||||||
189 | } | - | ||||||||||||||||||
190 | - | |||||||||||||||||||
191 | qint64 QNetworkAccessBackend::nextDownstreamBlockSize() const | - | ||||||||||||||||||
192 | { | - | ||||||||||||||||||
193 | return reply->nextDownstreamBlockSize(); | - | ||||||||||||||||||
194 | } | - | ||||||||||||||||||
195 | - | |||||||||||||||||||
196 | void QNetworkAccessBackend::writeDownstreamData(QByteDataBuffer &list) | - | ||||||||||||||||||
197 | { | - | ||||||||||||||||||
198 | reply->appendDownstreamData(list); | - | ||||||||||||||||||
199 | } | - | ||||||||||||||||||
200 | - | |||||||||||||||||||
201 | void QNetworkAccessBackend::writeDownstreamData(QIODevice *data) | - | ||||||||||||||||||
202 | { | - | ||||||||||||||||||
203 | reply->appendDownstreamData(data); | - | ||||||||||||||||||
204 | } | - | ||||||||||||||||||
205 | - | |||||||||||||||||||
206 | - | |||||||||||||||||||
207 | void QNetworkAccessBackend::writeDownstreamDataDownloadBuffer(qint64 bytesReceived, qint64 bytesTotal) | - | ||||||||||||||||||
208 | { | - | ||||||||||||||||||
209 | reply->appendDownstreamDataDownloadBuffer(bytesReceived, bytesTotal); | - | ||||||||||||||||||
210 | } | - | ||||||||||||||||||
211 | - | |||||||||||||||||||
212 | char* QNetworkAccessBackend::getDownloadBuffer(qint64 size) | - | ||||||||||||||||||
213 | { | - | ||||||||||||||||||
214 | return reply->getDownloadBuffer(size); | - | ||||||||||||||||||
215 | } | - | ||||||||||||||||||
216 | - | |||||||||||||||||||
217 | QVariant QNetworkAccessBackend::header(QNetworkRequest::KnownHeaders header) const | - | ||||||||||||||||||
218 | { | - | ||||||||||||||||||
219 | return reply->q_func()->header(header); | - | ||||||||||||||||||
220 | } | - | ||||||||||||||||||
221 | - | |||||||||||||||||||
222 | void QNetworkAccessBackend::setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value) | - | ||||||||||||||||||
223 | { | - | ||||||||||||||||||
224 | reply->setCookedHeader(header, value); | - | ||||||||||||||||||
225 | } | - | ||||||||||||||||||
226 | - | |||||||||||||||||||
227 | bool QNetworkAccessBackend::hasRawHeader(const QByteArray &headerName) const | - | ||||||||||||||||||
228 | { | - | ||||||||||||||||||
229 | return reply->q_func()->hasRawHeader(headerName); | - | ||||||||||||||||||
230 | } | - | ||||||||||||||||||
231 | - | |||||||||||||||||||
232 | QByteArray QNetworkAccessBackend::rawHeader(const QByteArray &headerName) const | - | ||||||||||||||||||
233 | { | - | ||||||||||||||||||
234 | return reply->q_func()->rawHeader(headerName); | - | ||||||||||||||||||
235 | } | - | ||||||||||||||||||
236 | - | |||||||||||||||||||
237 | QList<QByteArray> QNetworkAccessBackend::rawHeaderList() const | - | ||||||||||||||||||
238 | { | - | ||||||||||||||||||
239 | return reply->q_func()->rawHeaderList(); | - | ||||||||||||||||||
240 | } | - | ||||||||||||||||||
241 | - | |||||||||||||||||||
242 | void QNetworkAccessBackend::setRawHeader(const QByteArray &headerName, const QByteArray &headerValue) | - | ||||||||||||||||||
243 | { | - | ||||||||||||||||||
244 | reply->setRawHeader(headerName, headerValue); | - | ||||||||||||||||||
245 | } | - | ||||||||||||||||||
246 | - | |||||||||||||||||||
247 | QVariant QNetworkAccessBackend::attribute(QNetworkRequest::Attribute code) const | - | ||||||||||||||||||
248 | { | - | ||||||||||||||||||
249 | return reply->q_func()->attribute(code); | - | ||||||||||||||||||
250 | } | - | ||||||||||||||||||
251 | - | |||||||||||||||||||
252 | void QNetworkAccessBackend::setAttribute(QNetworkRequest::Attribute code, const QVariant &value) | - | ||||||||||||||||||
253 | { | - | ||||||||||||||||||
254 | if (value.isValid()) | - | ||||||||||||||||||
255 | reply->attributes.insert(code, value); | - | ||||||||||||||||||
256 | else | - | ||||||||||||||||||
257 | reply->attributes.remove(code); | - | ||||||||||||||||||
258 | } | - | ||||||||||||||||||
259 | QUrl QNetworkAccessBackend::url() const | - | ||||||||||||||||||
260 | { | - | ||||||||||||||||||
261 | return reply->url; | - | ||||||||||||||||||
262 | } | - | ||||||||||||||||||
263 | - | |||||||||||||||||||
264 | void QNetworkAccessBackend::setUrl(const QUrl &url) | - | ||||||||||||||||||
265 | { | - | ||||||||||||||||||
266 | reply->url = url; | - | ||||||||||||||||||
267 | } | - | ||||||||||||||||||
268 | - | |||||||||||||||||||
269 | void QNetworkAccessBackend::finished() | - | ||||||||||||||||||
270 | { | - | ||||||||||||||||||
271 | reply->finished(); | - | ||||||||||||||||||
272 | } | - | ||||||||||||||||||
273 | - | |||||||||||||||||||
274 | void QNetworkAccessBackend::error(QNetworkReply::NetworkError code, const QString &errorString) | - | ||||||||||||||||||
275 | { | - | ||||||||||||||||||
276 | reply->error(code, errorString); | - | ||||||||||||||||||
277 | } | - | ||||||||||||||||||
278 | - | |||||||||||||||||||
279 | - | |||||||||||||||||||
280 | void QNetworkAccessBackend::proxyAuthenticationRequired(const QNetworkProxy &proxy, | - | ||||||||||||||||||
281 | QAuthenticator *authenticator) | - | ||||||||||||||||||
282 | { | - | ||||||||||||||||||
283 | manager->proxyAuthenticationRequired(QUrl(), proxy, synchronous, authenticator, &reply->lastProxyAuthentication); | - | ||||||||||||||||||
284 | } | - | ||||||||||||||||||
285 | - | |||||||||||||||||||
286 | - | |||||||||||||||||||
287 | void QNetworkAccessBackend::authenticationRequired(QAuthenticator *authenticator) | - | ||||||||||||||||||
288 | { | - | ||||||||||||||||||
289 | manager->authenticationRequired(authenticator, reply->q_func(), synchronous, reply->url, &reply->urlForLastAuthentication); | - | ||||||||||||||||||
290 | } | - | ||||||||||||||||||
291 | - | |||||||||||||||||||
292 | void QNetworkAccessBackend::metaDataChanged() | - | ||||||||||||||||||
293 | { | - | ||||||||||||||||||
294 | reply->metaDataChanged(); | - | ||||||||||||||||||
295 | } | - | ||||||||||||||||||
296 | - | |||||||||||||||||||
297 | void QNetworkAccessBackend::redirectionRequested(const QUrl &target) | - | ||||||||||||||||||
298 | { | - | ||||||||||||||||||
299 | reply->redirectionRequested(target); | - | ||||||||||||||||||
300 | } | - | ||||||||||||||||||
301 | - | |||||||||||||||||||
302 | void QNetworkAccessBackend::encrypted() | - | ||||||||||||||||||
303 | { | - | ||||||||||||||||||
304 | - | |||||||||||||||||||
305 | reply->encrypted(); | - | ||||||||||||||||||
306 | - | |||||||||||||||||||
307 | } | - | ||||||||||||||||||
308 | - | |||||||||||||||||||
309 | void QNetworkAccessBackend::sslErrors(const QList<QSslError> &errors) | - | ||||||||||||||||||
310 | { | - | ||||||||||||||||||
311 | - | |||||||||||||||||||
312 | reply->sslErrors(errors); | - | ||||||||||||||||||
313 | - | |||||||||||||||||||
314 | - | |||||||||||||||||||
315 | - | |||||||||||||||||||
316 | } | - | ||||||||||||||||||
317 | - | |||||||||||||||||||
318 | - | |||||||||||||||||||
319 | - | |||||||||||||||||||
320 | - | |||||||||||||||||||
321 | - | |||||||||||||||||||
322 | - | |||||||||||||||||||
323 | bool QNetworkAccessBackend::start() | - | ||||||||||||||||||
324 | { | - | ||||||||||||||||||
325 | - | |||||||||||||||||||
326 | - | |||||||||||||||||||
327 | QSharedPointer<QNetworkSession> networkSession(manager->getNetworkSession()); | - | ||||||||||||||||||
328 | if (networkSession
| 0-119 | ||||||||||||||||||
329 | - | |||||||||||||||||||
330 | if (networkSession->isOpen()
| 3-116 | ||||||||||||||||||
331 | networkSession->state() == QNetworkSession::Connected
| 0-116 | ||||||||||||||||||
332 | - | |||||||||||||||||||
333 | - | |||||||||||||||||||
334 | setProperty("_q_networksession", QVariant::fromValue(networkSession)); | - | ||||||||||||||||||
335 | } executed 116 times by 2 tests: else {end of block Executed by:
| 116 | ||||||||||||||||||
336 | - | |||||||||||||||||||
337 | - | |||||||||||||||||||
338 | - | |||||||||||||||||||
339 | - | |||||||||||||||||||
340 | if (!reply->url.isLocalFile()
| 0-3 | ||||||||||||||||||
341 | const QString host = reply->url.host(); | - | ||||||||||||||||||
342 | if (host ==!= QLatin1String("localhost")
| 0-3 | ||||||||||||||||||
reply->url.isLocalFile
| ||||||||||||||||||||
343 | { | 3 | ||||||||||||||||||
} else {return executed 3 times by 1 test: false;return false; Executed by:
executed 3 times by 1 test: return false; Executed by:
| ||||||||||||||||||||
344 | } never executed: end of block | 0 | ||||||||||||||||||
345 | } never executed: end of block | 0 | ||||||||||||||||||
346 | } | - | ||||||||||||||||||
347 | - | |||||||||||||||||||
348 | - | |||||||||||||||||||
349 | - | |||||||||||||||||||
350 | - | |||||||||||||||||||
351 | - | |||||||||||||||||||
352 | - | |||||||||||||||||||
353 | QNetworkSession *session = networkSession.data(); | - | ||||||||||||||||||
354 | QNetworkConfiguration config; | - | ||||||||||||||||||
355 | if (session
| 0-116 | ||||||||||||||||||
356 | QNetworkConfigurationManager configManager; | - | ||||||||||||||||||
357 | - | |||||||||||||||||||
358 | QVariant v = session->sessionProperty(QLatin1String("ActiveConfiguration")); | - | ||||||||||||||||||
359 | if (v.isValid()
| 0-116 | ||||||||||||||||||
360 | config = configManager.configurationFromIdentifier(qvariant_cast<QString>(v)); executed 116 times by 2 tests: config = configManager.configurationFromIdentifier(qvariant_cast<QString>(v)); Executed by:
| 116 | ||||||||||||||||||
361 | - | |||||||||||||||||||
362 | if (!config.isValid()
| 0-116 | ||||||||||||||||||
363 | config = session->configuration(); never executed: config = session->configuration(); | 0 | ||||||||||||||||||
364 | - | |||||||||||||||||||
365 | if (!config.isValid()
| 0-116 | ||||||||||||||||||
366 | config = QNetworkConfiguration(); never executed: config = QNetworkConfiguration(); | 0 | ||||||||||||||||||
367 | } executed 116 times by 2 tests: end of block Executed by:
| 116 | ||||||||||||||||||
368 | reply->proxyList = manager->queryProxy(QNetworkProxyQuery(config, url())); | - | ||||||||||||||||||
369 | - | |||||||||||||||||||
370 | - | |||||||||||||||||||
371 | - | |||||||||||||||||||
372 | - | |||||||||||||||||||
373 | - | |||||||||||||||||||
374 | - | |||||||||||||||||||
375 | - | |||||||||||||||||||
376 | open(); | - | ||||||||||||||||||
377 | return executed 116 times by 2 tests: true;return true; Executed by:
executed 116 times by 2 tests: return true; Executed by:
| 116 | ||||||||||||||||||
378 | } | - | ||||||||||||||||||
379 | - | |||||||||||||||||||
380 | - | |||||||||||||||||||
Switch to Source code | Preprocessed file |