Loading packages/SystemUI/plugin/src/com/android/systemui/plugins/doze/DozeProvider.javadeleted 100644 → 0 +0 −102 Original line number Diff line number Diff line /* * Copyright (C) 2016 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.plugins.doze; import android.app.PendingIntent; import android.content.Context; import com.android.systemui.plugins.Plugin; import com.android.systemui.plugins.annotations.ProvidesInterface; /** * Provides a {@link DozeUi}. */ @ProvidesInterface(action = DozeProvider.ACTION, version = DozeProvider.VERSION) public interface DozeProvider extends Plugin { String ACTION = "com.android.systemui.action.PLUGIN_DOZE"; int VERSION = 1; /** * Caution: Even if this is called, the DozeUi provided may still be in use until it transitions * to DozeState.FINISH */ @Override default void onDestroy() { } /** * @return the plugin's implementation of DozeUi. */ DozeUi provideDozeUi(Context context, DozeMachine machine, WakeLock wakeLock); /** * If true, the plugin allows the default pulse triggers to fire, otherwise they are disabled. */ default boolean allowDefaultPulseTriggers() { return false; } /** * Ui for use in DozeMachine. */ interface DozeUi { /** Called whenever the DozeMachine state transitions */ void transitionTo(DozeState oldState, DozeState newState); } /** WakeLock wrapper for testability */ interface WakeLock { /** @see android.os.PowerManager.WakeLock#acquire() */ void acquire(); /** @see android.os.PowerManager.WakeLock#release() */ void release(); /** @see android.os.PowerManager.WakeLock#wrap(Runnable) */ Runnable wrap(Runnable r); } /** Plugin version of the DozeMachine's state */ enum DozeState { /** Default state. Transition to INITIALIZED to get Doze going. */ UNINITIALIZED, /** Doze components are set up. Followed by transition to DOZE or DOZE_AOD. */ INITIALIZED, /** Regular doze. Device is asleep and listening for pulse triggers. */ DOZE, /** Always-on doze. Device is asleep, showing UI and listening for pulse triggers. */ DOZE_AOD, /** Pulse has been requested. Device is awake and preparing UI */ DOZE_REQUEST_PULSE, /** Pulse is showing. Device is awake and showing UI. */ DOZE_PULSING, /** Pulse is done showing. Followed by transition to DOZE or DOZE_AOD. */ DOZE_PULSE_DONE, /** Doze is done. DozeService is finished. */ FINISH, /** WakeUp. */ WAKE_UP, } /** Plugin interface for the doze machine. */ interface DozeMachine { /** Request that the DozeMachine transitions to {@code state} */ void requestState(DozeState state); /** Request that the PendingIntent is sent. */ void requestSendIntent(PendingIntent intent); } } packages/SystemUI/src/com/android/systemui/doze/DozeFactory.java +3 −83 Original line number Diff line number Diff line Loading @@ -18,24 +18,19 @@ package com.android.systemui.doze; import android.app.AlarmManager; import android.app.Application; import android.app.PendingIntent; import android.content.Context; import android.hardware.SensorManager; import android.os.Handler; import com.android.internal.hardware.AmbientDisplayConfiguration; import com.android.systemui.SystemUIApplication; import com.android.systemui.plugins.doze.DozeProvider; import com.android.systemui.statusbar.phone.DozeParameters; import com.android.systemui.util.wakelock.DelayedWakeLock; import com.android.systemui.util.wakelock.WakeLock; public class DozeFactory { private final DozeProvider mDozePlugin; public DozeFactory(DozeProvider plugin) { mDozePlugin = plugin; public DozeFactory() { } /** Creates a DozeMachine with its parts for {@code dozeService}. */ Loading Loading @@ -68,90 +63,15 @@ public class DozeFactory { private DozeTriggers createDozeTriggers(Context context, SensorManager sensorManager, DozeHost host, AmbientDisplayConfiguration config, DozeParameters params, Handler handler, WakeLock wakeLock, DozeMachine machine) { boolean allowPulseTriggers = mDozePlugin == null || mDozePlugin.allowDefaultPulseTriggers(); boolean allowPulseTriggers = true; return new DozeTriggers(context, machine, host, config, params, sensorManager, handler, wakeLock, allowPulseTriggers); } private DozeMachine.Part createDozeUi(Context context, DozeHost host, WakeLock wakeLock, DozeMachine machine, Handler handler, AlarmManager alarmManager) { if (mDozePlugin != null) { DozeProvider.DozeUi dozeUi = mDozePlugin.provideDozeUi(context, pluginMachine(context, machine, host), wakeLock); return (oldState, newState) -> { dozeUi.transitionTo(pluginState(oldState), pluginState(newState)); }; } else { return new DozeUi(context, alarmManager, machine, wakeLock, host, handler); } } private DozeProvider.DozeMachine pluginMachine(Context context, DozeMachine machine, DozeHost host) { return new DozeProvider.DozeMachine() { @Override public void requestState(DozeProvider.DozeState state) { if (state == DozeProvider.DozeState.WAKE_UP) { machine.wakeUp(); return; } machine.requestState(implState(state)); } @Override public void requestSendIntent(PendingIntent intent) { host.startPendingIntentDismissingKeyguard(intent); } }; } private DozeMachine.State implState(DozeProvider.DozeState s) { switch (s) { case UNINITIALIZED: return DozeMachine.State.UNINITIALIZED; case INITIALIZED: return DozeMachine.State.INITIALIZED; case DOZE: return DozeMachine.State.DOZE; case DOZE_AOD: return DozeMachine.State.DOZE_AOD; case DOZE_REQUEST_PULSE: return DozeMachine.State.DOZE_REQUEST_PULSE; case DOZE_PULSING: return DozeMachine.State.DOZE_PULSING; case DOZE_PULSE_DONE: return DozeMachine.State.DOZE_PULSE_DONE; case FINISH: return DozeMachine.State.FINISH; default: throw new IllegalArgumentException("Unknown state: " + s); } } private DozeProvider.DozeState pluginState(DozeMachine.State s) { switch (s) { case UNINITIALIZED: return DozeProvider.DozeState.UNINITIALIZED; case INITIALIZED: return DozeProvider.DozeState.INITIALIZED; case DOZE: return DozeProvider.DozeState.DOZE; case DOZE_AOD: return DozeProvider.DozeState.DOZE_AOD; case DOZE_REQUEST_PULSE: return DozeProvider.DozeState.DOZE_REQUEST_PULSE; case DOZE_PULSING: return DozeProvider.DozeState.DOZE_PULSING; case DOZE_PULSE_DONE: return DozeProvider.DozeState.DOZE_PULSE_DONE; case FINISH: return DozeProvider.DozeState.FINISH; default: throw new IllegalArgumentException("Unknown state: " + s); } } public static DozeHost getHost(DozeService service) { Application appCandidate = service.getApplication(); Loading packages/SystemUI/src/com/android/systemui/doze/DozeService.java +1 −4 Original line number Diff line number Diff line Loading @@ -24,7 +24,6 @@ import android.util.Log; import com.android.systemui.Dependency; import com.android.systemui.plugins.Plugin; import com.android.systemui.plugins.PluginManager; import com.android.systemui.plugins.doze.DozeProvider; import java.io.FileDescriptor; import java.io.PrintWriter; Loading @@ -50,9 +49,7 @@ public class DozeService extends DreamService implements DozeMachine.Service { return; } DozeProvider provider = Dependency.get(PluginManager.class) .getOneShotPlugin(DozeProvider.class); mDozeMachine = new DozeFactory(provider).assembleMachine(this); mDozeMachine = new DozeFactory().assembleMachine(this); } @Override Loading packages/SystemUI/src/com/android/systemui/util/wakelock/WakeLock.java +10 −3 Original line number Diff line number Diff line Loading @@ -20,10 +20,17 @@ import android.content.Context; import android.os.PowerManager; import android.support.annotation.VisibleForTesting; import com.android.systemui.plugins.doze.DozeProvider; /** WakeLock wrapper for testability */ public interface WakeLock extends DozeProvider.WakeLock { public interface WakeLock { /** @see android.os.PowerManager.WakeLock#acquire() */ void acquire(); /** @see android.os.PowerManager.WakeLock#release() */ void release(); /** @see android.os.PowerManager.WakeLock#wrap(Runnable) */ Runnable wrap(Runnable r); static WakeLock createPartial(Context context, String tag) { return wrap(createPartialInner(context, tag)); Loading Loading
packages/SystemUI/plugin/src/com/android/systemui/plugins/doze/DozeProvider.javadeleted 100644 → 0 +0 −102 Original line number Diff line number Diff line /* * Copyright (C) 2016 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.plugins.doze; import android.app.PendingIntent; import android.content.Context; import com.android.systemui.plugins.Plugin; import com.android.systemui.plugins.annotations.ProvidesInterface; /** * Provides a {@link DozeUi}. */ @ProvidesInterface(action = DozeProvider.ACTION, version = DozeProvider.VERSION) public interface DozeProvider extends Plugin { String ACTION = "com.android.systemui.action.PLUGIN_DOZE"; int VERSION = 1; /** * Caution: Even if this is called, the DozeUi provided may still be in use until it transitions * to DozeState.FINISH */ @Override default void onDestroy() { } /** * @return the plugin's implementation of DozeUi. */ DozeUi provideDozeUi(Context context, DozeMachine machine, WakeLock wakeLock); /** * If true, the plugin allows the default pulse triggers to fire, otherwise they are disabled. */ default boolean allowDefaultPulseTriggers() { return false; } /** * Ui for use in DozeMachine. */ interface DozeUi { /** Called whenever the DozeMachine state transitions */ void transitionTo(DozeState oldState, DozeState newState); } /** WakeLock wrapper for testability */ interface WakeLock { /** @see android.os.PowerManager.WakeLock#acquire() */ void acquire(); /** @see android.os.PowerManager.WakeLock#release() */ void release(); /** @see android.os.PowerManager.WakeLock#wrap(Runnable) */ Runnable wrap(Runnable r); } /** Plugin version of the DozeMachine's state */ enum DozeState { /** Default state. Transition to INITIALIZED to get Doze going. */ UNINITIALIZED, /** Doze components are set up. Followed by transition to DOZE or DOZE_AOD. */ INITIALIZED, /** Regular doze. Device is asleep and listening for pulse triggers. */ DOZE, /** Always-on doze. Device is asleep, showing UI and listening for pulse triggers. */ DOZE_AOD, /** Pulse has been requested. Device is awake and preparing UI */ DOZE_REQUEST_PULSE, /** Pulse is showing. Device is awake and showing UI. */ DOZE_PULSING, /** Pulse is done showing. Followed by transition to DOZE or DOZE_AOD. */ DOZE_PULSE_DONE, /** Doze is done. DozeService is finished. */ FINISH, /** WakeUp. */ WAKE_UP, } /** Plugin interface for the doze machine. */ interface DozeMachine { /** Request that the DozeMachine transitions to {@code state} */ void requestState(DozeState state); /** Request that the PendingIntent is sent. */ void requestSendIntent(PendingIntent intent); } }
packages/SystemUI/src/com/android/systemui/doze/DozeFactory.java +3 −83 Original line number Diff line number Diff line Loading @@ -18,24 +18,19 @@ package com.android.systemui.doze; import android.app.AlarmManager; import android.app.Application; import android.app.PendingIntent; import android.content.Context; import android.hardware.SensorManager; import android.os.Handler; import com.android.internal.hardware.AmbientDisplayConfiguration; import com.android.systemui.SystemUIApplication; import com.android.systemui.plugins.doze.DozeProvider; import com.android.systemui.statusbar.phone.DozeParameters; import com.android.systemui.util.wakelock.DelayedWakeLock; import com.android.systemui.util.wakelock.WakeLock; public class DozeFactory { private final DozeProvider mDozePlugin; public DozeFactory(DozeProvider plugin) { mDozePlugin = plugin; public DozeFactory() { } /** Creates a DozeMachine with its parts for {@code dozeService}. */ Loading Loading @@ -68,90 +63,15 @@ public class DozeFactory { private DozeTriggers createDozeTriggers(Context context, SensorManager sensorManager, DozeHost host, AmbientDisplayConfiguration config, DozeParameters params, Handler handler, WakeLock wakeLock, DozeMachine machine) { boolean allowPulseTriggers = mDozePlugin == null || mDozePlugin.allowDefaultPulseTriggers(); boolean allowPulseTriggers = true; return new DozeTriggers(context, machine, host, config, params, sensorManager, handler, wakeLock, allowPulseTriggers); } private DozeMachine.Part createDozeUi(Context context, DozeHost host, WakeLock wakeLock, DozeMachine machine, Handler handler, AlarmManager alarmManager) { if (mDozePlugin != null) { DozeProvider.DozeUi dozeUi = mDozePlugin.provideDozeUi(context, pluginMachine(context, machine, host), wakeLock); return (oldState, newState) -> { dozeUi.transitionTo(pluginState(oldState), pluginState(newState)); }; } else { return new DozeUi(context, alarmManager, machine, wakeLock, host, handler); } } private DozeProvider.DozeMachine pluginMachine(Context context, DozeMachine machine, DozeHost host) { return new DozeProvider.DozeMachine() { @Override public void requestState(DozeProvider.DozeState state) { if (state == DozeProvider.DozeState.WAKE_UP) { machine.wakeUp(); return; } machine.requestState(implState(state)); } @Override public void requestSendIntent(PendingIntent intent) { host.startPendingIntentDismissingKeyguard(intent); } }; } private DozeMachine.State implState(DozeProvider.DozeState s) { switch (s) { case UNINITIALIZED: return DozeMachine.State.UNINITIALIZED; case INITIALIZED: return DozeMachine.State.INITIALIZED; case DOZE: return DozeMachine.State.DOZE; case DOZE_AOD: return DozeMachine.State.DOZE_AOD; case DOZE_REQUEST_PULSE: return DozeMachine.State.DOZE_REQUEST_PULSE; case DOZE_PULSING: return DozeMachine.State.DOZE_PULSING; case DOZE_PULSE_DONE: return DozeMachine.State.DOZE_PULSE_DONE; case FINISH: return DozeMachine.State.FINISH; default: throw new IllegalArgumentException("Unknown state: " + s); } } private DozeProvider.DozeState pluginState(DozeMachine.State s) { switch (s) { case UNINITIALIZED: return DozeProvider.DozeState.UNINITIALIZED; case INITIALIZED: return DozeProvider.DozeState.INITIALIZED; case DOZE: return DozeProvider.DozeState.DOZE; case DOZE_AOD: return DozeProvider.DozeState.DOZE_AOD; case DOZE_REQUEST_PULSE: return DozeProvider.DozeState.DOZE_REQUEST_PULSE; case DOZE_PULSING: return DozeProvider.DozeState.DOZE_PULSING; case DOZE_PULSE_DONE: return DozeProvider.DozeState.DOZE_PULSE_DONE; case FINISH: return DozeProvider.DozeState.FINISH; default: throw new IllegalArgumentException("Unknown state: " + s); } } public static DozeHost getHost(DozeService service) { Application appCandidate = service.getApplication(); Loading
packages/SystemUI/src/com/android/systemui/doze/DozeService.java +1 −4 Original line number Diff line number Diff line Loading @@ -24,7 +24,6 @@ import android.util.Log; import com.android.systemui.Dependency; import com.android.systemui.plugins.Plugin; import com.android.systemui.plugins.PluginManager; import com.android.systemui.plugins.doze.DozeProvider; import java.io.FileDescriptor; import java.io.PrintWriter; Loading @@ -50,9 +49,7 @@ public class DozeService extends DreamService implements DozeMachine.Service { return; } DozeProvider provider = Dependency.get(PluginManager.class) .getOneShotPlugin(DozeProvider.class); mDozeMachine = new DozeFactory(provider).assembleMachine(this); mDozeMachine = new DozeFactory().assembleMachine(this); } @Override Loading
packages/SystemUI/src/com/android/systemui/util/wakelock/WakeLock.java +10 −3 Original line number Diff line number Diff line Loading @@ -20,10 +20,17 @@ import android.content.Context; import android.os.PowerManager; import android.support.annotation.VisibleForTesting; import com.android.systemui.plugins.doze.DozeProvider; /** WakeLock wrapper for testability */ public interface WakeLock extends DozeProvider.WakeLock { public interface WakeLock { /** @see android.os.PowerManager.WakeLock#acquire() */ void acquire(); /** @see android.os.PowerManager.WakeLock#release() */ void release(); /** @see android.os.PowerManager.WakeLock#wrap(Runnable) */ Runnable wrap(Runnable r); static WakeLock createPartial(Context context, String tag) { return wrap(createPartialInner(context, tag)); Loading