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

Commit b4bdb6fd authored by Caitlin Cassidy's avatar Caitlin Cassidy Committed by Android (Google) Code Review
Browse files

Merge "[Status Bar Refactor] Make StatusBarDemoMode part of the fragment...

Merge "[Status Bar Refactor] Make StatusBarDemoMode part of the fragment component so it's re-created each time we get a new status bar view."
parents d7c12fab 7ffc2209
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -146,6 +146,7 @@ import com.android.systemui.classifier.FalsingCollector;
import com.android.systemui.colorextraction.SysuiColorExtractor;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dagger.qualifiers.UiBackground;
import com.android.systemui.demomode.DemoMode;
import com.android.systemui.demomode.DemoModeController;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.emergency.EmergencyGesture;
@@ -1549,7 +1550,7 @@ public class StatusBar extends CoreStartable implements
        mHeadsUpManager.addListener(mStatusBarComponent.getStatusBarHeadsUpChangeListener());

        // Listen for demo mode changes
        mDemoModeController.addCallback(mStatusBarComponent.getStatusBarDemoMode());
        mDemoModeController.addCallback(mDemoModeCallback);

        if (mCommandQueueCallbacks != null) {
            mCommandQueue.removeCallback(mCommandQueueCallbacks);
@@ -4430,4 +4431,14 @@ public class StatusBar extends CoreStartable implements
                    return mStartingSurfaceOptional.get().getBackgroundColor(task);
                }
            };

    private final DemoMode mDemoModeCallback = new DemoMode() {
        @Override
        public void onDemoModeFinished() {
            checkBarModes();
        }

        @Override
        public void dispatchDemoCommand(String command, Bundle args) { }
    };
}
+45 −30
Original line number Diff line number Diff line
@@ -21,28 +21,39 @@ import static com.android.systemui.statusbar.phone.BarTransitions.MODE_SEMI_TRAN
import static com.android.systemui.statusbar.phone.BarTransitions.MODE_TRANSLUCENT;
import static com.android.systemui.statusbar.phone.BarTransitions.MODE_TRANSPARENT;
import static com.android.systemui.statusbar.phone.BarTransitions.MODE_WARNING;
import static com.android.systemui.statusbar.phone.fragment.dagger.StatusBarFragmentModule.OPERATOR_NAME_VIEW;

import android.annotation.NonNull;
import android.os.Bundle;
import android.view.View;

import com.android.systemui.R;
import com.android.systemui.dagger.qualifiers.DisplayId;
import com.android.systemui.demomode.DemoMode;
import com.android.systemui.demomode.DemoModeCommandReceiver;
import com.android.systemui.demomode.DemoModeController;
import com.android.systemui.navigationbar.NavigationBarController;
import com.android.systemui.statusbar.NotificationShadeWindowController;
import com.android.systemui.statusbar.phone.dagger.StatusBarComponent;
import com.android.systemui.statusbar.phone.fragment.dagger.StatusBarFragmentScope;
import com.android.systemui.statusbar.policy.Clock;
import com.android.systemui.util.ViewController;

import java.util.ArrayList;
import java.util.List;

import javax.inject.Inject;
import javax.inject.Named;

