File: scheme_logger_unittest.cc

package info (click to toggle)
chromium 138.0.7204.183-1~deb12u1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm-proposed-updates
  • size: 6,080,960 kB
  • sloc: cpp: 34,937,079; ansic: 7,176,967; javascript: 4,110,704; python: 1,419,954; asm: 946,768; xml: 739,971; pascal: 187,324; sh: 89,623; perl: 88,663; objc: 79,944; sql: 50,304; cs: 41,786; fortran: 24,137; makefile: 21,811; php: 13,980; tcl: 13,166; yacc: 8,925; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (64 lines) | stat: -rw-r--r-- 2,719 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "components/safe_browsing/core/common/scheme_logger.h"

#include "base/test/metrics/histogram_tester.h"
#include "testing/gtest/include/gtest/gtest.h"

namespace safe_browsing {

TEST(SchemeLoggerTest, TestLogScheme) {
  using scheme_logger::UrlScheme;
  struct TestCase {
    std::string url;
    UrlScheme expected_scheme;
  } test_cases[] = {
      {"about:blank", UrlScheme::kAbout},
      {"BLOB://foo/", UrlScheme::kBlob},
      {"content://test/content/", UrlScheme::kContent},
      {"cid://test/cid/", UrlScheme::kCid},
      {"data://test/data/", UrlScheme::kData},
      {"file://test/file/", UrlScheme::kFile},
      {"filesystem://test/filesystem/", UrlScheme::kFileSystem},
      {"ftp://test/ftp/", UrlScheme::kFtp},
      {"http://www.google.com/", UrlScheme::kHttp},
      {"https://www.google.com/", UrlScheme::kHttps},
      {"javascript:undefined", UrlScheme::kJavascript},
      {"mailto:nobody", UrlScheme::kMailTo},
      {"tel:123456789", UrlScheme::kTel},
      {"urn:foo", UrlScheme::kUrn},
      {"uuid-in-package:foo", UrlScheme::kUuidInPackage},
      {"webcal:foo", UrlScheme::kWebcal},
      {"ws://foo/", UrlScheme::kWs},
      {"wss://foo/", UrlScheme::kWss},
      {"isolated-app:foo", UrlScheme::kIsolatedApp},
      {"chrome-native:foo", UrlScheme::kChromeNative},
      {"chrome-search:foo", UrlScheme::kChromeSearch},
      {"devtools://devtools", UrlScheme::kDevTools},
      {"chrome-error://", UrlScheme::kChromeError},
      {"chrome://settings", UrlScheme::kChrome},
      {"chrome-untrusted://", UrlScheme::kChromeUntrusted},
      {"view-source:foo/", UrlScheme::kViewSource},
      {"externalfile:foo/", UrlScheme::kExternalFile},
      {"android-app:foo/", UrlScheme::kAndroidApp},
      {"googlechrome:foo/", UrlScheme::kGoogleChrome},
      {"android-webview-video-poster:foo/",
       UrlScheme::kAndroidWebviewVideoPoster},
      {"chrome-distiller:foo/", UrlScheme::kChromeDistiller},
      {"chrome-extension://foo", UrlScheme::kChromeExtension},
      {"something-else:foo", UrlScheme::kUnknown},
      {"something-else://foo", UrlScheme::kUnknown},
  };
  for (const auto& test_case : test_cases) {
    base::HistogramTester histogram_tester;
    std::string histogram_name = "DummyHistogram";
    scheme_logger::LogScheme(GURL(test_case.url), histogram_name);
    histogram_tester.ExpectUniqueSample(/*name=*/histogram_name,
                                        /*sample=*/test_case.expected_scheme,
                                        /*expected_bucket_count=*/1);
  }
}

}  // namespace safe_browsing