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