/*
 * 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.statusbar;

import android.content.Context;

import com.android.systemui.statusbar.notification.row.NotificationRowModule;

import javax.inject.Singleton;

import dagger.Module;
import dagger.Provides;

/**
 * Dagger Module providing common dependencies of StatusBar.
 */
@Module(includes = {NotificationRowModule.class})
public class StatusBarDependenciesModule {
    /**
     * Provides our instance of CommandQueue which is considered optional.
     */
    @Provides
    @Singleton
    public CommandQueue provideCommandQueue(Context context) {
        return new CommandQueue(context);
    }

}
