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

Commit c24865e2 authored by Doris Ling's avatar Doris Ling Committed by Android (Google) Code Review
Browse files

Merge "Fix battery animation not being played."

parents c00b0426 09f527d0
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -23,8 +23,10 @@

    <com.android.settings.widget.VideoPreference
        android:key="auto_brightness_video"
        android:title="@string/summary_placeholder"
        settings:animation="@raw/aab_brightness"
        settings:preview="@drawable/aab_brightness"/>
        settings:preview="@drawable/aab_brightness"
        settings:controller="com.android.settings.widget.VideoPreferenceController"/>

    <!-- Cross-listed item, if you change this, also change it in power_usage_summary.xml -->
    <com.android.settingslib.RestrictedSwitchPreference
+3 −1
Original line number Diff line number Diff line
@@ -23,8 +23,10 @@

    <com.android.settings.widget.VideoPreference
        android:key="auto_awesome_battery"
        android:title="@string/summary_placeholder"
        settings:animation="@raw/auto_awesome_battery"
        settings:preview="@drawable/auto_awesome_battery"/>
        settings:preview="@drawable/auto_awesome_battery"
        settings:controller="com.android.settings.widget.VideoPreferenceController"/>

    <SwitchPreference
        android:key="smart_battery"
+64 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2018 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.widget;

import android.content.Context;

import com.android.settings.core.BasePreferenceController;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnPause;
import com.android.settingslib.core.lifecycle.events.OnResume;

import androidx.preference.PreferenceScreen;

public class VideoPreferenceController extends BasePreferenceController implements
        LifecycleObserver, OnResume, OnPause {

    private VideoPreference mVideoPreference;
    private boolean mVideoPaused;

    public VideoPreferenceController(Context context, String preferenceKey) {
        super(context, preferenceKey);
    }

    @Override
    public int getAvailabilityStatus() {
        return AVAILABLE_UNSEARCHABLE;
    }

    @Override
    public void displayPreference(PreferenceScreen screen) {
        super.displayPreference(screen);
        mVideoPreference = (VideoPreference) screen.findPreference(getPreferenceKey());
    }

    @Override
    public void onPause() {
        if (mVideoPreference != null) {
            mVideoPaused = mVideoPreference.isVideoPaused();
            mVideoPreference.onViewInvisible();
        }
    }

    @Override
    public void onResume() {
        if (mVideoPreference != null) {
            mVideoPreference.onViewVisible(mVideoPaused);
        }
    }

}
+76 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2018 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.widget;

import static com.android.settings.core.BasePreferenceController.AVAILABLE_UNSEARCHABLE;
import static com.google.common.truth.Truth.assertThat;

import static org.mockito.Mockito.anyBoolean;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;

import androidx.preference.PreferenceScreen;

@RunWith(RobolectricTestRunner.class)
public class VideoPreferenceControllerTest {

    @Mock
    private VideoPreference mPreference;
    @Mock
    private PreferenceScreen mScreen;

    private VideoPreferenceController mController;

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        mController = new VideoPreferenceController(RuntimeEnvironment.application, "test_pref");
        when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
    }

    @Test
    public void getAvailabilityStatus_isAlwaysAvailable() {
        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE_UNSEARCHABLE);
    }

    @Test
    public void onPause_shouldCallOnViewInvisibleOnPrefernece() {
        mController.displayPreference(mScreen);

        mController.onPause();

        verify(mPreference).onViewInvisible();
    }

    @Test
    public void onResume_shouldCallOnViewVisibleOnPrefernece() {
        mController.displayPreference(mScreen);

        mController.onResume();

        verify(mPreference).onViewVisible(anyBoolean());
    }

}