1 /*
2  * Copyright (C) 2022 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.systemui.motiontool
18 
19 import android.view.WindowManagerGlobal
20 import com.android.app.motiontool.DdmHandleMotionTool
21 import com.android.app.motiontool.MotionToolManager
22 import com.android.systemui.CoreStartable
23 import dagger.Binds
24 import dagger.Module
25 import dagger.Provides
26 import dagger.multibindings.ClassKey
27 import dagger.multibindings.IntoMap
28 
29 @Module
30 interface MotionToolModule {
31 
32     companion object {
33 
34         @Provides
provideDdmHandleMotionToolnull35         fun provideDdmHandleMotionTool(motionToolManager: MotionToolManager): DdmHandleMotionTool {
36             return DdmHandleMotionTool.getInstance(motionToolManager)
37         }
38 
39         @Provides
provideMotionToolManagernull40         fun provideMotionToolManager(windowManagerGlobal: WindowManagerGlobal): MotionToolManager {
41             return MotionToolManager.getInstance(windowManagerGlobal)
42         }
43 
44         @Provides
provideWindowManagerGlobalnull45         fun provideWindowManagerGlobal(): WindowManagerGlobal = WindowManagerGlobal.getInstance()
46     }
47 
48     @Binds
49     @IntoMap
50     @ClassKey(MotionToolStartable::class)
51     fun bindMotionToolStartable(impl: MotionToolStartable): CoreStartable
52 }
53