diff options
4 files changed, 99 insertions, 51 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/pip/tv/PipControlsViewController.java b/packages/SystemUI/src/com/android/systemui/pip/tv/PipControlsViewController.java index 4ecd52f8adf5..2f4df1fcbe20 100644 --- a/packages/SystemUI/src/com/android/systemui/pip/tv/PipControlsViewController.java +++ b/packages/SystemUI/src/com/android/systemui/pip/tv/PipControlsViewController.java @@ -36,6 +36,8 @@ import java.util.Optional; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; +import javax.inject.Inject; + /** * Controller for {@link PipControlsView}. */ @@ -108,7 +110,7 @@ public class PipControlsViewController { } }; - + @Inject public PipControlsViewController(PipControlsView view, Optional<Pip> pipOptional, LayoutInflater layoutInflater, @Main Handler handler) { super(); diff --git a/packages/SystemUI/src/com/android/systemui/pip/tv/dagger/TvPipModule.java b/packages/SystemUI/src/com/android/systemui/pip/tv/dagger/TvPipModule.java new file mode 100644 index 000000000000..e8e392069ea7 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/pip/tv/dagger/TvPipModule.java @@ -0,0 +1,92 @@ +/* + * Copyright (C) 2019 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.pip.tv.dagger; + +import android.app.Activity; +import android.content.Context; + +import com.android.systemui.broadcast.BroadcastDispatcher; +import com.android.systemui.dagger.SysUISingleton; +import com.android.systemui.pip.Pip; +import com.android.systemui.pip.PipBoundsHandler; +import com.android.systemui.pip.PipSurfaceTransactionHelper; +import com.android.systemui.pip.PipTaskOrganizer; +import com.android.systemui.pip.PipUiEventLogger; +import com.android.systemui.pip.tv.PipController; +import com.android.systemui.pip.tv.PipMenuActivity; +import com.android.systemui.pip.tv.PipNotification; +import com.android.wm.shell.ShellTaskOrganizer; +import com.android.wm.shell.common.DisplayController; +import com.android.wm.shell.splitscreen.SplitScreen; + +import java.util.Optional; + +import dagger.Binds; +import dagger.Module; +import dagger.Provides; +import dagger.multibindings.ClassKey; +import dagger.multibindings.IntoMap; + +/** + * Dagger module for TV Pip. + */ +@Module(subcomponents = {TvPipComponent.class}) +public abstract class TvPipModule { + + /** Inject into PipMenuActivity. */ + @Binds + @IntoMap + @ClassKey(PipMenuActivity.class) + public abstract Activity providePipMenuActivity(PipMenuActivity activity); + + @SysUISingleton + @Provides + static Pip providePipController(Context context, + BroadcastDispatcher broadcastDispatcher, + PipBoundsHandler pipBoundsHandler, + PipSurfaceTransactionHelper pipSurfaceTransactionHelper, + PipTaskOrganizer pipTaskOrganizer) { + return new PipController(context, broadcastDispatcher, pipBoundsHandler, + pipSurfaceTransactionHelper, pipTaskOrganizer); + } + + @SysUISingleton + @Provides + static PipNotification providePipNotification(Context context, + BroadcastDispatcher broadcastDispatcher, + PipController pipController) { + return new PipNotification(context, broadcastDispatcher, pipController); + } + + @SysUISingleton + @Provides + static PipBoundsHandler providesPipBoundsHandler(Context context) { + return new PipBoundsHandler(context); + } + + @SysUISingleton + @Provides + static PipTaskOrganizer providesPipTaskOrganizer(Context context, + PipBoundsHandler pipBoundsHandler, + PipSurfaceTransactionHelper pipSurfaceTransactionHelper, + Optional<SplitScreen> splitScreenOptional, DisplayController displayController, + PipUiEventLogger pipUiEventLogger, ShellTaskOrganizer shellTaskOrganizer) { + return new PipTaskOrganizer(context, pipBoundsHandler, + pipSurfaceTransactionHelper, splitScreenOptional, displayController, + pipUiEventLogger, shellTaskOrganizer); + } +} diff --git a/packages/SystemUI/src/com/android/systemui/tv/TvSystemUIBinder.java b/packages/SystemUI/src/com/android/systemui/tv/TvSystemUIBinder.java index 22fa0106795a..f277b30e589d 100644 --- a/packages/SystemUI/src/com/android/systemui/tv/TvSystemUIBinder.java +++ b/packages/SystemUI/src/com/android/systemui/tv/TvSystemUIBinder.java @@ -17,11 +17,12 @@ package com.android.systemui.tv; import com.android.systemui.dagger.GlobalRootComponent; +import com.android.systemui.pip.tv.dagger.TvPipModule; import dagger.Binds; import dagger.Module; -@Module() +@Module(includes = TvPipModule.class) interface TvSystemUIBinder { @Binds GlobalRootComponent bindGlobalRootComponent(TvGlobalRootComponent globalRootComponent); diff --git a/packages/SystemUI/src/com/android/systemui/wmshell/TvWMShellModule.java b/packages/SystemUI/src/com/android/systemui/wmshell/TvWMShellModule.java index 0869cf739d02..524eca389ceb 100644 --- a/packages/SystemUI/src/com/android/systemui/wmshell/TvWMShellModule.java +++ b/packages/SystemUI/src/com/android/systemui/wmshell/TvWMShellModule.java @@ -20,17 +20,9 @@ import android.content.Context; import android.os.Handler; import android.view.IWindowManager; -import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dagger.qualifiers.Main; -import com.android.systemui.pip.Pip; -import com.android.systemui.pip.PipBoundsHandler; -import com.android.systemui.pip.PipSurfaceTransactionHelper; -import com.android.systemui.pip.PipTaskOrganizer; -import com.android.systemui.pip.PipUiEventLogger; -import com.android.systemui.pip.tv.PipController; -import com.android.systemui.pip.tv.PipNotification; -import com.android.systemui.pip.tv.dagger.TvPipComponent; +import com.android.systemui.pip.tv.dagger.TvPipModule; import com.android.wm.shell.ShellTaskOrganizer; import com.android.wm.shell.common.DisplayController; import com.android.wm.shell.common.DisplayImeController; @@ -39,8 +31,6 @@ import com.android.wm.shell.common.TransactionPool; import com.android.wm.shell.splitscreen.SplitScreen; import com.android.wm.shell.splitscreen.SplitScreenController; -import java.util.Optional; - import dagger.Module; import dagger.Provides; @@ -49,7 +39,7 @@ import dagger.Provides; * branches of SystemUI. */ // TODO(b/162923491): Move most of these dependencies into WMSingleton scope. -@Module(includes = WMShellBaseModule.class, subcomponents = {TvPipComponent.class}) +@Module(includes = {WMShellBaseModule.class, TvPipModule.class}) public class TvWMShellModule { @SysUISingleton @Provides @@ -61,17 +51,6 @@ public class TvWMShellModule { @SysUISingleton @Provides - static Pip providePipController(Context context, - BroadcastDispatcher broadcastDispatcher, - PipBoundsHandler pipBoundsHandler, - PipSurfaceTransactionHelper pipSurfaceTransactionHelper, - PipTaskOrganizer pipTaskOrganizer) { - return new PipController(context, broadcastDispatcher, pipBoundsHandler, - pipSurfaceTransactionHelper, pipTaskOrganizer); - } - - @SysUISingleton - @Provides static SplitScreen provideSplitScreen(Context context, DisplayController displayController, SystemWindows systemWindows, DisplayImeController displayImeController, @Main Handler handler, @@ -79,30 +58,4 @@ public class TvWMShellModule { return new SplitScreenController(context, displayController, systemWindows, displayImeController, handler, transactionPool, shellTaskOrganizer); } - - @SysUISingleton - @Provides - static PipNotification providePipNotification(Context context, - BroadcastDispatcher broadcastDispatcher, - PipController pipController) { - return new PipNotification(context, broadcastDispatcher, pipController); - } - - @SysUISingleton - @Provides - static PipBoundsHandler providesPipBoundsHandler(Context context) { - return new PipBoundsHandler(context); - } - - @SysUISingleton - @Provides - static PipTaskOrganizer providesPipTaskOrganizer(Context context, - PipBoundsHandler pipBoundsHandler, - PipSurfaceTransactionHelper pipSurfaceTransactionHelper, - Optional<SplitScreen> splitScreenOptional, DisplayController displayController, - PipUiEventLogger pipUiEventLogger, ShellTaskOrganizer shellTaskOrganizer) { - return new PipTaskOrganizer(context, pipBoundsHandler, - pipSurfaceTransactionHelper, splitScreenOptional, displayController, - pipUiEventLogger, shellTaskOrganizer); - } } |