blob: 4158eb98cd2b73682f8cbb26d4db31ca3f23591f [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 "components/services/quarantine/common.h"
#include "url/origin.h"
#include "url/url_canon.h"
namespace quarantine {
GURL SanitizeUrlForQuarantine(const GURL& source_url) {
// Invalid URLs and 'data' URLs don't confer an authority.
if (!source_url.is_valid() || source_url.SchemeIs("data")) {
return GURL();
}
// The full content of these URLs are only meaningful within the confines of
// the browser. Origin extracts the inner URL for both of these schemes.
if (source_url.SchemeIsBlob() || source_url.SchemeIsFileSystem()) {
return url::Origin::Create(source_url).GetURL();
}
if (!source_url.SchemeIsHTTPOrHTTPS() && !source_url.SchemeIsWSOrWSS()) {
return source_url;
}
url::Replacements<char> replacements;
replacements.ClearUsername();
replacements.ClearPassword();
return source_url.ReplaceComponents(replacements);
}
} // namespace quarantine