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

Commit 6c355f5d authored by jackqdyulei's avatar jackqdyulei
Browse files

Show settings app icon and name in recents

If user opens a settings activity by intent, it will show icon and
label get from activity. However, we should show settings app icon
and name constantly.

Bug: 34645742
Test: RunSettingsRoboTest
Change-Id: Ic2f0fef32529ba3f425a0130d25ead47fa0bb97d
parent 05c3333c
Loading
Loading
Loading
Loading
+24 −0
Original line number Diff line number Diff line
@@ -31,6 +31,10 @@ import android.content.pm.ActivityInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
import android.nfc.NfcAdapter;
import android.os.AsyncTask;
import android.os.Bundle;
@@ -679,6 +683,13 @@ public class SettingsActivity extends SettingsDrawerActivity
        mDevelopmentPreferencesListener = null;
    }

    @Override
    public void setTaskDescription(ActivityManager.TaskDescription taskDescription) {
        final Bitmap icon = getBitmapFromXmlResource(R.drawable.ic_launcher_settings);
        taskDescription.setIcon(icon);
        super.setTaskDescription(taskDescription);
    }

    protected boolean isValidFragment(String fragmentName) {
        // Almost all fragments are wrapped in this,
        // except for a few that have their own activities.
@@ -1114,4 +1125,17 @@ public class SettingsActivity extends SettingsDrawerActivity
        }
        super.onActivityResult(requestCode, resultCode, data);
    }

    @VisibleForTesting
    Bitmap getBitmapFromXmlResource(int drawableRes) {
        Drawable drawable = getResources().getDrawable(drawableRes, getTheme());
        Canvas canvas = new Canvas();
        Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(),
                drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
        canvas.setBitmap(bitmap);
        drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
        drawable.draw(canvas);

        return bitmap;
    }
}
+20 −4
Original line number Diff line number Diff line
@@ -16,12 +16,13 @@

package com.android.settings;

import android.app.ActivityManager;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import com.android.settings.testutils.FakeFeatureFactory;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -32,9 +33,12 @@ import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;

import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

@RunWith(SettingsRobolectricTestRunner.class)
@@ -45,7 +49,10 @@ public class SettingsActivityTest {
    private Context mContext;
    @Mock
    private FragmentManager mFragmentManager;

    @Mock
    private ActivityManager.TaskDescription mTaskDescription;
    @Mock
    private Bitmap mBitmap;
    private SettingsActivity mActivity;

    @Before
@@ -55,12 +62,14 @@ public class SettingsActivityTest {
        final FakeFeatureFactory factory =
                (FakeFeatureFactory) FakeFeatureFactory.getFactory(mContext);
        when(factory.dashboardFeatureProvider.isEnabled()).thenReturn(true);

        mActivity = spy(new SettingsActivity());
        doReturn(mBitmap).when(mActivity).getBitmapFromXmlResource(anyInt());
    }

    @Test
    public void testQueryTextChange_shouldUpdate() {
        final String testQuery = "abc";
        mActivity = new SettingsActivity();

        assertThat(mActivity.mSearchQuery).isNull();
        try {
@@ -83,4 +92,11 @@ public class SettingsActivityTest {

        mActivity.launchSettingFragment(null, true, mock(Intent.class));
    }

    @Test
    public void testSetTaskDescription_IconChanged() {
        mActivity.setTaskDescription(mTaskDescription);

        verify(mTaskDescription).setIcon(any());
    }
}
+4 −0
Original line number Diff line number Diff line
@@ -56,6 +56,10 @@ public class SettingsShadowResources extends ShadowResources {
        // TODO: Remove this once Robolectric is updated.
        if (id == com.android.settings.R.drawable.switchbar_background) {
            return new ColorDrawable();
        } else if (id == com.android.settings.R.drawable.ic_launcher_settings) {
            // ic_launcher_settings uses adaptive-icon, which is not supported by robolectric,
            // change it to a normal drawable.
            id = com.android.settings.R.drawable.ic_settings_wireless;
        }
        return super.loadDrawable(value, id, theme);
    }