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

Commit 9d20bed9 authored by Selim Cinek's avatar Selim Cinek
Browse files

Allow for injection in StatusBar Views

Previously, StatusBar was unable to have any views with injection
due to dagger. We're now allowing for member injection in the
top level StatusBar class and any views inflated.
Once most members are migrated from Dependency we can fully migrate
to the new dependency injection.

Bug: 111414690
Test: atest SystemUITests
Change-Id: I988dc4426c2183955a467e9ea7f7ee7acf6f3019
parent c220f6d7
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@ package com.android.systemui;

import android.util.Log;

import com.android.systemui.statusbar.phone.StatusBar;

import java.io.FileDescriptor;
import java.io.PrintWriter;

@@ -63,6 +65,11 @@ public class SystemBars extends SystemUI {
        }
        mStatusBar.mContext = mContext;
        mStatusBar.mComponents = mComponents;
        if (mStatusBar instanceof StatusBar) {
            SystemUIFactory.getInstance().getRootComponent()
                    .getStatusBarInjector()
                    .createStatusBar((StatusBar) mStatusBar);
        }
        mStatusBar.start();
        if (DEBUG) Log.d(TAG, "started " + mStatusBar.getClass().getSimpleName());
    }
+3 −0
Original line number Diff line number Diff line
@@ -228,6 +228,9 @@ public class SystemUIFactory {
        @Singleton
        Dependency.DependencyInjector createDependency();

        @Singleton
        StatusBar.StatusBarInjector getStatusBarInjector();

        /**
         * FragmentCreator generates all Fragments that need injection.
         */
+14 −2
Original line number Diff line number Diff line
@@ -220,6 +220,7 @@ import com.android.systemui.statusbar.policy.UserInfoController;
import com.android.systemui.statusbar.policy.UserInfoControllerImpl;
import com.android.systemui.statusbar.policy.UserSwitcherController;
import com.android.systemui.statusbar.policy.ZenModeController;
import com.android.systemui.util.InjectionInflationController;
import com.android.systemui.volume.VolumeComponent;

import java.io.FileDescriptor;
@@ -228,6 +229,10 @@ import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Map;

import javax.inject.Inject;

import dagger.Subcomponent;

public class StatusBar extends SystemUI implements DemoMode,
        ActivityStarter, OnUnlockMethodChangedListener,
        OnHeadsUpChangedListener, CommandQueue.Callbacks, ZenModeController.Callback,
@@ -353,6 +358,8 @@ public class StatusBar extends SystemUI implements DemoMode,
    private final Object mQueueLock = new Object();

    protected StatusBarIconController mIconController;
    @Inject
    InjectionInflationController mInjectionInflater;

    // expanded notifications
    protected NotificationPanelView mNotificationPanel; // the sliding/resizing panel within the notification window
@@ -1196,8 +1203,8 @@ public class StatusBar extends SystemUI implements DemoMode,
    }

    protected void inflateStatusBarWindow(Context context) {
        mStatusBarWindow = (StatusBarWindowView) View.inflate(context,
                R.layout.super_status_bar, null);
        mStatusBarWindow = (StatusBarWindowView) mInjectionInflater.injectable(
                LayoutInflater.from(context)).inflate(R.layout.super_status_bar, null);
    }

    protected void startKeyguard() {
@@ -4504,4 +4511,9 @@ public class StatusBar extends SystemUI implements DemoMode,
    public NotificationGutsManager getGutsManager() {
        return mGutsManager;
    }

    @Subcomponent
    public interface StatusBarInjector {
        void createStatusBar(StatusBar statusbar);
    }
}
+4 −0
Original line number Diff line number Diff line
@@ -67,6 +67,7 @@ import com.android.systemui.Dependency;
import com.android.systemui.ForegroundServiceController;
import com.android.systemui.InitController;
import com.android.systemui.R;
import com.android.systemui.SystemUIFactory;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.UiOffloadThread;
import com.android.systemui.appops.AppOpsController;
@@ -242,6 +243,9 @@ public class StatusBarTest extends SysuiTestCase {
                mock(BubbleController.class));
        mStatusBar.mContext = mContext;
        mStatusBar.mComponents = mContext.getComponents();
        SystemUIFactory.getInstance().getRootComponent()
                .getStatusBarInjector()
                .createStatusBar(mStatusBar);
        mStatusBar.putComponent(StatusBar.class, mStatusBar);
        Dependency.get(InitController.class).executePostInitTasks();
        mEntryManager.setUpForTest(mock(NotificationPresenter.class), mStackScroller,