Merge "DozePlugin: Remove" into oc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
b2484f2258
@@ -1,102 +0,0 @@
|
||||
/*
|
||||
* 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);
|
||||
}
|
||||
}
|
||||
@@ -18,23 +18,18 @@ 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.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}. */
|
||||
@@ -65,89 +60,14 @@ 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);
|
||||
}
|
||||
return new DozeUi(context, alarmManager, machine, wakeLock, host, handler);
|
||||
}
|
||||
|
||||
public static DozeHost getHost(DozeService service) {
|
||||
|
||||
@@ -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;
|
||||
@@ -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
|
||||
|
||||
@@ -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));
|
||||
|
||||
Reference in New Issue
Block a user