chromium/components/lookalikes/core/safety_tip_test_utils.h

// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef COMPONENTS_LOOKALIKES_CORE_SAFETY_TIP_TEST_UTILS_H_
#define COMPONENTS_LOOKALIKES_CORE_SAFETY_TIP_TEST_UTILS_H_

#include <memory>
#include <string>
#include <vector>

#include "components/lookalikes/core/safety_tips.pb.h"

namespace lookalikes {

// Retrieve any existing Safety Tips config proto if set, or create a new one
// otherwise.
std::unique_ptr<reputation::SafetyTipsConfig> GetOrCreateSafetyTipsConfig();

// Initialize component configuration. Necessary to enable Safety Tips for
// testing, as no heuristics trigger if the allowlist is inaccessible.
void InitializeSafetyTipConfig();

// Sets allowlist patterns in the given proto for testing. This will replace any
// allowlist patterns currently in the proto.
// |patterns| is the list of hostnames allowed to be lookalikes.
// |target_patterns| is the list of hostname regexes allowed to be targets of
// lookalikes.
void SetSafetyTipAllowlistPatterns(std::vector<std::string> patterns,
                                   std::vector<std::string> target_patterns,
                                   std::vector<std::string> common_words);

// Ensure that the allowlist has been initialized. This is important as some
// code (e.g. the elision policy) is fail-open (i.e. it won't elide without an
// initialized allowlist). This is convenience wrapper around
// SetSafetyTipAllowlistPatterns().
void InitializeBlankLookalikeAllowlistForTesting();

// Adds a launch config for the given heuristic with the given percentage. See
// the proto definition for the meaning of various launch percentage values.
void AddSafetyTipHeuristicLaunchConfigForTesting(
    reputation::HeuristicLaunchConfig::Heuristic heuristic,
    int launch_percentage);

}  // namespace lookalikes

#endif  // COMPONENTS_LOOKALIKES_CORE_SAFETY_TIP_TEST_UTILS_H_