• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2020 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.log.dagger;
18 
19 import android.content.ContentResolver;
20 import android.os.Build;
21 import android.os.Looper;
22 
23 import com.android.systemui.dagger.qualifiers.Main;
24 import com.android.systemui.dump.DumpManager;
25 import com.android.systemui.log.LogBuffer;
26 import com.android.systemui.log.LogcatEchoTracker;
27 import com.android.systemui.log.LogcatEchoTrackerDebug;
28 import com.android.systemui.log.LogcatEchoTrackerProd;
29 
30 import javax.inject.Singleton;
31 
32 import dagger.Module;
33 import dagger.Provides;
34 
35 /**
36  * Dagger module for providing instances of {@link LogBuffer}.
37  */
38 @Module
39 public class LogModule {
40     /** Provides a logging buffer for doze-related logs. */
41     @Provides
42     @Singleton
43     @DozeLog
provideDozeLogBuffer( LogcatEchoTracker bufferFilter, DumpManager dumpManager)44     public static LogBuffer provideDozeLogBuffer(
45             LogcatEchoTracker bufferFilter,
46             DumpManager dumpManager) {
47         LogBuffer buffer = new LogBuffer("DozeLog", 100, 10, bufferFilter);
48         buffer.attach(dumpManager);
49         return buffer;
50     }
51 
52     /** Provides a logging buffer for all logs related to the data layer of notifications. */
53     @Provides
54     @Singleton
55     @NotificationLog
provideNotificationsLogBuffer( LogcatEchoTracker bufferFilter, DumpManager dumpManager)56     public static LogBuffer provideNotificationsLogBuffer(
57             LogcatEchoTracker bufferFilter,
58             DumpManager dumpManager) {
59         LogBuffer buffer = new LogBuffer("NotifLog", 1000, 10, bufferFilter);
60         buffer.attach(dumpManager);
61         return buffer;
62     }
63 
64     /** Provides a logging buffer for all logs related to managing notification sections. */
65     @Provides
66     @Singleton
67     @NotificationSectionLog
provideNotificationSectionLogBuffer( LogcatEchoTracker bufferFilter, DumpManager dumpManager)68     public static LogBuffer provideNotificationSectionLogBuffer(
69             LogcatEchoTracker bufferFilter,
70             DumpManager dumpManager) {
71         LogBuffer buffer = new LogBuffer("NotifSectionLog", 1000, 10, bufferFilter);
72         buffer.attach(dumpManager);
73         return buffer;
74     }
75 
76     /** Provides a logging buffer for all logs related to the data layer of notifications. */
77     @Provides
78     @Singleton
79     @NotifInteractionLog
provideNotifInteractionLogBuffer( LogcatEchoTracker echoTracker, DumpManager dumpManager)80     public static LogBuffer provideNotifInteractionLogBuffer(
81             LogcatEchoTracker echoTracker,
82             DumpManager dumpManager) {
83         LogBuffer buffer = new LogBuffer("NotifInteractionLog", 50, 10, echoTracker);
84         buffer.attach(dumpManager);
85         return buffer;
86     }
87 
88     /** Provides a logging buffer for all logs related to Quick Settings. */
89     @Provides
90     @Singleton
91     @QSLog
provideQuickSettingsLogBuffer( LogcatEchoTracker bufferFilter, DumpManager dumpManager)92     public static LogBuffer provideQuickSettingsLogBuffer(
93             LogcatEchoTracker bufferFilter,
94             DumpManager dumpManager) {
95         LogBuffer buffer = new LogBuffer("QSLog", 500, 10, bufferFilter);
96         buffer.attach(dumpManager);
97         return buffer;
98     }
99 
100     /** Provides a logging buffer for {@link com.android.systemui.broadcast.BroadcastDispatcher} */
101     @Provides
102     @Singleton
103     @BroadcastDispatcherLog
provideBroadcastDispatcherLogBuffer( LogcatEchoTracker bufferFilter, DumpManager dumpManager)104     public static LogBuffer provideBroadcastDispatcherLogBuffer(
105             LogcatEchoTracker bufferFilter,
106             DumpManager dumpManager) {
107         LogBuffer buffer = new LogBuffer("BroadcastDispatcherLog", 500, 10, bufferFilter);
108         buffer.attach(dumpManager);
109         return buffer;
110     }
111 
112     /** Allows logging buffers to be tweaked via adb on debug builds but not on prod builds. */
113     @Provides
114     @Singleton
provideLogcatEchoTracker( ContentResolver contentResolver, @Main Looper looper)115     public static LogcatEchoTracker provideLogcatEchoTracker(
116             ContentResolver contentResolver,
117             @Main Looper looper) {
118         if (Build.IS_DEBUGGABLE) {
119             return LogcatEchoTrackerDebug.create(contentResolver, looper);
120         } else {
121             return new LogcatEchoTrackerProd();
122         }
123     }
124 }
125