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

Commit 760479cf authored by Alejandro Nijamkin's avatar Alejandro Nijamkin
Browse files

Removes TunablePadding.

This is an unused class associated with a flaky test. The system is deprecated and is inaccessible to the
user.

Fix: 352082833
Test: NONE removed code and test
Flag: NONE code removeal only
Change-Id: Ic499c9462fe145e381dc501f0e98d4a4356e17bd
parent 5627a898
Loading
Loading
Loading
Loading
+0 −3
Original line number Diff line number Diff line
@@ -54,7 +54,6 @@ import com.android.systemui.statusbar.phone.SystemUIDialogManager;
import com.android.systemui.statusbar.policy.BluetoothController;
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
import com.android.systemui.statusbar.window.StatusBarWindowController;
import com.android.systemui.tuner.TunablePadding.TunablePaddingService;
import com.android.systemui.tuner.TunerService;

import dagger.Lazy;
@@ -129,7 +128,6 @@ public class Dependency {
    @Nullable
    @Inject Lazy<VolumeDialogController> mVolumeDialogController;
    @Inject Lazy<MetricsLogger> mMetricsLogger;
    @Inject Lazy<TunablePaddingService> mTunablePaddingService;
    @Inject Lazy<UiOffloadThread> mUiOffloadThread;
    @Inject Lazy<LightBarController> mLightBarController;
    @Inject Lazy<OverviewProxyService> mOverviewProxyService;
@@ -177,7 +175,6 @@ public class Dependency {
        mProviders.put(FragmentService.class, mFragmentService::get);
        mProviders.put(VolumeDialogController.class, mVolumeDialogController::get);
        mProviders.put(MetricsLogger.class, mMetricsLogger::get);
        mProviders.put(TunablePaddingService.class, mTunablePaddingService::get);
        mProviders.put(UiOffloadThread.class, mUiOffloadThread::get);
        mProviders.put(LightBarController.class, mLightBarController::get);
        mProviders.put(OverviewProxyService.class, mOverviewProxyService::get);
+0 −104
Original line number Diff line number Diff line
/*
 * Copyright (C) 2017 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.systemui.tuner;

import android.util.DisplayMetrics;
import android.view.View;
import android.view.WindowManager;

import com.android.systemui.Dependency;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.tuner.TunerService.Tunable;

import javax.inject.Inject;

/**
 * Version of Space that can be resized by a tunable setting.
 */
public class TunablePadding implements Tunable {

    public static final int FLAG_START = 1;
    public static final int FLAG_END = 2;
    public static final int FLAG_TOP = 4;
    public static final int FLAG_BOTTOM = 8;

    private final int mFlags;
    private final View mView;
    private final int mDefaultSize;
    private final float mDensity;
    private final TunerService mTunerService;

    private TunablePadding(String key, int def, int flags, View view, TunerService tunerService) {
        mDefaultSize = def;
        mFlags = flags;
        mView = view;
        DisplayMetrics metrics = new DisplayMetrics();
        view.getContext().getSystemService(WindowManager.class)
                .getDefaultDisplay().getMetrics(metrics);
        mDensity = metrics.density;
        mTunerService = tunerService;
        mTunerService.addTunable(this, key);
    }

    @Override
    public void onTuningChanged(String key, String newValue) {
        int dimen = mDefaultSize;
        if (newValue != null) {
            try {
                dimen = (int) (Integer.parseInt(newValue) * mDensity);
            } catch (NumberFormatException ex) {}
        }
        int left = mView.isLayoutRtl() ? FLAG_END : FLAG_START;
        int right = mView.isLayoutRtl() ? FLAG_START : FLAG_END;
        mView.setPadding(getPadding(dimen, left), getPadding(dimen, FLAG_TOP),
                getPadding(dimen, right), getPadding(dimen, FLAG_BOTTOM));
    }

    private int getPadding(int dimen, int flag) {
        return ((mFlags & flag) != 0) ? dimen : 0;
    }

    public void destroy() {
        mTunerService.removeTunable(this);
    }

    /**
     * Exists for easy injecting in tests.
     */
    @SysUISingleton
    public static class TunablePaddingService {

        private final TunerService mTunerService;

        /**
         */
        @Inject
        public TunablePaddingService(TunerService tunerService) {
            mTunerService = tunerService;
        }

        public TunablePadding add(View view, String key, int defaultSize, int flags) {
            if (view == null) {
                throw new IllegalArgumentException();
            }
            return new TunablePadding(key, defaultSize, flags, view, mTunerService);
        }
    }

    public static TunablePadding addTunablePadding(View view, String key, int defaultSize,
            int flags) {
        return Dependency.get(TunablePaddingService.class).add(view, key, defaultSize, flags);
    }
}
+0 −126
Original line number Diff line number Diff line
/*
 * Copyright (C) 2017 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.systemui.tuner;

import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.testing.LeakCheck.Tracker;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.WindowManager;

import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;

import com.android.systemui.utils.leaks.LeakCheckedTest;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

@SmallTest
@RunWith(AndroidJUnit4.class)
public class TunablePaddingTest extends LeakCheckedTest {

    private static final String KEY = "KEY";
    private static final int DEFAULT = 42;
    private View mView;
    private TunablePadding mTunablePadding;
    private TunerService mTunerService;

    @Before
    public void setup() {
        injectLeakCheckedDependencies(ALL_SUPPORTED_CLASSES);
        mView = mock(View.class);
        when(mView.getContext()).thenReturn(mContext);

        mTunerService = mock(TunerService.class);
        mDependency.injectTestDependency(TunablePadding.TunablePaddingService.class,
                new TunablePadding.TunablePaddingService(mTunerService));
        Tracker tracker = mLeakCheck.getTracker("tuner");
        doAnswer(invocation -> {
            tracker.getLeakInfo(invocation.getArguments()[0]).addAllocation(new Throwable());
            return null;
        }).when(mTunerService).addTunable(any(), any());
        doAnswer(invocation -> {
            tracker.getLeakInfo(invocation.getArguments()[0]).clearAllocations();
            return null;
        }).when(mTunerService).removeTunable(any());
    }

    @Test
    public void testFlags() {
        mTunablePadding = TunablePadding.addTunablePadding(mView, KEY, DEFAULT,
                TunablePadding.FLAG_START);
        mTunablePadding.onTuningChanged(null, null);
        verify(mView).setPadding(eq(DEFAULT), eq(0), eq(0), eq(0));
        mTunablePadding.destroy();

        mTunablePadding = TunablePadding.addTunablePadding(mView, KEY, DEFAULT,
                TunablePadding.FLAG_TOP);
        mTunablePadding.onTuningChanged(null, null);
        verify(mView).setPadding(eq(0), eq(DEFAULT), eq(0), eq(0));
        mTunablePadding.destroy();

        mTunablePadding = TunablePadding.addTunablePadding(mView, KEY, DEFAULT,
                TunablePadding.FLAG_END);
        mTunablePadding.onTuningChanged(null, null);
        verify(mView).setPadding(eq(0), eq(0), eq(DEFAULT), eq(0));
        mTunablePadding.destroy();

        mTunablePadding = TunablePadding.addTunablePadding(mView, KEY, DEFAULT,
                TunablePadding.FLAG_BOTTOM);
        mTunablePadding.onTuningChanged(null, null);
        verify(mView).setPadding(eq(0), eq(0), eq(0), eq(DEFAULT));
        mTunablePadding.destroy();
    }

    @Test
    public void testRtl() {
        when(mView.isLayoutRtl()).thenReturn(true);

        mTunablePadding = TunablePadding.addTunablePadding(mView, KEY, DEFAULT,
                TunablePadding.FLAG_END);
        mTunablePadding.onTuningChanged(null, null);
        verify(mView).setPadding(eq(DEFAULT), eq(0), eq(0), eq(0));
        mTunablePadding.destroy();

        mTunablePadding = TunablePadding.addTunablePadding(mView, KEY, DEFAULT,
                TunablePadding.FLAG_START);
        mTunablePadding.onTuningChanged(null, null);
        verify(mView).setPadding(eq(0), eq(0), eq(DEFAULT), eq(0));
        mTunablePadding.destroy();
    }

    @Test
    public void testTuning() {
        int value = 3;
        mTunablePadding = TunablePadding.addTunablePadding(mView, KEY, DEFAULT,
                TunablePadding.FLAG_START);
        mTunablePadding.onTuningChanged(KEY, String.valueOf(value));

        DisplayMetrics metrics = new DisplayMetrics();
        mContext.getSystemService(WindowManager.class).getDefaultDisplay().getMetrics(metrics);
        int output = (int) (metrics.density * value);
        verify(mView).setPadding(eq(output), eq(0), eq(0), eq(0));

        mTunablePadding.destroy();
    }
}