// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "chrome/common/webui_util.h"

#include "base/containers/flat_set.h"
#include "base/feature_list.h"
#include "base/functional/callback.h"
#include "base/no_destructor.h"
#include "base/strings/string_split.h"
#include "chrome/common/chrome_features.h"
#include "content/public/common/url_utils.h"
#include "url/gurl.h"

bool ShouldUseCodeCacheForWebUIUrl(const GURL& request_url) {
  DCHECK(content::HasWebUIScheme(request_url));
  if (base::FeatureList::IsEnabled(features::kRestrictedWebUICodeCache)) {
    static const base::NoDestructor<base::flat_set<std::string>>
        unrestricted_resources(base::SplitString(
            features::kRestrictedWebUICodeCacheResources.Get(), ",",
            base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY));
    return unrestricted_resources->contains(request_url.GetPath());
  }
  return true;
}
