// Copyright 2016 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. package org.chromium.chrome.browser.contextualsearch; import java.util.HashSet; import java.util.Set; /** * A set of {@link ContextualSearchHeuristic}s that support experimentation and logging. */ public class ContextualSearchHeuristics { protected Set<ContextualSearchHeuristic> mHeuristics; /** * Manages a set of heuristics. */ ContextualSearchHeuristics() { mHeuristics = new HashSet<ContextualSearchHeuristic>(); } /** * Logs the results seen for the heuristics and whether they would have activated if enabled. * @param wasSearchContentViewSeen Whether the panel contents were seen. * @param wasActivatedByTap Whether the panel was activated by a Tap or not. */ public void logResultsSeen(boolean wasSearchContentViewSeen, boolean wasActivatedByTap) { for (ContextualSearchHeuristic heuristic : mHeuristics) { heuristic.logResultsSeen(wasSearchContentViewSeen, wasActivatedByTap); } } /** * Logs the condition state for all the Tap suppression heuristics. */ public void logContitionState() { for (ContextualSearchHeuristic heuristic : mHeuristics) { heuristic.logConditionState(); } } /** * Adds the given heuristic to the current set being managed. * @param heuristicToAdd Another heuristic to manage. */ void add(ContextualSearchHeuristic heuristicToAdd) { mHeuristics.add(heuristicToAdd); } /** * @return Whether any heuristic that should be considered for aggregate tap suppression logging * is satisfied regardless of whether the tap was actually suppressed. */ public boolean isAnyConditionSatisfiedForAggregrateLogging() { for (ContextualSearchHeuristic heuristic : mHeuristics) { if (heuristic.shouldAggregateLogForTapSuppression() && heuristic.isConditionSatisfiedForAggregateLogging()) { return true; } } return false; } }