#include "content/browser/service_worker/service_worker_loader_helpers.h"
#include "base/command_line.h"
#include "base/no_destructor.h"
#include "base/strings/string_split.h"
#include "base/strings/stringprintf.h"
#include "base/time/time.h"
#include "components/network_session_configurator/common/network_switches.h"
#include "content/browser/devtools/devtools_instrumentation.h"
#include "content/browser/loader/browser_initiated_resource_request.h"
#include "content/browser/service_worker/service_worker_consts.h"
#include "content/common/features.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/content_browser_client.h"
#include "content/public/common/content_client.h"
#include "content/public/common/content_features.h"
#include "content/public/common/referrer.h"
#include "services/network/public/cpp/constants.h"
#include "third_party/blink/public/common/features.h"
#include "third_party/blink/public/common/mime_util/mime_util.h"
#include "third_party/blink/public/common/renderer_preferences/renderer_preferences.h"
#include "third_party/blink/public/common/service_worker/service_worker_scope_match.h"
#include "third_party/blink/public/mojom/loader/fetch_client_settings_object.mojom.h"
#include "third_party/blink/public/mojom/loader/resource_load_info.mojom.h"
#include "third_party/blink/public/mojom/service_worker/service_worker_registration.mojom.h"
namespace content {
namespace service_worker_loader_helpers {
namespace {
bool IsPathRestrictionSatisfiedInternal(
const GURL& scope,
const GURL& script_url,
bool service_worker_allowed_header_supported,
const std::string* service_worker_allowed_header_value,
std::string* error_message) { … }
}
bool CheckResponseHead(
const network::mojom::URLResponseHead& response_head,
blink::ServiceWorkerStatusCode* out_service_worker_status,
network::URLLoaderCompletionStatus* out_completion_status,
std::string* out_error_message) { … }
bool ShouldBypassCacheDueToUpdateViaCache(
bool is_main_script,
blink::mojom::ServiceWorkerUpdateViaCache cache_mode) { … }
bool ShouldValidateBrowserCacheForScript(
bool is_main_script,
bool force_bypass_cache,
blink::mojom::ServiceWorkerUpdateViaCache cache_mode,
base::TimeDelta time_since_last_check) { … }
#if DCHECK_IS_ON()
void CheckVersionStatusBeforeWorkerScriptLoad(
ServiceWorkerVersion::Status status,
bool is_main_script,
blink::mojom::ScriptType script_type) { … }
#endif
network::ResourceRequest CreateRequestForServiceWorkerScript(
const GURL& script_url,
const blink::StorageKey& storage_key,
bool is_main_script,
blink::mojom::ScriptType worker_script_type,
const blink::mojom::FetchClientSettingsObject& fetch_client_settings_object,
BrowserContext& browser_context) { … }
bool IsPathRestrictionSatisfied(
const GURL& scope,
const GURL& script_url,
const std::string* service_worker_allowed_header_value,
std::string* error_message) { … }
bool IsPathRestrictionSatisfiedWithoutHeader(const GURL& scope,
const GURL& script_url,
std::string* error_message) { … }
const base::flat_set<std::string> FetchHandlerBypassedHashStrings() { … }
}
}