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

Commit d483427c authored by Evan Laird's avatar Evan Laird Committed by Android (Google) Code Review
Browse files

Merge "[sb] remove StatusBarLocationPublisher (rip)" into main

parents 844edf22 11590588
Loading
Loading
Loading
Loading
+0 −83
Original line number Diff line number Diff line
/*
 * Copyright (C) 2021 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.statusbar.phone

import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.statusbar.policy.CallbackController
import java.lang.ref.WeakReference
import javax.inject.Inject

/**
 * Publishes updates to the status bar's margins.
 *
 * While the status bar view consumes the entire width of the device, the status bar
 * contents are laid out with margins for rounded corners, padding from the absolute
 * edges, and potentially display cutouts in the corner.
 */
@SysUISingleton
class StatusBarLocationPublisher @Inject constructor()
: CallbackController<StatusBarMarginUpdatedListener> {
    private val listeners = mutableSetOf<WeakReference<StatusBarMarginUpdatedListener>>()

    var marginLeft: Int = 0
        private set
    var marginRight: Int = 0
        private set

    override fun addCallback(listener: StatusBarMarginUpdatedListener) {
        listeners.add(WeakReference(listener))
    }

    override fun removeCallback(listener: StatusBarMarginUpdatedListener) {
        var toRemove: WeakReference<StatusBarMarginUpdatedListener>? = null
        for (l in listeners) {
            if (l.get() == listener) {
                toRemove = l
            }
        }

        if (toRemove != null) {
            listeners.remove(toRemove)
        }
    }

    fun updateStatusBarMargin(left: Int, right: Int) {
        marginLeft = left
        marginRight = right

        notifyListeners()
    }

    private fun notifyListeners() {
        var listenerList: List<WeakReference<StatusBarMarginUpdatedListener>>
        synchronized(this) {
            listenerList = listeners.toList()
        }

        listenerList.forEach { wrapper ->
            if (wrapper.get() == null) {
                listeners.remove(wrapper)
            }

            wrapper.get()?.onStatusBarMarginUpdated(marginLeft, marginRight)
        }
    }
}

interface StatusBarMarginUpdatedListener {
    fun onStatusBarMarginUpdated(marginLeft: Int, marginRight: Int)
}
 No newline at end of file
+0 −22
Original line number Diff line number Diff line
@@ -65,7 +65,6 @@ import com.android.systemui.statusbar.phone.NotificationIconContainer;
import com.android.systemui.statusbar.phone.PhoneStatusBarView;
import com.android.systemui.statusbar.phone.StatusBarHideIconsForBouncerManager;
import com.android.systemui.statusbar.phone.StatusBarLocation;
import com.android.systemui.statusbar.phone.StatusBarLocationPublisher;
import com.android.systemui.statusbar.phone.fragment.dagger.StatusBarFragmentComponent;
import com.android.systemui.statusbar.phone.fragment.dagger.StatusBarFragmentComponent.Startable;
import com.android.systemui.statusbar.phone.ongoingcall.OngoingCallController;
@@ -140,7 +139,6 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
    private final OperatorNameViewController.Factory mOperatorNameViewControllerFactory;
    private final OngoingCallController mOngoingCallController;
    private final SystemStatusAnimationScheduler mAnimationScheduler;
    private final StatusBarLocationPublisher mLocationPublisher;
    private final ShadeExpansionStateManager mShadeExpansionStateManager;
    private final StatusBarIconController mStatusBarIconController;
    private final CarrierConfigTracker mCarrierConfigTracker;
@@ -243,7 +241,6 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
            StatusBarFragmentComponent.Factory statusBarFragmentComponentFactory,
            OngoingCallController ongoingCallController,
            SystemStatusAnimationScheduler animationScheduler,
            StatusBarLocationPublisher locationPublisher,
            ShadeExpansionStateManager shadeExpansionStateManager,
            StatusBarIconController statusBarIconController,
            DarkIconManager.Factory darkIconManagerFactory,
