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