blob: 5312bf17f8a3111a626b61def02063faf8edd90c [file] [log] [blame]
// Copyright 2018 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.keyboard_accessory.sheet_component;
import static org.chromium.chrome.browser.keyboard_accessory.AccessorySheetTrigger.MANUAL_OPEN;
import static org.chromium.chrome.browser.keyboard_accessory.ManualFillingMetricsRecorder.recordSheetTrigger;
import static org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetProperties.ACTIVE_TAB_INDEX;
import static org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetProperties.TABS;
import static org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetProperties.VISIBLE;
import org.chromium.chrome.browser.keyboard_accessory.AccessorySheetTrigger;
import org.chromium.chrome.browser.keyboard_accessory.AccessoryTabType;
import org.chromium.ui.modelutil.PropertyModel;
/**
* This class provides helpers to record general metrics about accessory sheets.
* It sets up an observers to observe {@link AccessorySheetProperties}-based models and records
* metrics accordingly.
*/
class AccessorySheetMetricsRecorder {
/**
* The Recorder itself should be stateless and have no need for an instance.
*/
private AccessorySheetMetricsRecorder() {}
/**
* Registers an observer to the given model that records changes for all properties.
* @param accessorySheetModel The observable {@link AccessorySheetProperties}.
*/
static void registerAccessorySheetModelMetricsObserver(PropertyModel accessorySheetModel) {
accessorySheetModel.addObserver((source, propertyKey) -> {
if (propertyKey == VISIBLE) {
if (accessorySheetModel.get(VISIBLE)) {
int activeTab = accessorySheetModel.get(ACTIVE_TAB_INDEX);
if (activeTab >= 0 && activeTab < accessorySheetModel.get(TABS).size()) {
recordSheetTrigger(
accessorySheetModel.get(TABS).get(activeTab).getRecordingType(),
MANUAL_OPEN);
}
} else {
recordSheetTrigger(AccessoryTabType.ALL, AccessorySheetTrigger.ANY_CLOSE);
}
return;
}
if (propertyKey == ACTIVE_TAB_INDEX || propertyKey == AccessorySheetProperties.HEIGHT
|| propertyKey == AccessorySheetProperties.TOP_SHADOW_VISIBLE
|| propertyKey == AccessorySheetProperties.PAGE_CHANGE_LISTENER) {
return;
}
assert false : "Every property update needs to be handled explicitly!";
});
}
}