diff --git a/src/com/android/settings/applications/ManageApplications.java b/src/com/android/settings/applications/ManageApplications.java index 19f10227249..00e220cf148 100644 --- a/src/com/android/settings/applications/ManageApplications.java +++ b/src/com/android/settings/applications/ManageApplications.java @@ -443,8 +443,12 @@ public class ManageApplications extends InstrumentedPreferenceFragment case LIST_TYPE_NOTIFICATION: return MetricsEvent.MANAGE_APPLICATIONS_NOTIFICATIONS; case LIST_TYPE_STORAGE: - case LIST_TYPE_GAMES: + if (mStorageType == STORAGE_TYPE_MUSIC) { + return MetricsEvent.APPLICATIONS_STORAGE_MUSIC; + } return MetricsEvent.APPLICATIONS_STORAGE_APPS; + case LIST_TYPE_GAMES: + return MetricsEvent.APPLICATIONS_STORAGE_GAMES; case LIST_TYPE_USAGE_ACCESS: return MetricsEvent.USAGE_ACCESS; case LIST_TYPE_HIGH_POWER: diff --git a/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java b/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java index 63c37d8205c..54a65dac7f2 100644 --- a/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java +++ b/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java @@ -26,12 +26,12 @@ import android.os.Bundle; import android.os.UserHandle; import android.os.UserManager; import android.os.storage.VolumeInfo; -import android.provider.DocumentsContract; import android.support.annotation.VisibleForTesting; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceScreen; import android.util.Log; +import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; import com.android.settings.Settings; import com.android.settings.Utils; @@ -39,6 +39,7 @@ import com.android.settings.applications.ManageApplications; import com.android.settings.applications.PackageManagerWrapperImpl; import com.android.settings.core.PreferenceController; import com.android.settings.core.instrumentation.MetricsFeatureProvider; + import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.deviceinfo.StorageMeasurement; import com.android.settingslib.deviceinfo.StorageVolumeProvider; @@ -129,6 +130,8 @@ public class StorageItemPreferenceController extends PreferenceController break; case FILES_KEY: intent = getFilesIntent(); + FeatureFactory.getFactory(mContext).getMetricsFeatureProvider().action( + mContext, MetricsEvent.STORAGE_FILES); break; } diff --git a/src/com/android/settings/deviceinfo/storage/StorageSummaryDonutPreference.java b/src/com/android/settings/deviceinfo/storage/StorageSummaryDonutPreference.java index 12e76b2d8d4..8b6bac05f48 100644 --- a/src/com/android/settings/deviceinfo/storage/StorageSummaryDonutPreference.java +++ b/src/com/android/settings/deviceinfo/storage/StorageSummaryDonutPreference.java @@ -34,7 +34,9 @@ import android.view.View; import android.widget.Button; import android.widget.TextView; +import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; +import com.android.settings.overlay.FeatureFactory; import com.android.settings.widget.DonutView; import java.util.Locale; @@ -100,6 +102,9 @@ public class StorageSummaryDonutPreference extends Preference implements View.On @Override public void onClick(View v) { if (v != null && R.id.deletion_helper_button == v.getId()) { + Context context = getContext(); + FeatureFactory.getFactory(context).getMetricsFeatureProvider().action( + context, MetricsEvent.STORAGE_FREE_UP_SPACE_NOW); Intent intent = new Intent(StorageManager.ACTION_MANAGE_STORAGE); getContext().startActivity(intent); } diff --git a/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceControllerTest.java index 4851b5e39ff..d9e1f6df8c4 100644 --- a/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceControllerTest.java @@ -18,7 +18,10 @@ package com.android.settings.deviceinfo.storage; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Matchers.any; +import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -27,19 +30,20 @@ import android.content.Context; import android.content.Intent; import android.os.UserHandle; import android.os.storage.VolumeInfo; -import android.provider.DocumentsContract; import android.support.v7.preference.PreferenceScreen; import android.view.LayoutInflater; import android.view.View; import android.widget.LinearLayout; +import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; -import com.android.settings.Settings; import com.android.settings.SettingsActivity; import com.android.settings.SettingsRobolectricTestRunner; import com.android.settings.SubSettings; import com.android.settings.TestConfig; import com.android.settings.applications.ManageApplications; +import com.android.settings.core.instrumentation.MetricsFeatureProvider; +import com.android.settings.testutils.FakeFeatureFactory; import com.android.settingslib.deviceinfo.StorageVolumeProvider; import org.junit.Before; @@ -48,7 +52,6 @@ import org.junit.runner.RunWith; import org.mockito.Answers; import org.mockito.ArgumentCaptor; import org.mockito.Mock; -import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; @@ -61,7 +64,6 @@ public class StorageItemPreferenceControllerTest { * kilobyte. */ private static long KILOBYTE = 1024L; - private Context mContext; private VolumeInfo mVolume; @Mock(answer = Answers.RETURNS_DEEP_STUBS) @@ -70,12 +72,17 @@ public class StorageItemPreferenceControllerTest { private StorageVolumeProvider mSvp; private StorageItemPreferenceController mController; private StorageItemPreferenceAlternate mPreference; + private FakeFeatureFactory mFakeFeatureFactory; + private MetricsFeatureProvider mMetricsFeatureProvider; @Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); + mContext = spy(RuntimeEnvironment.application.getApplicationContext()); + FakeFeatureFactory.setupForTest(mContext); + mFakeFeatureFactory = (FakeFeatureFactory) FakeFeatureFactory.getFactory(mContext); + mMetricsFeatureProvider = mFakeFeatureFactory.getMetricsFeatureProvider(); mVolume = new VolumeInfo("id", 0, null, "id"); - mContext = RuntimeEnvironment.application; // Note: null is passed as the Lifecycle because we are handling it outside of the normal // Settings fragment lifecycle for test purposes. mController = new StorageItemPreferenceController(mContext, mFragment, mVolume, mSvp); @@ -158,6 +165,8 @@ public class StorageItemPreferenceControllerTest { Intent browseIntent = mVolume.buildBrowseIntent(); assertThat(intent.getAction()).isEqualTo(browseIntent.getAction()); assertThat(intent.getData()).isEqualTo(browseIntent.getData()); + verify(mMetricsFeatureProvider, times(1)).action( + any(Context.class), eq(MetricsEvent.STORAGE_FILES)); } @Test @@ -188,17 +197,17 @@ public class StorageItemPreferenceControllerTest { StorageItemPreferenceAlternate files = new StorageItemPreferenceAlternate(mContext); PreferenceScreen screen = mock(PreferenceScreen.class); when(screen.findPreference( - Mockito.eq(StorageItemPreferenceController.AUDIO_KEY))).thenReturn(audio); + eq(StorageItemPreferenceController.AUDIO_KEY))).thenReturn(audio); when(screen.findPreference( - Mockito.eq(StorageItemPreferenceController.PHOTO_KEY))).thenReturn(image); + eq(StorageItemPreferenceController.PHOTO_KEY))).thenReturn(image); when(screen.findPreference( - Mockito.eq(StorageItemPreferenceController.GAME_KEY))).thenReturn(games); + eq(StorageItemPreferenceController.GAME_KEY))).thenReturn(games); when(screen.findPreference( - Mockito.eq(StorageItemPreferenceController.OTHER_APPS_KEY))).thenReturn(apps); + eq(StorageItemPreferenceController.OTHER_APPS_KEY))).thenReturn(apps); when(screen.findPreference( - Mockito.eq(StorageItemPreferenceController.SYSTEM_KEY))).thenReturn(system); + eq(StorageItemPreferenceController.SYSTEM_KEY))).thenReturn(system); when(screen.findPreference( - Mockito.eq(StorageItemPreferenceController.FILES_KEY))).thenReturn(files); + eq(StorageItemPreferenceController.FILES_KEY))).thenReturn(files); mController.displayPreference(screen); mController.setSystemSize(KILOBYTE * 6); diff --git a/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageSummaryDonutPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageSummaryDonutPreferenceControllerTest.java index 2489bac2fe0..c12e51560ef 100644 --- a/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageSummaryDonutPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageSummaryDonutPreferenceControllerTest.java @@ -18,6 +18,11 @@ package com.android.settings.deviceinfo.storage; import static com.google.common.truth.Truth.assertThat; +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.Context; @@ -26,12 +31,16 @@ import android.provider.Settings; import android.support.v7.preference.PreferenceViewHolder; import android.view.LayoutInflater; import android.view.View; +import android.widget.Button; import android.widget.LinearLayout; import android.widget.TextView; +import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; import com.android.settings.SettingsRobolectricTestRunner; import com.android.settings.TestConfig; +import com.android.settings.core.instrumentation.MetricsFeatureProvider; +import com.android.settings.testutils.FakeFeatureFactory; import com.android.settingslib.deviceinfo.StorageVolumeProvider; import org.junit.Before; @@ -50,10 +59,15 @@ public class StorageSummaryDonutPreferenceControllerTest { private StorageSummaryDonutPreferenceController mController; private StorageSummaryDonutPreference mPreference; private PreferenceViewHolder mHolder; + private FakeFeatureFactory mFakeFeatureFactory; + private MetricsFeatureProvider mMetricsFeatureProvider; @Before public void setUp() throws Exception { - mContext = RuntimeEnvironment.application; + mContext = spy(RuntimeEnvironment.application.getApplicationContext()); + FakeFeatureFactory.setupForTest(mContext); + mFakeFeatureFactory = (FakeFeatureFactory) FakeFeatureFactory.getFactory(mContext); + mMetricsFeatureProvider = mFakeFeatureFactory.getMetricsFeatureProvider(); mController = new StorageSummaryDonutPreferenceController(mContext); mPreference = new StorageSummaryDonutPreference(mContext); @@ -106,6 +120,17 @@ public class StorageSummaryDonutPreferenceControllerTest { assertThat(asmTextView.getText().toString()).isEqualTo("Storage Manager: OFF"); } + @Test + public void testFreeUpSpaceMetricIsTriggered() throws Exception { + mPreference.onBindViewHolder(mHolder); + Button button = (Button) mHolder.findViewById(R.id.deletion_helper_button); + + mPreference.onClick(button); + + verify(mMetricsFeatureProvider, times(1)).action( + any(Context.class), eq(MetricsEvent.STORAGE_FREE_UP_SPACE_NOW)); + } + @Test public void testAutomaticStorageManagerLabelOn() throws Exception { Settings.Secure.putInt(mContext.getContentResolver(),