Merge "DozePlugin: Remove" into oc-dev

This commit is contained in:
TreeHugger Robot
2017-05-03 13:43:14 +00:00
committed by Android (Google) Code Review
4 changed files with 14 additions and 192 deletions

View File

@@ -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);
}
}

View File

@@ -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) {

View File

@@ -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

View File

@@ -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));