blob: d308ab088b79c3b02e1a01487bda5225d3b6b2c9 [file] [log] [blame]
// Copyright 2017 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 "chrome/browser/ui/tabs/tab_metrics_logger_impl.h"
#include "chrome/browser/ui/tabs/tab_metrics_event.pb.h"
#include "testing/gtest/include/gtest/gtest.h"
using metrics::TabMetricsEvent;
// Sanity checks for TabMetricsLoggerImpl.
// See TabActivityWatcherTest for more thorough tab usage UKM tests.
// Tests that protocol schemes are mapped to the correct enumerators.
TEST(TabMetricsLoggerImplTest, Schemes) {
EXPECT_EQ(TabMetricsEvent::PROTOCOL_HANDLER_SCHEME_BITCOIN,
TabMetricsLoggerImpl::GetSchemeValueFromString("bitcoin"));
EXPECT_EQ(TabMetricsEvent::PROTOCOL_HANDLER_SCHEME_GEO,
TabMetricsLoggerImpl::GetSchemeValueFromString("geo"));
EXPECT_EQ(TabMetricsEvent::PROTOCOL_HANDLER_SCHEME_IM,
TabMetricsLoggerImpl::GetSchemeValueFromString("im"));
EXPECT_EQ(TabMetricsEvent::PROTOCOL_HANDLER_SCHEME_IRC,
TabMetricsLoggerImpl::GetSchemeValueFromString("irc"));
EXPECT_EQ(TabMetricsEvent::PROTOCOL_HANDLER_SCHEME_IRCS,
TabMetricsLoggerImpl::GetSchemeValueFromString("ircs"));
EXPECT_EQ(TabMetricsEvent::PROTOCOL_HANDLER_SCHEME_MAGNET,
TabMetricsLoggerImpl::GetSchemeValueFromString("magnet"));
EXPECT_EQ(TabMetricsEvent::PROTOCOL_HANDLER_SCHEME_MAILTO,
TabMetricsLoggerImpl::GetSchemeValueFromString("mailto"));
EXPECT_EQ(TabMetricsEvent::PROTOCOL_HANDLER_SCHEME_MMS,
TabMetricsLoggerImpl::GetSchemeValueFromString("mms"));
EXPECT_EQ(TabMetricsEvent::PROTOCOL_HANDLER_SCHEME_NEWS,
TabMetricsLoggerImpl::GetSchemeValueFromString("news"));
EXPECT_EQ(TabMetricsEvent::PROTOCOL_HANDLER_SCHEME_NNTP,
TabMetricsLoggerImpl::GetSchemeValueFromString("nntp"));
EXPECT_EQ(TabMetricsEvent::PROTOCOL_HANDLER_SCHEME_OPENPGP4FPR,
TabMetricsLoggerImpl::GetSchemeValueFromString("openpgp4fpr"));
EXPECT_EQ(TabMetricsEvent::PROTOCOL_HANDLER_SCHEME_SIP,
TabMetricsLoggerImpl::GetSchemeValueFromString("sip"));
EXPECT_EQ(TabMetricsEvent::PROTOCOL_HANDLER_SCHEME_SMS,
TabMetricsLoggerImpl::GetSchemeValueFromString("sms"));
EXPECT_EQ(TabMetricsEvent::PROTOCOL_HANDLER_SCHEME_SMSTO,
TabMetricsLoggerImpl::GetSchemeValueFromString("smsto"));
EXPECT_EQ(TabMetricsEvent::PROTOCOL_HANDLER_SCHEME_SSH,
TabMetricsLoggerImpl::GetSchemeValueFromString("ssh"));
EXPECT_EQ(TabMetricsEvent::PROTOCOL_HANDLER_SCHEME_TEL,
TabMetricsLoggerImpl::GetSchemeValueFromString("tel"));
EXPECT_EQ(TabMetricsEvent::PROTOCOL_HANDLER_SCHEME_URN,
TabMetricsLoggerImpl::GetSchemeValueFromString("urn"));
EXPECT_EQ(TabMetricsEvent::PROTOCOL_HANDLER_SCHEME_WEBCAL,
TabMetricsLoggerImpl::GetSchemeValueFromString("webcal"));
EXPECT_EQ(TabMetricsEvent::PROTOCOL_HANDLER_SCHEME_WTAI,
TabMetricsLoggerImpl::GetSchemeValueFromString("wtai"));
EXPECT_EQ(TabMetricsEvent::PROTOCOL_HANDLER_SCHEME_XMPP,
TabMetricsLoggerImpl::GetSchemeValueFromString("xmpp"));
static_assert(
TabMetricsEvent::PROTOCOL_HANDLER_SCHEME_LAST ==
TabMetricsEvent::PROTOCOL_HANDLER_SCHEME_XMPP &&
TabMetricsEvent::PROTOCOL_HANDLER_SCHEME_LAST == 20,
"This test and the scheme list in TabMetricsLoggerImpl must be updated "
"when new protocol handlers are added.");
}
// Tests non-whitelisted protocol schemes.
TEST(TabMetricsLoggerImplTest, NonWhitelistedSchemes) {
// Native (non-web-based) handler.
EXPECT_EQ(TabMetricsEvent::PROTOCOL_HANDLER_SCHEME_OTHER,
TabMetricsLoggerImpl::GetSchemeValueFromString("foo"));
// Custom ("web+") protocol handlers.
EXPECT_EQ(TabMetricsEvent::PROTOCOL_HANDLER_SCHEME_OTHER,
TabMetricsLoggerImpl::GetSchemeValueFromString("web+foo"));
// "mailto" after the web+ prefix doesn't trigger any special handling.
EXPECT_EQ(TabMetricsEvent::PROTOCOL_HANDLER_SCHEME_OTHER,
TabMetricsLoggerImpl::GetSchemeValueFromString("web+mailto"));
// Nonsense protocol handlers.
EXPECT_EQ(TabMetricsEvent::PROTOCOL_HANDLER_SCHEME_OTHER,
TabMetricsLoggerImpl::GetSchemeValueFromString(""));
EXPECT_EQ(TabMetricsEvent::PROTOCOL_HANDLER_SCHEME_OTHER,
TabMetricsLoggerImpl::GetSchemeValueFromString("mailto-xyz"));
}