File: scheme_logger_unittest.cc

package info (click to toggle)
chromium 139.0.7258.127-2
  • links: PTS, VCS
  • area: main
  • in suites: forky
  • size: 6,122,156 kB
  • sloc: cpp: 35,100,771; ansic: 7,163,530; javascript: 4,103,002; python: 1,436,920; asm: 946,517; xml: 746,709; pascal: 187,653; perl: 88,691; sh: 88,436; objc: 79,953; sql: 51,488; cs: 44,583; fortran: 24,137; makefile: 22,147; tcl: 15,277; php: 13,980; yacc: 8,984; 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 (7)
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