18a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren/*
28a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren * Copyright (C) 2015 The Android Open Source Project
38a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren *
48a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren * Licensed under the Apache License, Version 2.0 (the "License");
58a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren * you may not use this file except in compliance with the License.
68a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren * You may obtain a copy of the License at
78a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren *
88a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren *      http://www.apache.org/licenses/LICENSE-2.0
98a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren *
108a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren * Unless required by applicable law or agreed to in writing, software
118a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren * distributed under the License is distributed on an "AS IS" BASIS,
128a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
138a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren * See the License for the specific language governing permissions and
148a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren * limitations under the License.
158a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren */
168a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren
178a963babe2e36b7a41f77b8d2598c97658196e58Chris Wrenpackage com.android.settings;
188a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren
1931c7c32fcc26a421a4d2fef7f006917ef590f426Jason Monkimport com.android.internal.logging.MetricsLogger;
2031c7c32fcc26a421a4d2fef7f006917ef590f426Jason Monk
2139b467482d1bf256a111c757e9b7621c6f523271Jason Monkimport android.os.Bundle;
2239b467482d1bf256a111c757e9b7621c6f523271Jason Monkimport android.support.v14.preference.PreferenceFragment;
2339b467482d1bf256a111c757e9b7621c6f523271Jason Monk
248a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren/**
258a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren * Instrumented fragment that logs visibility state.
268a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren */
278a963babe2e36b7a41f77b8d2598c97658196e58Chris Wrenpublic abstract class InstrumentedFragment extends PreferenceFragment {
282eb901a4e8865f4c49de6b8013cecd606b6a79e6Fabrice Di Meglio    // Declare new temporary categories here, starting after this value.
298b7dc08e775db599a1239a9d4a51d6912fee90d2Chris Wren    public static final int UNDECLARED = 100000;
302eb901a4e8865f4c49de6b8013cecd606b6a79e6Fabrice Di Meglio
315b39710e6d9c05e4c76872423aee00f7c76a233eJason Monk    // Used by PreferenceActivity for the dummy fragment it adds, no useful data here.
325b39710e6d9c05e4c76872423aee00f7c76a233eJason Monk    public static final int PREFERENCE_ACTIVITY_FRAGMENT = UNDECLARED + 1;
335b39710e6d9c05e4c76872423aee00f7c76a233eJason Monk
3420c3093679e81c4ae184acf4de49359d216311ceChris Wren    /**
3520c3093679e81c4ae184acf4de49359d216311ceChris Wren     * Declare the view of this category.
3620c3093679e81c4ae184acf4de49359d216311ceChris Wren     *
379d1bfd1e8de6e46137a9571507c03526880d6a46Chris Wren     * Categories are defined in {@link com.android.internal.logging.MetricsProto.MetricsEvent}
3820c3093679e81c4ae184acf4de49359d216311ceChris Wren     * or if there is no relevant existing category you may define one in
3920c3093679e81c4ae184acf4de49359d216311ceChris Wren     * {@link com.android.settings.InstrumentedFragment}.
4020c3093679e81c4ae184acf4de49359d216311ceChris Wren     */
418a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren    protected abstract int getMetricsCategory();
428a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren
438a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren    @Override
4439b467482d1bf256a111c757e9b7621c6f523271Jason Monk    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
4539b467482d1bf256a111c757e9b7621c6f523271Jason Monk    }
4639b467482d1bf256a111c757e9b7621c6f523271Jason Monk
4739b467482d1bf256a111c757e9b7621c6f523271Jason Monk    @Override
488a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren    public void onResume() {
498a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren        super.onResume();
508a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren        MetricsLogger.visible(getActivity(), getMetricsCategory());
518a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren    }
528a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren
538a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren    @Override
548a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren    public void onPause() {
558a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren        super.onPause();
568a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren        MetricsLogger.hidden(getActivity(), getMetricsCategory());
578a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren    }
588a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren}
59