tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

NullHttpChannel.cpp (23626B)


      1 /* This Source Code Form is subject to the terms of the Mozilla Public
      2 * License, v. 2.0. If a copy of the MPL was not distributed with this
      3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      4 
      5 #include "NullHttpChannel.h"
      6 #include "nsContentUtils.h"
      7 #include "nsContentSecurityManager.h"
      8 #include "nsIScriptSecurityManager.h"
      9 #include "nsIStreamListener.h"
     10 
     11 namespace mozilla {
     12 namespace net {
     13 
     14 NS_IMPL_ISUPPORTS(NullHttpChannel, nsINullChannel, nsIChannel, nsIHttpChannel,
     15                  nsIIdentChannel, nsITimedChannel)
     16 
     17 NullHttpChannel::NullHttpChannel() {
     18  mChannelCreationTime = PR_Now();
     19  mChannelCreationTimestamp = TimeStamp::Now();
     20  mAsyncOpenTime = TimeStamp::Now();
     21 }
     22 
     23 NullHttpChannel::NullHttpChannel(nsIHttpChannel* chan)
     24    : mAllRedirectsSameOrigin(false), mAllRedirectsPassTimingAllowCheck(false) {
     25  nsIScriptSecurityManager* ssm = nsContentUtils::GetSecurityManager();
     26  ssm->GetChannelURIPrincipal(chan, getter_AddRefs(mResourcePrincipal));
     27 
     28  (void)chan->GetResponseHeader("Timing-Allow-Origin"_ns,
     29                                mTimingAllowOriginHeader);
     30  chan->GetURI(getter_AddRefs(mURI));
     31  chan->GetOriginalURI(getter_AddRefs(mOriginalURI));
     32 
     33  mChannelCreationTime = PR_Now();
     34  mChannelCreationTimestamp = TimeStamp::Now();
     35  mAsyncOpenTime = TimeStamp::Now();
     36 
     37  nsCOMPtr<nsITimedChannel> timedChanel(do_QueryInterface(chan));
     38  if (timedChanel) {
     39    timedChanel->GetInitiatorType(mInitiatorType);
     40  }
     41 }
     42 
     43 nsresult NullHttpChannel::Init(nsIURI* aURI, uint32_t aCaps,
     44                               nsProxyInfo* aProxyInfo,
     45                               uint32_t aProxyResolveFlags, nsIURI* aProxyURI) {
     46  mURI = aURI;
     47  mOriginalURI = aURI;
     48  return NS_OK;
     49 }
     50 
     51 //-----------------------------------------------------------------------------
     52 // NullHttpChannel::nsIHttpChannel
     53 //-----------------------------------------------------------------------------
     54 
     55 NS_IMETHODIMP
     56 NullHttpChannel::GetChannelId(uint64_t* aChannelId) {
     57  return NS_ERROR_NOT_IMPLEMENTED;
     58 }
     59 
     60 NS_IMETHODIMP
     61 NullHttpChannel::SetChannelId(uint64_t aChannelId) {
     62  return NS_ERROR_NOT_IMPLEMENTED;
     63 }
     64 
     65 NS_IMETHODIMP
     66 NullHttpChannel::GetTopLevelContentWindowId(uint64_t* aWindowId) {
     67  return NS_ERROR_NOT_IMPLEMENTED;
     68 }
     69 
     70 NS_IMETHODIMP
     71 NullHttpChannel::SetTopLevelContentWindowId(uint64_t aWindowId) {
     72  return NS_ERROR_NOT_IMPLEMENTED;
     73 }
     74 
     75 NS_IMETHODIMP
     76 NullHttpChannel::GetBrowserId(uint64_t*) { return NS_ERROR_NOT_IMPLEMENTED; }
     77 
     78 NS_IMETHODIMP
     79 NullHttpChannel::SetBrowserId(uint64_t) { return NS_ERROR_NOT_IMPLEMENTED; }
     80 
     81 NS_IMETHODIMP
     82 NullHttpChannel::GetTransferSize(uint64_t* aTransferSize) {
     83  return NS_ERROR_NOT_IMPLEMENTED;
     84 }
     85 
     86 NS_IMETHODIMP
     87 NullHttpChannel::GetRequestSize(uint64_t* aRequestSize) {
     88  return NS_ERROR_NOT_IMPLEMENTED;
     89 }
     90 
     91 NS_IMETHODIMP
     92 NullHttpChannel::GetDecodedBodySize(uint64_t* aDecodedBodySize) {
     93  return NS_ERROR_NOT_IMPLEMENTED;
     94 }
     95 
     96 NS_IMETHODIMP
     97 NullHttpChannel::GetRequestMethod(nsACString& aRequestMethod) {
     98  return NS_ERROR_NOT_IMPLEMENTED;
     99 }
    100 
    101 NS_IMETHODIMP
    102 NullHttpChannel::SetRequestMethod(const nsACString& aRequestMethod) {
    103  return NS_ERROR_NOT_IMPLEMENTED;
    104 }
    105 
    106 NS_IMETHODIMP
    107 NullHttpChannel::GetReferrerInfo(nsIReferrerInfo** aReferrerInfo) {
    108  return NS_ERROR_NOT_IMPLEMENTED;
    109 }
    110 
    111 NS_IMETHODIMP
    112 NullHttpChannel::SetReferrerInfo(nsIReferrerInfo* aReferrerInfo) {
    113  return NS_ERROR_NOT_IMPLEMENTED;
    114 }
    115 
    116 NS_IMETHODIMP
    117 NullHttpChannel::SetReferrerInfoWithoutClone(nsIReferrerInfo* aReferrerInfo) {
    118  return NS_ERROR_NOT_IMPLEMENTED;
    119 }
    120 
    121 NS_IMETHODIMP
    122 NullHttpChannel::GetRequestHeader(const nsACString& aHeader,
    123                                  nsACString& _retval) {
    124  _retval.Truncate();
    125  return NS_ERROR_NOT_IMPLEMENTED;
    126 }
    127 
    128 NS_IMETHODIMP
    129 NullHttpChannel::SetRequestHeader(const nsACString& aHeader,
    130                                  const nsACString& aValue, bool aMerge) {
    131  return NS_ERROR_NOT_IMPLEMENTED;
    132 }
    133 
    134 NS_IMETHODIMP
    135 NullHttpChannel::SetNewReferrerInfo(const nsACString& aUrl,
    136                                    nsIReferrerInfo::ReferrerPolicyIDL aPolicy,
    137                                    bool aSendReferrer) {
    138  return NS_ERROR_NOT_IMPLEMENTED;
    139 }
    140 
    141 NS_IMETHODIMP
    142 NullHttpChannel::SetEmptyRequestHeader(const nsACString& aHeader) {
    143  return NS_ERROR_NOT_IMPLEMENTED;
    144 }
    145 
    146 NS_IMETHODIMP
    147 NullHttpChannel::VisitRequestHeaders(nsIHttpHeaderVisitor* aVisitor) {
    148  return NS_ERROR_NOT_IMPLEMENTED;
    149 }
    150 
    151 NS_IMETHODIMP
    152 NullHttpChannel::VisitNonDefaultRequestHeaders(nsIHttpHeaderVisitor* aVisitor) {
    153  return NS_ERROR_NOT_IMPLEMENTED;
    154 }
    155 
    156 NS_IMETHODIMP
    157 NullHttpChannel::GetAllowSTS(bool* aAllowSTS) {
    158  return NS_ERROR_NOT_IMPLEMENTED;
    159 }
    160 
    161 NS_IMETHODIMP
    162 NullHttpChannel::SetAllowSTS(bool aAllowSTS) {
    163  return NS_ERROR_NOT_IMPLEMENTED;
    164 }
    165 
    166 NS_IMETHODIMP
    167 NullHttpChannel::GetRedirectionLimit(uint32_t* aRedirectionLimit) {
    168  return NS_ERROR_NOT_IMPLEMENTED;
    169 }
    170 
    171 NS_IMETHODIMP
    172 NullHttpChannel::SetRedirectionLimit(uint32_t aRedirectionLimit) {
    173  return NS_ERROR_NOT_IMPLEMENTED;
    174 }
    175 
    176 NS_IMETHODIMP
    177 NullHttpChannel::GetResponseStatus(uint32_t* aResponseStatus) {
    178  return NS_ERROR_NOT_IMPLEMENTED;
    179 }
    180 
    181 NS_IMETHODIMP
    182 NullHttpChannel::GetResponseStatusText(nsACString& aResponseStatusText) {
    183  return NS_ERROR_NOT_IMPLEMENTED;
    184 }
    185 
    186 NS_IMETHODIMP
    187 NullHttpChannel::GetRequestSucceeded(bool* aRequestSucceeded) {
    188  return NS_ERROR_NOT_IMPLEMENTED;
    189 }
    190 
    191 NS_IMETHODIMP
    192 NullHttpChannel::GetResponseHeader(const nsACString& header,
    193                                   nsACString& _retval) {
    194  _retval.Truncate();
    195  return NS_ERROR_NOT_IMPLEMENTED;
    196 }
    197 
    198 NS_IMETHODIMP
    199 NullHttpChannel::SetResponseHeader(const nsACString& header,
    200                                   const nsACString& value, bool merge) {
    201  return NS_ERROR_NOT_IMPLEMENTED;
    202 }
    203 
    204 NS_IMETHODIMP
    205 NullHttpChannel::VisitResponseHeaders(nsIHttpHeaderVisitor* aVisitor) {
    206  return NS_ERROR_NOT_IMPLEMENTED;
    207 }
    208 
    209 NS_IMETHODIMP
    210 NullHttpChannel::GetOriginalResponseHeader(const nsACString& header,
    211                                           nsIHttpHeaderVisitor* aVisitor) {
    212  return NS_ERROR_NOT_IMPLEMENTED;
    213 }
    214 
    215 NS_IMETHODIMP
    216 NullHttpChannel::VisitOriginalResponseHeaders(nsIHttpHeaderVisitor* aVisitor) {
    217  return NS_ERROR_NOT_IMPLEMENTED;
    218 }
    219 
    220 NS_IMETHODIMP
    221 NullHttpChannel::ShouldStripRequestBodyHeader(const nsACString& aMethod,
    222                                              bool* aResult) {
    223  return NS_ERROR_NOT_IMPLEMENTED;
    224 }
    225 
    226 NS_IMETHODIMP
    227 NullHttpChannel::IsNoStoreResponse(bool* _retval) {
    228  return NS_ERROR_NOT_IMPLEMENTED;
    229 }
    230 
    231 NS_IMETHODIMP
    232 NullHttpChannel::IsNoCacheResponse(bool* _retval) {
    233  return NS_ERROR_NOT_IMPLEMENTED;
    234 }
    235 
    236 NS_IMETHODIMP
    237 NullHttpChannel::RedirectTo(nsIURI* aNewURI) {
    238  return NS_ERROR_NOT_IMPLEMENTED;
    239 }
    240 
    241 NS_IMETHODIMP
    242 NullHttpChannel::UpgradeToSecure() { return NS_ERROR_NOT_IMPLEMENTED; }
    243 
    244 NS_IMETHODIMP
    245 NullHttpChannel::GetRequestObserversCalled(bool* aCalled) {
    246  return NS_ERROR_NOT_IMPLEMENTED;
    247 }
    248 
    249 NS_IMETHODIMP
    250 NullHttpChannel::SetRequestObserversCalled(bool aCalled) {
    251  return NS_ERROR_NOT_IMPLEMENTED;
    252 }
    253 
    254 NS_IMETHODIMP
    255 NullHttpChannel::GetRequestContextID(uint64_t* _retval) {
    256  return NS_ERROR_NOT_IMPLEMENTED;
    257 }
    258 
    259 NS_IMETHODIMP
    260 NullHttpChannel::SetRequestContextID(uint64_t rcID) {
    261  return NS_ERROR_NOT_IMPLEMENTED;
    262 }
    263 
    264 NS_IMETHODIMP
    265 NullHttpChannel::GetProtocolVersion(nsACString& aProtocolVersion) {
    266  return NS_ERROR_NOT_IMPLEMENTED;
    267 }
    268 
    269 NS_IMETHODIMP
    270 NullHttpChannel::GetEncodedBodySize(uint64_t* aEncodedBodySize) {
    271  return NS_ERROR_NOT_IMPLEMENTED;
    272 }
    273 
    274 NS_IMETHODIMP
    275 NullHttpChannel::GetIsUserAgentHeaderOutdated(bool* aValue) {
    276  return NS_ERROR_NOT_IMPLEMENTED;
    277 }
    278 
    279 NS_IMETHODIMP
    280 NullHttpChannel::SetIsUserAgentHeaderOutdated(bool aValue) {
    281  return NS_ERROR_NOT_IMPLEMENTED;
    282 }
    283 
    284 void NullHttpChannel::SetSource(
    285    mozilla::UniquePtr<mozilla::ProfileChunkedBuffer> aSource) {}
    286 
    287 //-----------------------------------------------------------------------------
    288 // NullHttpChannel::nsIChannel
    289 //-----------------------------------------------------------------------------
    290 
    291 NS_IMETHODIMP
    292 NullHttpChannel::GetOriginalURI(nsIURI** aOriginalURI) {
    293  *aOriginalURI = do_AddRef(mOriginalURI).take();
    294  return NS_OK;
    295 }
    296 
    297 NS_IMETHODIMP
    298 NullHttpChannel::SetOriginalURI(nsIURI* aOriginalURI) {
    299  mOriginalURI = aOriginalURI;
    300  return NS_OK;
    301 }
    302 
    303 NS_IMETHODIMP
    304 NullHttpChannel::GetURI(nsIURI** aURI) {
    305  *aURI = do_AddRef(mURI).take();
    306  return NS_OK;
    307 }
    308 
    309 NS_IMETHODIMP
    310 NullHttpChannel::GetOwner(nsISupports** aOwner) {
    311  return NS_ERROR_NOT_IMPLEMENTED;
    312 }
    313 
    314 NS_IMETHODIMP
    315 NullHttpChannel::SetOwner(nsISupports* aOwner) {
    316  return NS_ERROR_NOT_IMPLEMENTED;
    317 }
    318 
    319 NS_IMETHODIMP
    320 NullHttpChannel::GetNotificationCallbacks(
    321    nsIInterfaceRequestor** aNotificationCallbacks) {
    322  return NS_ERROR_NOT_IMPLEMENTED;
    323 }
    324 
    325 NS_IMETHODIMP
    326 NullHttpChannel::SetNotificationCallbacks(
    327    nsIInterfaceRequestor* aNotificationCallbacks) {
    328  return NS_ERROR_NOT_IMPLEMENTED;
    329 }
    330 
    331 NS_IMETHODIMP
    332 NullHttpChannel::GetSecurityInfo(nsITransportSecurityInfo** aSecurityInfo) {
    333  return NS_ERROR_NOT_IMPLEMENTED;
    334 }
    335 
    336 NS_IMETHODIMP
    337 NullHttpChannel::GetContentType(nsACString& aContentType) {
    338  return NS_ERROR_NOT_IMPLEMENTED;
    339 }
    340 
    341 NS_IMETHODIMP
    342 NullHttpChannel::SetContentType(const nsACString& aContentType) {
    343  return NS_ERROR_NOT_IMPLEMENTED;
    344 }
    345 
    346 NS_IMETHODIMP
    347 NullHttpChannel::GetContentCharset(nsACString& aContentCharset) {
    348  return NS_ERROR_NOT_IMPLEMENTED;
    349 }
    350 
    351 NS_IMETHODIMP
    352 NullHttpChannel::SetContentCharset(const nsACString& aContentCharset) {
    353  return NS_ERROR_NOT_IMPLEMENTED;
    354 }
    355 
    356 NS_IMETHODIMP
    357 NullHttpChannel::GetContentLength(int64_t* aContentLength) {
    358  return NS_ERROR_NOT_IMPLEMENTED;
    359 }
    360 
    361 NS_IMETHODIMP
    362 NullHttpChannel::SetContentLength(int64_t aContentLength) {
    363  return NS_ERROR_NOT_IMPLEMENTED;
    364 }
    365 
    366 NS_IMETHODIMP
    367 NullHttpChannel::Open(nsIInputStream** aStream) {
    368  nsCOMPtr<nsIStreamListener> listener;
    369  nsresult rv =
    370      nsContentSecurityManager::doContentSecurityCheck(this, listener);
    371  NS_ENSURE_SUCCESS(rv, rv);
    372 
    373  return NS_ERROR_NOT_IMPLEMENTED;
    374 }
    375 
    376 NS_IMETHODIMP
    377 NullHttpChannel::AsyncOpen(nsIStreamListener* aListener) {
    378  nsCOMPtr<nsIStreamListener> listener = aListener;
    379  nsresult rv =
    380      nsContentSecurityManager::doContentSecurityCheck(this, listener);
    381  NS_ENSURE_SUCCESS(rv, rv);
    382  return NS_ERROR_NOT_IMPLEMENTED;
    383 }
    384 
    385 NS_IMETHODIMP
    386 NullHttpChannel::GetContentDisposition(uint32_t* aContentDisposition) {
    387  return NS_ERROR_NOT_IMPLEMENTED;
    388 }
    389 
    390 NS_IMETHODIMP
    391 NullHttpChannel::SetContentDisposition(uint32_t aContentDisposition) {
    392  return NS_ERROR_NOT_IMPLEMENTED;
    393 }
    394 
    395 NS_IMETHODIMP
    396 NullHttpChannel::GetContentDispositionFilename(
    397    nsAString& aContentDispositionFilename) {
    398  return NS_ERROR_NOT_IMPLEMENTED;
    399 }
    400 
    401 NS_IMETHODIMP
    402 NullHttpChannel::SetContentDispositionFilename(
    403    const nsAString& aContentDispositionFilename) {
    404  return NS_ERROR_NOT_IMPLEMENTED;
    405 }
    406 
    407 NS_IMETHODIMP
    408 NullHttpChannel::GetContentDispositionHeader(
    409    nsACString& aContentDispositionHeader) {
    410  return NS_ERROR_NOT_IMPLEMENTED;
    411 }
    412 
    413 NS_IMETHODIMP
    414 NullHttpChannel::GetLoadInfo(nsILoadInfo** aLoadInfo) {
    415  return NS_ERROR_NOT_IMPLEMENTED;
    416 }
    417 
    418 NS_IMETHODIMP
    419 NullHttpChannel::SetLoadInfo(nsILoadInfo* aLoadInfo) {
    420  return NS_ERROR_NOT_IMPLEMENTED;
    421 }
    422 
    423 //-----------------------------------------------------------------------------
    424 // NullHttpChannel::nsIRequest
    425 //-----------------------------------------------------------------------------
    426 
    427 NS_IMETHODIMP
    428 NullHttpChannel::GetName(nsACString& aName) { return NS_ERROR_NOT_IMPLEMENTED; }
    429 
    430 NS_IMETHODIMP
    431 NullHttpChannel::IsPending(bool* _retval) { return NS_ERROR_NOT_IMPLEMENTED; }
    432 
    433 NS_IMETHODIMP
    434 NullHttpChannel::GetStatus(nsresult* aStatus) {
    435  return NS_ERROR_NOT_IMPLEMENTED;
    436 }
    437 
    438 NS_IMETHODIMP NullHttpChannel::SetCanceledReason(const nsACString& aReason) {
    439  return NS_ERROR_NOT_IMPLEMENTED;
    440 }
    441 
    442 NS_IMETHODIMP NullHttpChannel::GetCanceledReason(nsACString& aReason) {
    443  return NS_ERROR_NOT_IMPLEMENTED;
    444 }
    445 
    446 NS_IMETHODIMP NullHttpChannel::CancelWithReason(nsresult aStatus,
    447                                                const nsACString& aReason) {
    448  return NS_ERROR_NOT_IMPLEMENTED;
    449 }
    450 
    451 NS_IMETHODIMP
    452 NullHttpChannel::Cancel(nsresult aStatus) { return NS_ERROR_NOT_IMPLEMENTED; }
    453 
    454 NS_IMETHODIMP
    455 NullHttpChannel::GetCanceled(bool* aCanceled) {
    456  return NS_ERROR_NOT_IMPLEMENTED;
    457 }
    458 
    459 NS_IMETHODIMP
    460 NullHttpChannel::Suspend() { return NS_ERROR_NOT_IMPLEMENTED; }
    461 
    462 NS_IMETHODIMP
    463 NullHttpChannel::Resume() { return NS_ERROR_NOT_IMPLEMENTED; }
    464 
    465 NS_IMETHODIMP
    466 NullHttpChannel::GetLoadGroup(nsILoadGroup** aLoadGroup) {
    467  return NS_ERROR_NOT_IMPLEMENTED;
    468 }
    469 
    470 NS_IMETHODIMP
    471 NullHttpChannel::SetLoadGroup(nsILoadGroup* aLoadGroup) {
    472  return NS_ERROR_NOT_IMPLEMENTED;
    473 }
    474 
    475 NS_IMETHODIMP
    476 NullHttpChannel::GetLoadFlags(nsLoadFlags* aLoadFlags) {
    477  return NS_ERROR_NOT_IMPLEMENTED;
    478 }
    479 
    480 NS_IMETHODIMP
    481 NullHttpChannel::GetTRRMode(nsIRequest::TRRMode* aTRRMode) {
    482  return NS_ERROR_NOT_IMPLEMENTED;
    483 }
    484 
    485 NS_IMETHODIMP
    486 NullHttpChannel::SetTRRMode(nsIRequest::TRRMode aTRRMode) {
    487  return NS_ERROR_NOT_IMPLEMENTED;
    488 }
    489 
    490 NS_IMETHODIMP
    491 NullHttpChannel::SetLoadFlags(nsLoadFlags aLoadFlags) {
    492  return NS_ERROR_NOT_IMPLEMENTED;
    493 }
    494 
    495 NS_IMETHODIMP
    496 NullHttpChannel::GetIsDocument(bool* aIsDocument) {
    497  return NS_ERROR_NOT_IMPLEMENTED;
    498 }
    499 
    500 //-----------------------------------------------------------------------------
    501 // NullHttpChannel::nsITimedChannel
    502 //-----------------------------------------------------------------------------
    503 
    504 NS_IMETHODIMP
    505 NullHttpChannel::GetRedirectCount(uint8_t* aRedirectCount) {
    506  return NS_ERROR_NOT_IMPLEMENTED;
    507 }
    508 
    509 NS_IMETHODIMP
    510 NullHttpChannel::SetRedirectCount(uint8_t aRedirectCount) {
    511  return NS_ERROR_NOT_IMPLEMENTED;
    512 }
    513 
    514 NS_IMETHODIMP
    515 NullHttpChannel::GetInternalRedirectCount(uint8_t* aRedirectCount) {
    516  return NS_ERROR_NOT_IMPLEMENTED;
    517 }
    518 
    519 NS_IMETHODIMP
    520 NullHttpChannel::SetInternalRedirectCount(uint8_t aRedirectCount) {
    521  return NS_ERROR_NOT_IMPLEMENTED;
    522 }
    523 
    524 NS_IMETHODIMP
    525 NullHttpChannel::GetChannelCreation(mozilla::TimeStamp* aChannelCreation) {
    526  *aChannelCreation = mChannelCreationTimestamp;
    527  return NS_OK;
    528 }
    529 
    530 NS_IMETHODIMP
    531 NullHttpChannel::SetChannelCreation(TimeStamp aValue) {
    532  MOZ_DIAGNOSTIC_ASSERT(!aValue.IsNull());
    533  TimeDuration adjust = aValue - mChannelCreationTimestamp;
    534  mChannelCreationTimestamp = aValue;
    535  mChannelCreationTime += (PRTime)adjust.ToMicroseconds();
    536  return NS_OK;
    537 }
    538 
    539 NS_IMETHODIMP
    540 NullHttpChannel::GetAsyncOpen(mozilla::TimeStamp* aAsyncOpen) {
    541  *aAsyncOpen = mAsyncOpenTime;
    542  return NS_OK;
    543 }
    544 
    545 NS_IMETHODIMP
    546 NullHttpChannel::SetAsyncOpen(TimeStamp aValue) {
    547  MOZ_DIAGNOSTIC_ASSERT(!aValue.IsNull());
    548  mAsyncOpenTime = aValue;
    549  return NS_OK;
    550 }
    551 
    552 NS_IMETHODIMP
    553 NullHttpChannel::GetLaunchServiceWorkerStart(mozilla::TimeStamp* _retval) {
    554  MOZ_ASSERT(_retval);
    555  *_retval = mAsyncOpenTime;
    556  return NS_OK;
    557 }
    558 
    559 NS_IMETHODIMP
    560 NullHttpChannel::SetLaunchServiceWorkerStart(mozilla::TimeStamp aTimeStamp) {
    561  return NS_OK;
    562 }
    563 
    564 NS_IMETHODIMP
    565 NullHttpChannel::GetLaunchServiceWorkerEnd(mozilla::TimeStamp* _retval) {
    566  MOZ_ASSERT(_retval);
    567  *_retval = mAsyncOpenTime;
    568  return NS_OK;
    569 }
    570 
    571 NS_IMETHODIMP
    572 NullHttpChannel::SetLaunchServiceWorkerEnd(mozilla::TimeStamp aTimeStamp) {
    573  return NS_OK;
    574 }
    575 
    576 NS_IMETHODIMP
    577 NullHttpChannel::GetDispatchFetchEventStart(mozilla::TimeStamp* _retval) {
    578  MOZ_ASSERT(_retval);
    579  *_retval = mAsyncOpenTime;
    580  return NS_OK;
    581 }
    582 
    583 NS_IMETHODIMP
    584 NullHttpChannel::SetDispatchFetchEventStart(mozilla::TimeStamp aTimeStamp) {
    585  return NS_OK;
    586 }
    587 
    588 NS_IMETHODIMP
    589 NullHttpChannel::GetDispatchFetchEventEnd(mozilla::TimeStamp* _retval) {
    590  MOZ_ASSERT(_retval);
    591  *_retval = mAsyncOpenTime;
    592  return NS_OK;
    593 }
    594 
    595 NS_IMETHODIMP
    596 NullHttpChannel::SetDispatchFetchEventEnd(mozilla::TimeStamp aTimeStamp) {
    597  return NS_OK;
    598 }
    599 
    600 NS_IMETHODIMP
    601 NullHttpChannel::GetHandleFetchEventStart(mozilla::TimeStamp* _retval) {
    602  MOZ_ASSERT(_retval);
    603  *_retval = mAsyncOpenTime;
    604  return NS_OK;
    605 }
    606 
    607 NS_IMETHODIMP
    608 NullHttpChannel::SetHandleFetchEventStart(mozilla::TimeStamp aTimeStamp) {
    609  return NS_OK;
    610 }
    611 
    612 NS_IMETHODIMP
    613 NullHttpChannel::GetHandleFetchEventEnd(mozilla::TimeStamp* _retval) {
    614  MOZ_ASSERT(_retval);
    615  *_retval = mAsyncOpenTime;
    616  return NS_OK;
    617 }
    618 
    619 NS_IMETHODIMP
    620 NullHttpChannel::SetHandleFetchEventEnd(mozilla::TimeStamp aTimeStamp) {
    621  return NS_OK;
    622 }
    623 
    624 NS_IMETHODIMP
    625 NullHttpChannel::GetDomainLookupStart(mozilla::TimeStamp* aDomainLookupStart) {
    626  *aDomainLookupStart = mAsyncOpenTime;
    627  return NS_OK;
    628 }
    629 
    630 NS_IMETHODIMP
    631 NullHttpChannel::GetDomainLookupEnd(mozilla::TimeStamp* aDomainLookupEnd) {
    632  *aDomainLookupEnd = mAsyncOpenTime;
    633  return NS_OK;
    634 }
    635 
    636 NS_IMETHODIMP
    637 NullHttpChannel::GetConnectStart(mozilla::TimeStamp* aConnectStart) {
    638  *aConnectStart = mAsyncOpenTime;
    639  return NS_OK;
    640 }
    641 
    642 NS_IMETHODIMP
    643 NullHttpChannel::GetTcpConnectEnd(mozilla::TimeStamp* aTcpConnectEnd) {
    644  *aTcpConnectEnd = mAsyncOpenTime;
    645  return NS_OK;
    646 }
    647 
    648 NS_IMETHODIMP
    649 NullHttpChannel::GetSecureConnectionStart(
    650    mozilla::TimeStamp* aSecureConnectionStart) {
    651  *aSecureConnectionStart = mAsyncOpenTime;
    652  return NS_OK;
    653 }
    654 
    655 NS_IMETHODIMP
    656 NullHttpChannel::GetConnectEnd(mozilla::TimeStamp* aConnectEnd) {
    657  *aConnectEnd = mAsyncOpenTime;
    658  return NS_OK;
    659 }
    660 
    661 NS_IMETHODIMP
    662 NullHttpChannel::GetRequestStart(mozilla::TimeStamp* aRequestStart) {
    663  *aRequestStart = mAsyncOpenTime;
    664  return NS_OK;
    665 }
    666 
    667 NS_IMETHODIMP
    668 NullHttpChannel::GetResponseStart(mozilla::TimeStamp* aResponseStart) {
    669  *aResponseStart = mAsyncOpenTime;
    670  return NS_OK;
    671 }
    672 
    673 NS_IMETHODIMP
    674 NullHttpChannel::GetResponseEnd(mozilla::TimeStamp* aResponseEnd) {
    675  *aResponseEnd = mAsyncOpenTime;
    676  return NS_OK;
    677 }
    678 
    679 NS_IMETHODIMP
    680 NullHttpChannel::GetRedirectStart(mozilla::TimeStamp* aRedirectStart) {
    681  *aRedirectStart = mAsyncOpenTime;
    682  return NS_OK;
    683 }
    684 
    685 NS_IMETHODIMP
    686 NullHttpChannel::SetRedirectStart(mozilla::TimeStamp aRedirectStart) {
    687  return NS_ERROR_NOT_IMPLEMENTED;
    688 }
    689 
    690 NS_IMETHODIMP
    691 NullHttpChannel::GetRedirectEnd(mozilla::TimeStamp* aRedirectEnd) {
    692  *aRedirectEnd = mAsyncOpenTime;
    693  return NS_OK;
    694 }
    695 
    696 NS_IMETHODIMP
    697 NullHttpChannel::SetRedirectEnd(mozilla::TimeStamp aRedirectEnd) {
    698  return NS_ERROR_NOT_IMPLEMENTED;
    699 }
    700 
    701 NS_IMETHODIMP
    702 NullHttpChannel::GetInitiatorType(nsAString& aInitiatorType) {
    703  aInitiatorType = mInitiatorType;
    704  return NS_OK;
    705 }
    706 
    707 NS_IMETHODIMP
    708 NullHttpChannel::SetInitiatorType(const nsAString& aInitiatorType) {
    709  mInitiatorType = aInitiatorType;
    710  return NS_OK;
    711 }
    712 
    713 NS_IMETHODIMP
    714 NullHttpChannel::GetAllRedirectsSameOrigin(bool* aAllRedirectsSameOrigin) {
    715  *aAllRedirectsSameOrigin = mAllRedirectsSameOrigin;
    716  return NS_OK;
    717 }
    718 
    719 NS_IMETHODIMP
    720 NullHttpChannel::SetAllRedirectsSameOrigin(bool aAllRedirectsSameOrigin) {
    721  return NS_ERROR_NOT_IMPLEMENTED;
    722 }
    723 
    724 NS_IMETHODIMP
    725 NullHttpChannel::GetAllRedirectsPassTimingAllowCheck(
    726    bool* aAllRedirectsPassTimingAllowCheck) {
    727  *aAllRedirectsPassTimingAllowCheck = mAllRedirectsPassTimingAllowCheck;
    728  return NS_OK;
    729 }
    730 
    731 NS_IMETHODIMP
    732 NullHttpChannel::SetAllRedirectsPassTimingAllowCheck(
    733    bool aAllRedirectsPassTimingAllowCheck) {
    734  return NS_ERROR_NOT_IMPLEMENTED;
    735 }
    736 
    737 NS_IMETHODIMP
    738 NullHttpChannel::BodyInfoAccessAllowedCheck(nsIPrincipal* aOrigin,
    739                                            BodyInfoAccess* _retval) {
    740  *_retval = BodyInfoAccess::DISALLOWED;
    741  return NS_OK;
    742 }
    743 
    744 NS_IMETHODIMP
    745 NullHttpChannel::TimingAllowCheck(nsIPrincipal* aOrigin, bool* _retval) {
    746  *_retval = false;
    747  return NS_OK;
    748 }
    749 
    750 NS_IMETHODIMP
    751 NullHttpChannel::GetCacheReadStart(mozilla::TimeStamp* aCacheReadStart) {
    752  *aCacheReadStart = mAsyncOpenTime;
    753  return NS_OK;
    754 }
    755 
    756 NS_IMETHODIMP
    757 NullHttpChannel::GetCacheReadEnd(mozilla::TimeStamp* aCacheReadEnd) {
    758  *aCacheReadEnd = mAsyncOpenTime;
    759  return NS_OK;
    760 }
    761 
    762 NS_IMETHODIMP
    763 NullHttpChannel::GetTransactionPending(mozilla::TimeStamp* aRetVal) {
    764  *aRetVal = mAsyncOpenTime;
    765  return NS_OK;
    766 }
    767 
    768 NS_IMETHODIMP
    769 NullHttpChannel::GetIsMainDocumentChannel(bool* aValue) {
    770  *aValue = false;
    771  return NS_OK;
    772 }
    773 
    774 NS_IMETHODIMP
    775 NullHttpChannel::SetIsMainDocumentChannel(bool aValue) {
    776  return NS_ERROR_NOT_IMPLEMENTED;
    777 }
    778 
    779 NS_IMETHODIMP
    780 NullHttpChannel::LogBlockedCORSRequest(const nsAString& aMessage,
    781                                       const nsACString& aCategor,
    782                                       bool aIsWarning) {
    783  return NS_ERROR_NOT_IMPLEMENTED;
    784 }
    785 
    786 NS_IMETHODIMP
    787 NullHttpChannel::LogMimeTypeMismatch(const nsACString& aMessageName,
    788                                     bool aWarning, const nsAString& aURL,
    789                                     const nsAString& aContentType) {
    790  return NS_ERROR_NOT_IMPLEMENTED;
    791 }
    792 
    793 NS_IMETHODIMP
    794 NullHttpChannel::SetReportResourceTiming(bool enabled) {
    795  return NS_ERROR_NOT_IMPLEMENTED;
    796 }
    797 
    798 NS_IMETHODIMP
    799 NullHttpChannel::GetReportResourceTiming(bool* _retval) {
    800  return NS_ERROR_NOT_IMPLEMENTED;
    801 }
    802 
    803 NS_IMETHODIMP
    804 NullHttpChannel::GetServerTiming(nsIArray** aServerTiming) {
    805  return NS_ERROR_NOT_IMPLEMENTED;
    806 }
    807 
    808 NS_IMETHODIMP
    809 NullHttpChannel::GetNativeServerTiming(
    810    nsTArray<nsCOMPtr<nsIServerTiming>>& aServerTiming) {
    811  return NS_ERROR_NOT_IMPLEMENTED;
    812 }
    813 
    814 NS_IMETHODIMP NullHttpChannel::SetClassicScriptHintCharset(
    815    const nsAString& aClassicScriptHintCharset) {
    816  return NS_ERROR_NOT_IMPLEMENTED;
    817 }
    818 
    819 NS_IMETHODIMP NullHttpChannel::GetClassicScriptHintCharset(
    820    nsAString& aClassicScriptHintCharset) {
    821  return NS_ERROR_NOT_IMPLEMENTED;
    822 }
    823 
    824 NS_IMETHODIMP NullHttpChannel::SetDocumentCharacterSet(
    825    const nsAString& aDocumentCharacterSet) {
    826  return NS_ERROR_NOT_IMPLEMENTED;
    827 }
    828 
    829 NS_IMETHODIMP NullHttpChannel::GetDocumentCharacterSet(
    830    nsAString& aDocumentCharacterSet) {
    831  return NS_ERROR_NOT_IMPLEMENTED;
    832 }
    833 
    834 NS_IMETHODIMP
    835 NullHttpChannel::SetRenderBlocking(bool aRenderBlocking) {
    836  return NS_ERROR_NOT_IMPLEMENTED;
    837 }
    838 
    839 NS_IMETHODIMP
    840 NullHttpChannel::GetRenderBlocking(bool* aRenderBlocking) {
    841  return NS_ERROR_NOT_IMPLEMENTED;
    842 }
    843 
    844 NS_IMETHODIMP
    845 NullHttpChannel::GetDecompressDictionary(
    846    mozilla::net::DictionaryCacheEntry** aDictionary) {
    847  *aDictionary = nullptr;
    848  return NS_OK;
    849 }
    850 
    851 NS_IMETHODIMP
    852 NullHttpChannel::SetDecompressDictionary(
    853    mozilla::net::DictionaryCacheEntry* aDictionary) {
    854  return NS_OK;
    855 }
    856 
    857 #define IMPL_TIMING_ATTR(name)                                           \
    858  NS_IMETHODIMP                                                          \
    859  NullHttpChannel::Get##name##Time(PRTime* _retval) {                    \
    860    TimeStamp stamp;                                                     \
    861    Get##name(&stamp);                                                   \
    862    if (stamp.IsNull()) {                                                \
    863      *_retval = 0;                                                      \
    864      return NS_OK;                                                      \
    865    }                                                                    \
    866    *_retval =                                                           \
    867        mChannelCreationTime +                                           \
    868        (PRTime)((stamp - mChannelCreationTimestamp).ToSeconds() * 1e6); \
    869    return NS_OK;                                                        \
    870  }
    871 
    872 IMPL_TIMING_ATTR(ChannelCreation)
    873 IMPL_TIMING_ATTR(AsyncOpen)
    874 IMPL_TIMING_ATTR(LaunchServiceWorkerStart)
    875 IMPL_TIMING_ATTR(LaunchServiceWorkerEnd)
    876 IMPL_TIMING_ATTR(DispatchFetchEventStart)
    877 IMPL_TIMING_ATTR(DispatchFetchEventEnd)
    878 IMPL_TIMING_ATTR(HandleFetchEventStart)
    879 IMPL_TIMING_ATTR(HandleFetchEventEnd)
    880 IMPL_TIMING_ATTR(DomainLookupStart)
    881 IMPL_TIMING_ATTR(DomainLookupEnd)
    882 IMPL_TIMING_ATTR(ConnectStart)
    883 IMPL_TIMING_ATTR(TcpConnectEnd)
    884 IMPL_TIMING_ATTR(SecureConnectionStart)
    885 IMPL_TIMING_ATTR(ConnectEnd)
    886 IMPL_TIMING_ATTR(RequestStart)
    887 IMPL_TIMING_ATTR(ResponseStart)
    888 IMPL_TIMING_ATTR(ResponseEnd)
    889 IMPL_TIMING_ATTR(CacheReadStart)
    890 IMPL_TIMING_ATTR(CacheReadEnd)
    891 IMPL_TIMING_ATTR(RedirectStart)
    892 IMPL_TIMING_ATTR(RedirectEnd)
    893 IMPL_TIMING_ATTR(TransactionPending)
    894 
    895 #undef IMPL_TIMING_ATTR
    896 
    897 }  // namespace net
    898 }  // namespace mozilla