/** */
@StatusBarComponent.StatusBarScope
public class StatusBarDemoMode implements DemoMode {
    private final StatusBar mStatusBar;
/**
 * A controller that updates status-bar-related views during demo mode.
 *
 * This class extends ViewController not because it controls a specific view, but because we want it
 * to get torn down and re-created in line with the view's lifecycle.
 */
@StatusBarFragmentScope
public class StatusBarDemoMode extends ViewController<View> implements DemoMode {
    private final Clock mClockView;
    private final View mOperatorNameView;
    private final DemoModeController mDemoModeController;
    private final NotificationShadeWindowController mNotificationShadeWindowController;
    private final NotificationShadeWindowViewController mNotificationShadeWindowViewController;
    private final NavigationBarController mNavigationBarController;
@@ -50,18 +61,33 @@ public class StatusBarDemoMode implements DemoMode {

    @Inject
    StatusBarDemoMode(
            StatusBar statusBar,
            Clock clockView,
            @Named(OPERATOR_NAME_VIEW) View operatorNameView,
            DemoModeController demoModeController,
            NotificationShadeWindowController notificationShadeWindowController,
            NotificationShadeWindowViewController notificationShadeWindowViewController,
            NavigationBarController navigationBarController,
            @DisplayId int displayId) {
        mStatusBar = statusBar;
        super(clockView);
        mClockView = clockView;
        mOperatorNameView = operatorNameView;
        mDemoModeController = demoModeController;
        mNotificationShadeWindowController = notificationShadeWindowController;
        mNotificationShadeWindowViewController = notificationShadeWindowViewController;
        mNavigationBarController = navigationBarController;
        mDisplayId = displayId;
    }

    @Override
    protected void onViewAttached() {
        mDemoModeController.addCallback(this);
    }

    @Override
    protected void onViewDetached() {
        mDemoModeController.removeCallback(this);
    }

    @Override
    public List<String> demoCommands() {
        List<String> s = new ArrayList<>();
@@ -74,21 +100,23 @@ public class StatusBarDemoMode implements DemoMode {
    @Override
    public void onDemoModeStarted() {
        // Must send this message to any view that we delegate to via dispatchDemoCommandToView
        dispatchDemoModeStartedToView(R.id.clock);
        dispatchDemoModeStartedToView(R.id.operator_name);
        dispatchDemoModeStartedToView(mClockView);
        dispatchDemoModeStartedToView(mOperatorNameView);
    }

    @Override
    public void onDemoModeFinished() {
        dispatchDemoModeFinishedToView(R.id.clock);
        dispatchDemoModeFinishedToView(R.id.operator_name);
        mStatusBar.checkBarModes();
        dispatchDemoModeFinishedToView(mClockView);
        dispatchDemoModeFinishedToView(mOperatorNameView);
    }

    @Override
    public void dispatchDemoCommand(String command, @NonNull Bundle args) {
        if (command.equals(COMMAND_CLOCK)) {
            dispatchDemoCommandToView(command, args, R.id.clock);
            dispatchDemoCommandToView(command, args, mClockView);
        }
        if (command.equals(COMMAND_OPERATOR)) {
            dispatchDemoCommandToView(command, args, mOperatorNameView);
        }
        if (command.equals(COMMAND_BARS)) {
            String mode = args.getString("mode");
@@ -108,34 +136,21 @@ public class StatusBarDemoMode implements DemoMode {
                mNavigationBarController.transitionTo(mDisplayId, barMode, animate);
            }
        }
        if (command.equals(COMMAND_OPERATOR)) {
            dispatchDemoCommandToView(command, args, R.id.operator_name);
        }
    }

    private void dispatchDemoModeStartedToView(int id) {
        View statusBarView = mStatusBar.getStatusBarView();
        if (statusBarView == null) return;
        View v = statusBarView.findViewById(id);
    private void dispatchDemoModeStartedToView(View v) {
        if (v instanceof DemoModeCommandReceiver) {
            ((DemoModeCommandReceiver) v).onDemoModeStarted();
        }
    }

    //TODO: these should have controllers, and this method should be removed
    private void dispatchDemoCommandToView(String command, Bundle args, int id) {
        View statusBarView = mStatusBar.getStatusBarView();
        if (statusBarView == null) return;
        View v = statusBarView.findViewById(id);
    private void dispatchDemoCommandToView(String command, Bundle args, View v) {
        if (v instanceof DemoModeCommandReceiver) {
            ((DemoModeCommandReceiver) v).dispatchDemoCommand(command, args);
        }
    }

    private void dispatchDemoModeFinishedToView(int id) {
        View statusBarView = mStatusBar.getStatusBarView();
        if (statusBarView == null) return;
        View v = statusBarView.findViewById(id);
    private void dispatchDemoModeFinishedToView(View v) {
        if (v instanceof DemoModeCommandReceiver) {
            ((DemoModeCommandReceiver) v).onDemoModeFinished();
        }
+0 −7
Original line number Diff line number Diff line
@@ -29,7 +29,6 @@ import com.android.systemui.statusbar.phone.NotificationShadeWindowView;
import com.android.systemui.statusbar.phone.NotificationShadeWindowViewController;
import com.android.systemui.statusbar.phone.SplitShadeHeaderController;
import com.android.systemui.statusbar.phone.StatusBarCommandQueueCallbacks;
import com.android.systemui.statusbar.phone.StatusBarDemoMode;
import com.android.systemui.statusbar.phone.StatusBarHeadsUpChangeListener;
import com.android.systemui.statusbar.phone.fragment.CollapsedStatusBarFragment;

@@ -108,12 +107,6 @@ public interface StatusBarComponent {
    @StatusBarScope
    AuthRippleController getAuthRippleController();

    /**
     * Creates a StatusBarDemoMode.
     */
    @StatusBarScope
    StatusBarDemoMode getStatusBarDemoMode();

    /**
     * Creates a StatusBarHeadsUpChangeListener.
     */
+6 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import com.android.systemui.statusbar.phone.HeadsUpAppearanceController;
import com.android.systemui.statusbar.phone.LightsOutNotifController;
import com.android.systemui.statusbar.phone.PhoneStatusBarView;
import com.android.systemui.statusbar.phone.PhoneStatusBarViewController;
import com.android.systemui.statusbar.phone.StatusBarDemoMode;
import com.android.systemui.statusbar.phone.fragment.CollapsedStatusBarFragment;

import dagger.BindsInstance;
@@ -62,6 +63,7 @@ public interface StatusBarFragmentComponent {
        getHeadsUpAppearanceController().init();
        getPhoneStatusBarViewController().init();
        getLightsOutNotifController().init();
        getStatusBarDemoMode().init();
    }

    /** */
@@ -84,4 +86,8 @@ public interface StatusBarFragmentComponent {
    /** */
    @StatusBarFragmentScope
    LightsOutNotifController getLightsOutNotifController();

    /** */
    @StatusBarFragmentScope
    StatusBarDemoMode getStatusBarDemoMode();
}
+17 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import com.android.systemui.statusbar.phone.NotificationPanelViewController;
import com.android.systemui.statusbar.phone.PhoneStatusBarView;
import com.android.systemui.statusbar.phone.PhoneStatusBarViewController;
import com.android.systemui.statusbar.phone.fragment.CollapsedStatusBarFragment;
import com.android.systemui.statusbar.policy.Clock;

import javax.inject.Named;

@@ -36,6 +37,7 @@ import dagger.Provides;
public interface StatusBarFragmentModule {

    String LIGHTS_OUT_NOTIF_VIEW = "lights_out_notif_view";
    String OPERATOR_NAME_VIEW = "operator_name_view";

    /** */
    @Provides
@@ -61,6 +63,21 @@ public interface StatusBarFragmentModule {
        return view.findViewById(R.id.notification_lights_out);
    }

    /** */
    @Provides
    @StatusBarFragmentScope
    @Named(OPERATOR_NAME_VIEW)
    static View provideOperatorNameView(@RootView PhoneStatusBarView view) {
        return view.findViewById(R.id.operator_name);
    }

    /** */
    @Provides
    @StatusBarFragmentScope
    static Clock provideClock(@RootView PhoneStatusBarView view) {
        return view.findViewById(R.id.clock);
    }

    /** */
    @Provides
    @StatusBarFragmentScope