Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 42aaa53e authored by Fan Zhang's avatar Fan Zhang
Browse files

Add logging for settings

- Log when navigating from Settings to injected tiles.
- Log when user creates a new widget shortcut

Fix: 33209678
Fix: 30137094
Test: RunSettingsRoboTests
Change-Id: I1e0f4e00709c392cde2550fafe53890836387c99
parent 628b3cb7
Loading
Loading
Loading
Loading
+14 −2
Original line number Diff line number Diff line
@@ -39,7 +39,9 @@ import android.view.View.MeasureSpec;
import android.widget.ImageView;
import android.widget.ListView;

import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.Settings.TetherSettingsActivity;
import com.android.settings.overlay.FeatureFactory;

import java.util.ArrayList;
import java.util.List;
@@ -56,7 +58,8 @@ public class CreateShortcut extends LauncherActivity {

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        ListItem item = itemForPosition(position);
        final ListItem item = itemForPosition(position);
        logCreateShortcut(item.resolveInfo);
        setResult(RESULT_OK, createResultIntent(intentForPosition(position),
                item.resolveInfo, item.label));
        finish();
@@ -89,6 +92,15 @@ public class CreateShortcut extends LauncherActivity {
        return intent;
    }

    private void logCreateShortcut(ResolveInfo info) {
        if (info == null || info.activityInfo == null) {
            return;
        }
        FeatureFactory.getFactory(this).getMetricsFeatureProvider().action(
                this, MetricsProto.MetricsEvent.ACTION_SETTINGS_CREATE_SHORTCUT,
                info.activityInfo.name);
    }

    private Bitmap createIcon(int resource) {
        Context context = new ContextThemeWrapper(this, android.R.style.Theme_Material);
        View view = LayoutInflater.from(context).inflate(R.layout.shortcut_badge, null);
+0 −1
Original line number Diff line number Diff line
@@ -69,7 +69,6 @@ import com.android.settingslib.drawer.DashboardCategory;
import com.android.settingslib.drawer.SettingsDrawerActivity;
import com.android.settingslib.drawer.Tile;

import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
+21 −1
Original line number Diff line number Diff line
@@ -27,7 +27,10 @@ import android.support.v7.preference.Preference;
import android.text.TextUtils;
import android.util.Log;

import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.SettingsActivity;
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.drawer.CategoryManager;
import com.android.settingslib.drawer.DashboardCategory;
import com.android.settingslib.drawer.ProfileSelectDialog;
@@ -49,18 +52,20 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {


    protected final Context mContext;

    private final MetricsFeatureProvider mMetricsFeatureProvider;
    private final CategoryManager mCategoryManager;

    public DashboardFeatureProviderImpl(Context context) {
        mContext = context.getApplicationContext();
        mCategoryManager = CategoryManager.get(context, getExtraIntentAction());
        mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
    }

    @VisibleForTesting
    DashboardFeatureProviderImpl(Context context, CategoryManager categoryManager) {
        mContext = context.getApplicationContext();
        mCategoryManager = categoryManager;
        mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
    }

    @Override
@@ -205,11 +210,26 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {
    private void launchIntentOrSelectProfile(Activity activity, Tile tile, Intent intent) {
        ProfileSelectDialog.updateUserHandlesIfNeeded(mContext, tile);
        if (tile.userHandle == null) {
            logStartActivity(intent);
            activity.startActivityForResult(intent, 0);
        } else if (tile.userHandle.size() == 1) {
            logStartActivity(intent);
            activity.startActivityForResultAsUser(intent, 0, tile.userHandle.get(0));
        } else {
            ProfileSelectDialog.show(activity.getFragmentManager(), tile);
        }
    }

    private void logStartActivity(Intent intent) {
        if (intent == null) {
            return;
        }
        final ComponentName cn = intent.getComponent();
        if (cn == null) {
            return;
        }
        mMetricsFeatureProvider.action(mContext,
                MetricsProto.MetricsEvent.ACTION_SETTINGS_TILE_CLICK,
                cn.flattenToString());
    }
}
+9 −1
Original line number Diff line number Diff line
@@ -27,9 +27,11 @@ import android.os.UserHandle;
import android.os.UserManager;
import android.support.v7.preference.Preference;

import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.SettingsActivity;
import com.android.settings.SettingsRobolectricTestRunner;
import com.android.settings.TestConfig;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settingslib.drawer.CategoryKey;
import com.android.settingslib.drawer.CategoryManager;
import com.android.settingslib.drawer.DashboardCategory;
@@ -68,12 +70,15 @@ public class DashboardFeatureProviderImplTest {
    private UserManager mUserManager;
    @Mock
    private CategoryManager mCategoryManager;
    private FakeFeatureFactory mFeatureFactory;

    private DashboardFeatureProviderImpl mImpl;

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        FakeFeatureFactory.setupForTest(mActivity);
        mFeatureFactory = (FakeFeatureFactory) FakeFeatureFactory.getFactory(mActivity);
        mImpl = new DashboardFeatureProviderImpl(mActivity);
    }

@@ -157,7 +162,10 @@ public class DashboardFeatureProviderImplTest {

        mImpl.bindPreferenceToTile(mActivity, preference, tile, "123", Preference.DEFAULT_ORDER);
        preference.getOnPreferenceClickListener().onPreferenceClick(null);

        verify(mFeatureFactory.metricsFeatureProvider).action(
                any(Context.class),
                eq(MetricsProto.MetricsEvent.ACTION_SETTINGS_TILE_CLICK),
                eq(tile.intent.getComponent().flattenToString()));
        verify(mActivity)
                .startActivityForResultAsUser(any(Intent.class), anyInt(), any(UserHandle.class));
    }