blob: a506d740eb4403ca81966cef7dde08c3c3ea21a9 [file] [log] [blame]
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "third_party/blink/renderer/core/loader/frame_resource_fetcher_properties.h"
#include "third_party/blink/public/platform/modules/service_worker/web_service_worker_network_provider.h"
#include "third_party/blink/renderer/core/dom/document.h"
#include "third_party/blink/renderer/core/frame/local_frame.h"
#include "third_party/blink/renderer/core/loader/document_loader.h"
#include "third_party/blink/renderer/core/loader/frame_or_imported_document.h"
#include "third_party/blink/renderer/core/page/page.h"
namespace blink {
FrameResourceFetcherProperties::FrameResourceFetcherProperties(
FrameOrImportedDocument& frame_or_imported_document)
: frame_or_imported_document_(frame_or_imported_document) {}
void FrameResourceFetcherProperties::Trace(Visitor* visitor) {
visitor->Trace(frame_or_imported_document_);
ResourceFetcherProperties::Trace(visitor);
}
bool FrameResourceFetcherProperties::IsMainFrame() const {
return frame_or_imported_document_->GetFrame().IsMainFrame();
}
mojom::ControllerServiceWorkerMode
FrameResourceFetcherProperties::GetControllerServiceWorkerMode() const {
auto* service_worker_network_provider =
frame_or_imported_document_->GetMasterDocumentLoader()
.GetServiceWorkerNetworkProvider();
if (!service_worker_network_provider)
return blink::mojom::ControllerServiceWorkerMode::kNoController;
return service_worker_network_provider->IsControlledByServiceWorker();
}
int64_t FrameResourceFetcherProperties::ServiceWorkerId() const {
DCHECK_NE(GetControllerServiceWorkerMode(),
blink::mojom::ControllerServiceWorkerMode::kNoController);
auto* service_worker_network_provider =
frame_or_imported_document_->GetMasterDocumentLoader()
.GetServiceWorkerNetworkProvider();
DCHECK(service_worker_network_provider);
return service_worker_network_provider->ControllerServiceWorkerID();
}
bool FrameResourceFetcherProperties::IsPaused() const {
return frame_or_imported_document_->GetFrame().GetPage()->Paused();
}
bool FrameResourceFetcherProperties::IsLoadComplete() const {
Document* document = frame_or_imported_document_->GetDocument();
return document && document->LoadEventFinished();
}
bool FrameResourceFetcherProperties::ShouldBlockLoadingMainResource() const {
DocumentLoader* document_loader =
frame_or_imported_document_->GetDocumentLoader();
if (!document_loader)
return false;
FrameLoader& loader = frame_or_imported_document_->GetFrame().Loader();
return document_loader != loader.GetProvisionalDocumentLoader();
}
bool FrameResourceFetcherProperties::ShouldBlockLoadingSubResource() const {
DocumentLoader* document_loader =
frame_or_imported_document_->GetDocumentLoader();
if (!document_loader)
return false;
FrameLoader& loader = frame_or_imported_document_->GetFrame().Loader();
return document_loader != loader.GetDocumentLoader();
}
} // namespace blink