@@ -267,7 +264,6 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
        mStatusBarFragmentComponentFactory = statusBarFragmentComponentFactory;
        mOngoingCallController = ongoingCallController;
        mAnimationScheduler = animationScheduler;
        mLocationPublisher = locationPublisher;
        mShadeExpansionStateManager = shadeExpansionStateManager;
        mStatusBarIconController = statusBarIconController;
        mCollapsedStatusBarViewModel = collapsedStatusBarViewModel;
@@ -349,9 +345,6 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
        }

        mStatusBar = (PhoneStatusBarView) view;
        View contents = mStatusBar.findViewById(R.id.status_bar_contents);
        contents.addOnLayoutChangeListener(mStatusBarLayoutListener);
        updateStatusBarLocation(contents.getLeft(), contents.getRight());
        if (savedInstanceState != null && savedInstanceState.containsKey(EXTRA_PANEL_STATE)) {
            mStatusBar.restoreHierarchyState(
                    savedInstanceState.getSparseParcelableArray(EXTRA_PANEL_STATE));
@@ -977,13 +970,6 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
        }, /*isAnimationRunning*/ false);
    }

    private void updateStatusBarLocation(int left, int right) {
        int leftMargin = left - mStatusBar.getLeft();
        int rightMargin = mStatusBar.getRight() - right;

        mLocationPublisher.updateStatusBarMargin(leftMargin, rightMargin);
    }

    private final ContentObserver mVolumeSettingObserver = new ContentObserver(null) {
        @Override
        public void onChange(boolean selfChange) {
@@ -991,14 +977,6 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
        }
    };

    // Listen for view end changes of PhoneStatusBarView and publish that to the privacy dot
    private View.OnLayoutChangeListener mStatusBarLayoutListener =
            (view, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> {
                if (left != oldLeft || right != oldRight) {
                    updateStatusBarLocation(left, right);
                }
            };

    @Override
    public void dump(PrintWriter printWriter, String[] args) {
        IndentingPrintWriter pw = new IndentingPrintWriter(printWriter, /* singleIndent= */"  ");
+0 −4
Original line number Diff line number Diff line
@@ -66,7 +66,6 @@ import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler;
import com.android.systemui.statusbar.notification.icon.ui.viewbinder.NotificationIconContainerStatusBarViewBinder;
import com.android.systemui.statusbar.phone.HeadsUpAppearanceController;
import com.android.systemui.statusbar.phone.StatusBarHideIconsForBouncerManager;
import com.android.systemui.statusbar.phone.StatusBarLocationPublisher;
import com.android.systemui.statusbar.phone.fragment.dagger.StatusBarFragmentComponent;
import com.android.systemui.statusbar.phone.ongoingcall.OngoingCallController;
import com.android.systemui.statusbar.phone.ui.DarkIconManager;
@@ -98,7 +97,6 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest {
    private ShadeExpansionStateManager mShadeExpansionStateManager;
    private OngoingCallController mOngoingCallController;
    private SystemStatusAnimationScheduler mAnimationScheduler;
    private StatusBarLocationPublisher mLocationPublisher;
    // Set in instantiate()
    private StatusBarIconController mStatusBarIconController;
    private KeyguardStateController mKeyguardStateController;
@@ -1181,7 +1179,6 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest {
        setUpDaggerComponent();
        mOngoingCallController = mock(OngoingCallController.class);
        mAnimationScheduler = mock(SystemStatusAnimationScheduler.class);
        mLocationPublisher = mock(StatusBarLocationPublisher.class);
        mStatusBarIconController = mock(StatusBarIconController.class);
        mStatusBarStateController = mock(StatusBarStateController.class);
        mKeyguardStateController = mock(KeyguardStateController.class);
@@ -1200,7 +1197,6 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest {
                mStatusBarFragmentComponentFactory,
                mOngoingCallController,
                mAnimationScheduler,
                mLocationPublisher,
                mShadeExpansionStateManager,
                mStatusBarIconController,
                mIconManagerFactory,