Add logging when "Advanced" button is clicked
Change-Id: I8259b1b863991935165afb19e34c30dcf5056acf
Fix: 35356464
Test: RunSettingsRoboTests
diff --git a/src/com/android/settings/core/instrumentation/EventLogWriter.java b/src/com/android/settings/core/instrumentation/EventLogWriter.java
index de37cba..9304512 100644
--- a/src/com/android/settings/core/instrumentation/EventLogWriter.java
+++ b/src/com/android/settings/core/instrumentation/EventLogWriter.java
@@ -17,8 +17,10 @@
package com.android.settings.core.instrumentation;
import android.content.Context;
+import android.metrics.LogMaker;
import com.android.internal.logging.MetricsLogger;
+import com.android.internal.logging.nano.MetricsProto;
/**
* {@link LogWriter} that writes data to eventlog.
@@ -37,6 +39,15 @@
MetricsLogger.action(context, category, "");
}
+ public void actionWithSource(Context context, int source, int category) {
+ final LogMaker logMaker = new LogMaker(category)
+ .setType(MetricsProto.MetricsEvent.TYPE_ACTION);
+ if (source != MetricsProto.MetricsEvent.VIEW_UNKNOWN) {
+ logMaker.addTaggedData(MetricsProto.MetricsEvent.FIELD_CONTEXT, source);
+ }
+ MetricsLogger.action(logMaker);
+ }
+
public void action(Context context, int category, int value) {
MetricsLogger.action(context, category, Integer.toString(value));
}
diff --git a/src/com/android/settings/core/instrumentation/LogWriter.java b/src/com/android/settings/core/instrumentation/LogWriter.java
index 45f1d57..4a2fc6c 100644
--- a/src/com/android/settings/core/instrumentation/LogWriter.java
+++ b/src/com/android/settings/core/instrumentation/LogWriter.java
@@ -40,6 +40,11 @@
/**
* Logs an user action.
*/
+ void actionWithSource(Context context, int source, int category);
+
+ /**
+ * Logs an user action.
+ */
void action(Context context, int category, int value);
/**
diff --git a/src/com/android/settings/core/instrumentation/MetricsFeatureProvider.java b/src/com/android/settings/core/instrumentation/MetricsFeatureProvider.java
index 1a9a451..13a4d7e 100644
--- a/src/com/android/settings/core/instrumentation/MetricsFeatureProvider.java
+++ b/src/com/android/settings/core/instrumentation/MetricsFeatureProvider.java
@@ -15,8 +15,79 @@
*/
package com.android.settings.core.instrumentation;
+import android.content.Context;
+import android.metrics.LogMaker;
+
+import java.util.ArrayList;
+import java.util.List;
+
/**
* FeatureProvider for metrics.
*/
-public interface MetricsFeatureProvider extends LogWriter {
+public class MetricsFeatureProvider {
+ private List<LogWriter> mLoggerWriters;
+
+ public MetricsFeatureProvider() {
+ mLoggerWriters = new ArrayList<>();
+ installLogWriters();
+ }
+
+ protected void installLogWriters() {
+ mLoggerWriters.add(new EventLogWriter());
+ mLoggerWriters.add(new SettingSuggestionsLogWriter());
+ }
+
+ public void visible(Context context, int category) {
+ for (LogWriter writer : mLoggerWriters) {
+ writer.visible(context, category);
+ }
+ }
+
+ public void hidden(Context context, int category) {
+ for (LogWriter writer : mLoggerWriters) {
+ writer.hidden(context, category);
+ }
+ }
+
+ public void actionWithSource(Context context, int source, int category) {
+ for (LogWriter writer : mLoggerWriters) {
+ writer.actionWithSource(context, source, category);
+ }
+ }
+
+ public void action(Context context, int category) {
+ for (LogWriter writer : mLoggerWriters) {
+ writer.action(context, category);
+ }
+ }
+
+ public void action(Context context, int category, int value) {
+ for (LogWriter writer : mLoggerWriters) {
+ writer.action(context, category, value);
+ }
+ }
+
+ public void action(Context context, int category, boolean value) {
+ for (LogWriter writer : mLoggerWriters) {
+ writer.action(context, category, value);
+ }
+ }
+
+ public void action(Context context, int category, String pkg) {
+ for (LogWriter writer : mLoggerWriters) {
+ writer.action(context, category, pkg);
+ }
+ }
+
+ public void count(Context context, String name, int value) {
+ for (LogWriter writer : mLoggerWriters) {
+ writer.count(context, name, value);
+ }
+ }
+
+ public void histogram(Context context, String name, int bucket) {
+ for (LogWriter writer : mLoggerWriters) {
+ writer.histogram(context, name, bucket);
+ }
+ }
}
diff --git a/src/com/android/settings/core/instrumentation/MetricsFeatureProviderImpl.java b/src/com/android/settings/core/instrumentation/MetricsFeatureProviderImpl.java
deleted file mode 100644
index 091eb54..0000000
--- a/src/com/android/settings/core/instrumentation/MetricsFeatureProviderImpl.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.settings.core.instrumentation;
-
-import android.content.Context;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Implementation for {@link MetricsFeatureProvider}
- */
-public class MetricsFeatureProviderImpl implements MetricsFeatureProvider {
-
- private List<LogWriter> mLoggerWriters;
-
- public MetricsFeatureProviderImpl() {
- mLoggerWriters = new ArrayList<>();
- installLogWriters();
- }
-
- protected void installLogWriters() {
- mLoggerWriters.add(new EventLogWriter());
- mLoggerWriters.add(new SettingSuggestionsLogWriter());
- }
-
- @Override
- public void visible(Context context, int category) {
- for (LogWriter writer : mLoggerWriters) {
- writer.visible(context, category);
- }
- }
-
- @Override
- public void hidden(Context context, int category) {
- for (LogWriter writer : mLoggerWriters) {
- writer.hidden(context, category);
- }
- }
-
- @Override
- public void action(Context context, int category) {
- for (LogWriter writer : mLoggerWriters) {
- writer.action(context, category);
- }
- }
-
- @Override
- public void action(Context context, int category, int value) {
- for (LogWriter writer : mLoggerWriters) {
- writer.action(context, category, value);
- }
- }
-
- @Override
- public void action(Context context, int category, boolean value) {
- for (LogWriter writer : mLoggerWriters) {
- writer.action(context, category, value);
- }
- }
-
- @Override
- public void action(Context context, int category, String pkg) {
- for (LogWriter writer : mLoggerWriters) {
- writer.action(context, category, pkg);
- }
- }
-
- @Override
- public void count(Context context, String name, int value) {
- for (LogWriter writer : mLoggerWriters) {
- writer.count(context, name, value);
- }
- }
-
- @Override
- public void histogram(Context context, String name, int bucket) {
- for (LogWriter writer : mLoggerWriters) {
- writer.histogram(context, name, bucket);
- }
- }
-}
diff --git a/src/com/android/settings/core/instrumentation/SettingSuggestionsLogWriter.java b/src/com/android/settings/core/instrumentation/SettingSuggestionsLogWriter.java
index 4c277fb..3b94fe7 100644
--- a/src/com/android/settings/core/instrumentation/SettingSuggestionsLogWriter.java
+++ b/src/com/android/settings/core/instrumentation/SettingSuggestionsLogWriter.java
@@ -17,6 +17,8 @@
package com.android.settings.core.instrumentation;
import android.content.Context;
+import android.metrics.LogMaker;
+
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.internal.logging.MetricsLogger;
import com.android.settings.suggestions.EventStore;
@@ -41,6 +43,10 @@
}
@Override
+ public void actionWithSource(Context context, int source, int category) {
+ }
+
+ @Override
public void action(Context context, int category, int value) {
}
diff --git a/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java b/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java
index 223d050..395a8bd 100644
--- a/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java
+++ b/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java
@@ -181,7 +181,7 @@
@Override
public ProgressiveDisclosureMixin getProgressiveDisclosureMixin(Context context,
DashboardFragment fragment) {
- return new ProgressiveDisclosureMixin(context, this, fragment);
+ return new ProgressiveDisclosureMixin(context, this, mMetricsFeatureProvider, fragment);
}
@Override
diff --git a/src/com/android/settings/dashboard/ProgressiveDisclosureMixin.java b/src/com/android/settings/dashboard/ProgressiveDisclosureMixin.java
index 2907028..77bd253 100644
--- a/src/com/android/settings/dashboard/ProgressiveDisclosureMixin.java
+++ b/src/com/android/settings/dashboard/ProgressiveDisclosureMixin.java
@@ -25,7 +25,10 @@
import android.text.TextUtils;
import android.util.Log;
+import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.R;
+import com.android.settings.core.instrumentation.Instrumentable;
+import com.android.settings.core.instrumentation.MetricsFeatureProvider;
import com.android.settings.core.lifecycle.LifecycleObserver;
import com.android.settings.core.lifecycle.events.OnCreate;
import com.android.settings.core.lifecycle.events.OnSaveInstanceState;
@@ -45,19 +48,23 @@
private final DashboardFeatureProvider mDashboardFeatureProvider;
// Collapsed preference sorted by order.
private final List<Preference> mCollapsedPrefs = new ArrayList<>();
- private /* final */ ExpandPreference mExpandButton;
+ private final MetricsFeatureProvider mMetricsFeatureProvider;
private final PreferenceFragment mFragment;
+ private /* final */ ExpandPreference mExpandButton;
private int mTileLimit = DEFAULT_TILE_LIMIT;
private boolean mUserExpanded;
public ProgressiveDisclosureMixin(Context context,
- DashboardFeatureProvider dashboardFeatureProvider, PreferenceFragment fragment) {
+ DashboardFeatureProvider dashboardFeatureProvider,
+ MetricsFeatureProvider metricsFeatureProvider,
+ PreferenceFragment fragment) {
mContext = context;
mFragment = fragment;
mExpandButton = new ExpandPreference(context);
mExpandButton.setOnPreferenceClickListener(this);
mDashboardFeatureProvider = dashboardFeatureProvider;
+ mMetricsFeatureProvider = metricsFeatureProvider;
}
@Override
@@ -83,6 +90,14 @@
}
mCollapsedPrefs.clear();
mUserExpanded = true;
+ final int metricsCategory;
+ if (mFragment instanceof Instrumentable) {
+ metricsCategory = ((Instrumentable) mFragment).getMetricsCategory();
+ } else {
+ metricsCategory = MetricsProto.MetricsEvent.VIEW_UNKNOWN;
+ }
+ mMetricsFeatureProvider.actionWithSource(mContext, metricsCategory,
+ MetricsProto.MetricsEvent.ACTION_SETTINGS_ADVANCED_BUTTON_EXPAND);
}
}
return false;
diff --git a/src/com/android/settings/overlay/FeatureFactoryImpl.java b/src/com/android/settings/overlay/FeatureFactoryImpl.java
index 4c81e30..1b504f4 100644
--- a/src/com/android/settings/overlay/FeatureFactoryImpl.java
+++ b/src/com/android/settings/overlay/FeatureFactoryImpl.java
@@ -28,7 +28,6 @@
import com.android.settings.applications.IPackageManagerWrapperImpl;
import com.android.settings.applications.PackageManagerWrapperImpl;
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
-import com.android.settings.core.instrumentation.MetricsFeatureProviderImpl;
import com.android.settings.dashboard.DashboardFeatureProvider;
import com.android.settings.dashboard.DashboardFeatureProviderImpl;
import com.android.settings.dashboard.SuggestionFeatureProvider;
@@ -70,7 +69,7 @@
@Override
public MetricsFeatureProvider getMetricsFeatureProvider() {
if (mMetricsFeatureProvider == null) {
- mMetricsFeatureProvider = new MetricsFeatureProviderImpl();
+ mMetricsFeatureProvider = new MetricsFeatureProvider();
}
return mMetricsFeatureProvider;
}
diff --git a/tests/robotests/src/com/android/settings/dashboard/ProgressiveDisclosureTest.java b/tests/robotests/src/com/android/settings/dashboard/ProgressiveDisclosureTest.java
index bb00cb8..573b2b5 100644
--- a/tests/robotests/src/com/android/settings/dashboard/ProgressiveDisclosureTest.java
+++ b/tests/robotests/src/com/android/settings/dashboard/ProgressiveDisclosureTest.java
@@ -74,7 +74,9 @@
mAppContext = ShadowApplication.getInstance().getApplicationContext();
mFakeFeatureFactory = (FakeFeatureFactory) FeatureFactory.getFactory(mContext);
mMixin = new ProgressiveDisclosureMixin(mAppContext,
- mFakeFeatureFactory.dashboardFeatureProvider, mPreferenceFragment);
+ mFakeFeatureFactory.dashboardFeatureProvider,
+ mFakeFeatureFactory.metricsFeatureProvider,
+ mPreferenceFragment);
ReflectionHelpers.setField(mMixin, "mExpandButton", mExpandButton);
mPreference = new Preference(mAppContext);
mPreference.setKey("test");