diff options
Diffstat (limited to 'chromium/third_party/blink/common/scheme_registry.cc')
-rw-r--r-- | chromium/third_party/blink/common/scheme_registry.cc | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/chromium/third_party/blink/common/scheme_registry.cc b/chromium/third_party/blink/common/scheme_registry.cc new file mode 100644 index 00000000000..21d529ee77f --- /dev/null +++ b/chromium/third_party/blink/common/scheme_registry.cc @@ -0,0 +1,43 @@ +// Copyright 2020 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/public/common/scheme_registry.h" + +#include <unordered_set> + +#include "base/no_destructor.h" +#include "base/strings/string_util.h" + +namespace blink { + +using URLSchemesSet = std::unordered_set<std::string>; + +URLSchemesSet& GetMutableExtensionSchemes() { + static base::NoDestructor<URLSchemesSet> extension_schemes; + return *extension_schemes; +} + +const URLSchemesSet& GetExtensionSchemes() { + return GetMutableExtensionSchemes(); +} + +void CommonSchemeRegistry::RegisterURLSchemeAsExtension( + const std::string& scheme) { + DCHECK_EQ(scheme, base::ToLowerASCII(scheme)); + GetMutableExtensionSchemes().insert(scheme); +} + +void CommonSchemeRegistry::RemoveURLSchemeAsExtensionForTest( + const std::string& scheme) { + GetMutableExtensionSchemes().erase(scheme); +} + +bool CommonSchemeRegistry::IsExtensionScheme(const std::string& scheme) { + if (scheme.empty()) + return false; + DCHECK_EQ(scheme, base::ToLowerASCII(scheme)); + return GetExtensionSchemes().find(scheme) != GetExtensionSchemes().end(); +} + +} // namespace blink |