autocomplete_scheme_classifier_impl.cc 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. // Copyright 2020 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "weblayer/browser/url_bar/autocomplete_scheme_classifier_impl.h"
  5. #include "base/strings/string_util.h"
  6. #include "build/build_config.h"
  7. #include "content/public/common/url_constants.h"
  8. #include "third_party/metrics_proto/omnibox_input_type.pb.h"
  9. #include "url/url_constants.h"
  10. #if BUILDFLAG(IS_ANDROID)
  11. #include "weblayer/browser/java/jni/AutocompleteSchemeClassifierImpl_jni.h"
  12. #endif
  13. namespace weblayer {
  14. #if BUILDFLAG(IS_ANDROID)
  15. static jlong JNI_AutocompleteSchemeClassifierImpl_CreateAutocompleteClassifier(
  16. JNIEnv* env) {
  17. return reinterpret_cast<intptr_t>(new AutocompleteSchemeClassifierImpl());
  18. }
  19. static void JNI_AutocompleteSchemeClassifierImpl_DeleteAutocompleteClassifier(
  20. JNIEnv* env,
  21. jlong autocomplete_scheme_classifier_impl) {
  22. delete reinterpret_cast<AutocompleteSchemeClassifierImpl*>(
  23. autocomplete_scheme_classifier_impl);
  24. }
  25. #endif
  26. metrics::OmniboxInputType
  27. AutocompleteSchemeClassifierImpl::GetInputTypeForScheme(
  28. const std::string& scheme) const {
  29. DCHECK_EQ(scheme, base::ToLowerASCII(scheme));
  30. // Check against an allowlist of schemes.
  31. const char* kKnownURLSchemes[] = {
  32. url::kHttpScheme, url::kHttpsScheme,
  33. url::kWsScheme, url::kWssScheme,
  34. url::kFileScheme, url::kAboutScheme,
  35. url::kFtpScheme, url::kBlobScheme,
  36. url::kFileSystemScheme, content::kViewSourceScheme,
  37. url::kJavaScriptScheme};
  38. for (const char* known_scheme : kKnownURLSchemes) {
  39. if (scheme == known_scheme)
  40. return metrics::OmniboxInputType::URL;
  41. }
  42. return metrics::OmniboxInputType::EMPTY;
  43. }
  44. } // namespace weblayer