Merge "sysui: small refactor and delete dead code"
diff --git a/core/jni/Android.mk b/core/jni/Android.mk
index fc1ba44..30593f2 100644
--- a/core/jni/Android.mk
+++ b/core/jni/Android.mk
@@ -7,7 +7,6 @@
LOCAL_CFLAGS += -Wno-unused-parameter
LOCAL_CFLAGS += -Wno-non-virtual-dtor
LOCAL_CFLAGS += -Wno-maybe-uninitialized -Wno-parentheses
-LOCAL_CFLAGS += -DHWUI_NEW_OPS
LOCAL_CPPFLAGS += -Wno-conversion-null
ifeq ($(TARGET_ARCH), arm)
diff --git a/core/jni/android_view_DisplayListCanvas.cpp b/core/jni/android_view_DisplayListCanvas.cpp
index d2c99fd..a6c61de 100644
--- a/core/jni/android_view_DisplayListCanvas.cpp
+++ b/core/jni/android_view_DisplayListCanvas.cpp
@@ -72,10 +72,16 @@
// ----------------------------------------------------------------------------
static jint android_view_DisplayListCanvas_getMaxTextureWidth(JNIEnv* env, jobject clazz) {
+ if (!Caches::hasInstance()) {
+ android::uirenderer::renderthread::RenderProxy::staticFence();
+ }
return Caches::getInstance().maxTextureSize;
}
static jint android_view_DisplayListCanvas_getMaxTextureHeight(JNIEnv* env, jobject clazz) {
+ if (!Caches::hasInstance()) {
+ android::uirenderer::renderthread::RenderProxy::staticFence();
+ }
return Caches::getInstance().maxTextureSize;
}
diff --git a/core/tests/coretests/src/android/animation/AutoCancelTest.java b/core/tests/coretests/src/android/animation/AutoCancelTest.java
index 5810818..b1f88db 100644
--- a/core/tests/coretests/src/android/animation/AutoCancelTest.java
+++ b/core/tests/coretests/src/android/animation/AutoCancelTest.java
@@ -18,12 +18,10 @@
import android.os.Handler;
import android.test.ActivityInstrumentationTestCase2;
import android.test.suitebuilder.annotation.SmallTest;
-import android.test.suitebuilder.annotation.Suppress;
import java.util.HashMap;
import java.util.concurrent.TimeUnit;
-@Suppress // Failing
public class AutoCancelTest extends ActivityInstrumentationTestCase2<BasicAnimatorActivity> {
boolean mAnimX1Canceled = false;
diff --git a/libs/hwui/Android.mk b/libs/hwui/Android.mk
index fa7c8aa..1248a4c 100644
--- a/libs/hwui/Android.mk
+++ b/libs/hwui/Android.mk
@@ -2,7 +2,7 @@
include $(CLEAR_VARS)
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
-HWUI_NEW_OPS := true
+HWUI_NEW_OPS := false
hwui_src_files := \
font/CacheTexture.cpp \
@@ -233,7 +233,6 @@
tests/unit/GpuMemoryTrackerTests.cpp \
tests/unit/LayerUpdateQueueTests.cpp \
tests/unit/LinearAllocatorTests.cpp \
- tests/unit/LeakCheckTests.cpp \
tests/unit/VectorDrawableTests.cpp \
tests/unit/OffscreenBufferPoolTests.cpp \
tests/unit/StringUtilsTests.cpp
@@ -242,6 +241,7 @@
LOCAL_SRC_FILES += \
tests/unit/BakedOpStateTests.cpp \
tests/unit/FrameBuilderTests.cpp \
+ tests/unit/LeakCheckTests.cpp \
tests/unit/RecordingCanvasTests.cpp
endif
diff --git a/libs/hwui/renderthread/RenderProxy.cpp b/libs/hwui/renderthread/RenderProxy.cpp
index 72c7e4e..db2a2c8 100644
--- a/libs/hwui/renderthread/RenderProxy.cpp
+++ b/libs/hwui/renderthread/RenderProxy.cpp
@@ -384,6 +384,12 @@
postAndWait(task);
}
+void RenderProxy::staticFence() {
+ SETUP_TASK(fence);
+ UNUSED(args);
+ staticPostAndWait(task);
+}
+
CREATE_BRIDGE1(stopDrawing, CanvasContext* context) {
args->context->stopDrawing();
return nullptr;
diff --git a/libs/hwui/renderthread/RenderProxy.h b/libs/hwui/renderthread/RenderProxy.h
index 1d30eb8..0f91b2a 100644
--- a/libs/hwui/renderthread/RenderProxy.h
+++ b/libs/hwui/renderthread/RenderProxy.h
@@ -93,6 +93,7 @@
ANDROID_API static void overrideProperty(const char* name, const char* value);
ANDROID_API void fence();
+ ANDROID_API static void staticFence();
ANDROID_API void stopDrawing();
ANDROID_API void notifyFramePending();
diff --git a/media/java/android/media/AudioAttributes.java b/media/java/android/media/AudioAttributes.java
index 606447b5..efae628 100644
--- a/media/java/android/media/AudioAttributes.java
+++ b/media/java/android/media/AudioAttributes.java
@@ -442,7 +442,8 @@
/**
* Sets the combination of flags.
- * @param flags the {@link AudioAttributes#FLAG_AUDIBILITY_ENFORCED} flag.
+ * @param flags a combination of {@link AudioAttributes#FLAG_AUDIBILITY_ENFORCED},
+ * {@link AudioAttributes#FLAG_HW_AV_SYNC}.
* @return the same Builder instance.
*/
public Builder setFlags(int flags) {
diff --git a/packages/SettingsLib/src/com/android/settingslib/net/MobileDataController.java b/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java
similarity index 93%
rename from packages/SettingsLib/src/com/android/settingslib/net/MobileDataController.java
rename to packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java
index 642b60e..5d8668b 100644
--- a/packages/SettingsLib/src/com/android/settingslib/net/MobileDataController.java
+++ b/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java
@@ -42,11 +42,11 @@
import static android.text.format.DateUtils.FORMAT_ABBREV_MONTH;
import static android.text.format.DateUtils.FORMAT_SHOW_DATE;
-public class MobileDataController {
- private static final String TAG = "MobileDataController";
+public class DataUsageController {
+ private static final String TAG = "DataUsageController";
private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
- private static final long DEFAULT_WARNING_LEVEL = 2L * 1024 * 1024 * 1024;
+ public static final long DEFAULT_WARNING_LEVEL = 2L * 1024 * 1024 * 1024;
private static final int FIELDS = FIELD_RX_BYTES | FIELD_TX_BYTES;
private static final StringBuilder PERIOD_BUILDER = new StringBuilder(50);
private static final java.util.Formatter PERIOD_FORMATTER = new java.util.Formatter(
@@ -62,7 +62,7 @@
private Callback mCallback;
private NetworkNameProvider mNetworkController;
- public MobileDataController(Context context) {
+ public DataUsageController(Context context) {
mContext = context;
mTelephonyManager = TelephonyManager.from(context);
mConnectivityManager = ConnectivityManager.from(context);
@@ -109,16 +109,25 @@
if (subscriberId == null) {
return warn("no subscriber id");
}
+ NetworkTemplate template = NetworkTemplate.buildTemplateMobileAll(subscriberId);
+ template = NetworkTemplate.normalize(template, mTelephonyManager.getMergedSubscriberIds());
+
+ return getDataUsageInfo(template);
+ }
+
+ public DataUsageInfo getWifiDataUsageInfo() {
+ NetworkTemplate template = NetworkTemplate.buildTemplateWifiWildcard();
+ return getDataUsageInfo(template);
+ }
+
+ public DataUsageInfo getDataUsageInfo(NetworkTemplate template) {
final INetworkStatsSession session = getSession();
if (session == null) {
return warn("no stats session");
}
- NetworkTemplate template = NetworkTemplate.buildTemplateMobileAll(subscriberId);
- template = NetworkTemplate.normalize(template, mTelephonyManager.getMergedSubscriberIds());
-
final NetworkPolicy policy = findNetworkPolicy(template);
try {
- final NetworkStatsHistory history = mSession.getHistoryForNetwork(template, FIELDS);
+ final NetworkStatsHistory history = session.getHistoryForNetwork(template, FIELDS);
final long now = System.currentTimeMillis();
final long start, end;
if (policy != null && policy.cycleDay > 0) {
@@ -153,6 +162,7 @@
}
final long totalBytes = entry.rxBytes + entry.txBytes;
final DataUsageInfo usage = new DataUsageInfo();
+ usage.startDate = start;
usage.usageLevel = totalBytes;
usage.period = formatDateRange(start, end);
if (policy != null) {
@@ -238,6 +248,7 @@
public static class DataUsageInfo {
public String carrier;
public String period;
+ public long startDate;
public long limitLevel;
public long warningLevel;
public long usageLevel;
diff --git a/packages/SystemUI/res/layout/volume_dialog.xml b/packages/SystemUI/res/layout/volume_dialog.xml
index 7617ed4..7cbc55c 100644
--- a/packages/SystemUI/res/layout/volume_dialog.xml
+++ b/packages/SystemUI/res/layout/volume_dialog.xml
@@ -46,6 +46,9 @@
<!-- volume rows added and removed here! :-) -->
<include layout="@layout/volume_zen_footer" />
+
+ <!-- Only shown from Tuner setting -->
+ <include layout="@layout/zen_mode_panel" />
</LinearLayout>
-</RelativeLayout>
\ No newline at end of file
+</RelativeLayout>
diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml
index de49677..c39ea57 100644
--- a/packages/SystemUI/res/values/strings.xml
+++ b/packages/SystemUI/res/values/strings.xml
@@ -805,6 +805,12 @@
<!-- Interruption level: Alarms only. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
<string name="interruption_level_alarms_twoline">Alarms\nonly</string>
+ <!-- Interruption level: All interruptions. [CHAR LIMIT=40] -->
+ <string name="interruption_level_all">All</string>
+
+ <!-- Interruption level: All interruptions. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <string name="interruption_level_all_twoline">All\n</string>
+
<!-- Indication on the keyguard that is shown when the device is charging. [CHAR LIMIT=40]-->
<string name="keyguard_indication_charging_time">Charging (<xliff:g id="charging_time_left" example="4 hours and 2 minutes">%s</xliff:g> until full)</string>
@@ -1295,4 +1301,18 @@
<!-- User visible title for the the keyboard shortcut that triggers the back action. -->
<string name="keyboard_shortcut_group_system_back">Back</string>
+ <!-- SysUI Tuner: Option to show full do not disturb panel in volume [CHAR LIMIT=60] -->
+ <string name="tuner_full_zen_title">Show do not disturb in volume</string>
+ <!-- SysUI Tuner: Summary of option to show full do not disturb panel in volume [CHAR LIMIT=NONE] -->
+ <string name="tuner_full_zen_summary">Allow full control of do not disturb in the volume dialog.</string>
+
+ <!-- SysUI Tuner: Label for screen about volume and do not disturb settings [CHAR LIMIT=60] -->
+ <string name="volume_and_do_not_disturb">Volume and Do not disturb</string>
+
+ <!-- SysUI Tuner: Switch to control volume down behavior [CHAR LIMIT=60] -->
+ <string name="volume_down_silent">Enter do not disturb on volume down</string>
+
+ <!-- SysUI Tuner: Switch to control volume up behavior [CHAR LIMIT=60] -->
+ <string name="volume_up_silent">Exit do not disturb on volume up</string>
+
</resources>
diff --git a/packages/SystemUI/res/xml/tuner_prefs.xml b/packages/SystemUI/res/xml/tuner_prefs.xml
index 11ef735d..483f367 100644
--- a/packages/SystemUI/res/xml/tuner_prefs.xml
+++ b/packages/SystemUI/res/xml/tuner_prefs.xml
@@ -113,6 +113,27 @@
android:title="@string/color_transform"
android:fragment="com.android.systemui.tuner.ColorMatrixFragment" />
+ <PreferenceScreen
+ android:key="volume_and_do_not_disturb"
+ android:title="@string/volume_and_do_not_disturb">
+
+ <com.android.systemui.tuner.TunerSwitch
+ android:key="sysui_show_full_zen"
+ android:title="@string/tuner_full_zen_title"
+ android:summary="@string/tuner_full_zen_summary" />
+
+ <com.android.systemui.tuner.TunerSwitch
+ android:key="sysui_volume_down_silent"
+ android:title="@string/volume_down_silent"
+ sysui:defValue="true" />
+
+ <com.android.systemui.tuner.TunerSwitch
+ android:key="sysui_volume_up_silent"
+ android:title="@string/volume_up_silent"
+ sysui:defValue="true" />
+
+ </PreferenceScreen>
+
<!-- Warning, this goes last. -->
<Preference
android:summary="@string/tuner_persistent_warning"
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java
index c1dcfea..1f8fae0 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java
@@ -24,7 +24,7 @@
import android.view.View;
import android.view.ViewGroup;
import com.android.internal.logging.MetricsLogger;
-import com.android.settingslib.net.MobileDataController;
+import com.android.settingslib.net.DataUsageController;
import com.android.systemui.R;
import com.android.systemui.qs.QSIconView;
import com.android.systemui.qs.QSTile;
@@ -39,7 +39,7 @@
"com.android.settings", "com.android.settings.Settings$DataUsageSummaryActivity"));
private final NetworkController mController;
- private final MobileDataController mDataController;
+ private final DataUsageController mDataController;
private final CellularDetailAdapter mDetailAdapter;
private final CellSignalCallback mSignalCallback = new CellSignalCallback();
@@ -255,7 +255,7 @@
final DataUsageDetailView v = (DataUsageDetailView) (convertView != null
? convertView
: LayoutInflater.from(mContext).inflate(R.layout.data_usage, parent, false));
- final MobileDataController.DataUsageInfo info = mDataController.getDataUsageInfo();
+ final DataUsageController.DataUsageInfo info = mDataController.getDataUsageInfo();
if (info == null) return v;
v.bind(info);
return v;
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/DataUsageDetailView.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/DataUsageDetailView.java
index d814b1c2..2be43c0 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/DataUsageDetailView.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/DataUsageDetailView.java
@@ -23,7 +23,7 @@
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
-import com.android.settingslib.net.MobileDataController;
+import com.android.settingslib.net.DataUsageController;
import com.android.systemui.FontSizeUtils;
import com.android.systemui.R;
import com.android.systemui.qs.DataUsageGraph;
@@ -59,7 +59,7 @@
R.dimen.qs_data_usage_text_size);
}
- public void bind(MobileDataController.DataUsageInfo info) {
+ public void bind(DataUsageController.DataUsageInfo info) {
final Resources res = mContext.getResources();
final int titleId;
final long bytes;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java
index f8c72b3..b2bcde3 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java
@@ -19,7 +19,7 @@
import android.content.Context;
import android.content.Intent;
import android.telephony.SubscriptionInfo;
-import com.android.settingslib.net.MobileDataController;
+import com.android.settingslib.net.DataUsageController;
import com.android.settingslib.wifi.AccessPoint;
import java.util.List;
@@ -32,7 +32,7 @@
void setWifiEnabled(boolean enabled);
void onUserSwitched(int newUserId);
AccessPointController getAccessPointController();
- MobileDataController getMobileDataController();
+ DataUsageController getMobileDataController();
public interface SignalCallback {
void setWifiIndicators(boolean enabled, IconState statusIcon, IconState qsIcon,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
index 909f497..3385c82 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
@@ -40,7 +40,7 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.PhoneConstants;
import com.android.internal.telephony.TelephonyIntents;
-import com.android.settingslib.net.MobileDataController;
+import com.android.settingslib.net.DataUsageController;
import com.android.systemui.DemoMode;
import com.android.systemui.R;
@@ -59,7 +59,7 @@
/** Platform implementation of the network controller. **/
public class NetworkControllerImpl extends BroadcastReceiver
- implements NetworkController, DemoMode, MobileDataController.NetworkNameProvider {
+ implements NetworkController, DemoMode, DataUsageController.NetworkNameProvider {
// debug
static final String TAG = "NetworkController";
static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
@@ -94,7 +94,7 @@
// SIM for most actions. This may be null if there aren't any SIMs around.
private MobileSignalController mDefaultSignalController;
private final AccessPointControllerImpl mAccessPoints;
- private final MobileDataController mMobileDataController;
+ private final DataUsageController mDataUsageController;
private boolean mInetCondition; // Used for Logging and demo.
@@ -139,7 +139,7 @@
SubscriptionManager.from(context), Config.readConfig(context), bgLooper,
new CallbackHandler(),
new AccessPointControllerImpl(context, bgLooper),
- new MobileDataController(context),
+ new DataUsageController(context),
new SubscriptionDefaults());
mReceiverHandler.post(mRegisterListeners);
}
@@ -150,7 +150,7 @@
SubscriptionManager subManager, Config config, Looper bgLooper,
CallbackHandler callbackHandler,
AccessPointControllerImpl accessPointController,
- MobileDataController mobileDataController,
+ DataUsageController dataUsageController,
SubscriptionDefaults defaultsHandler) {
mContext = context;
mConfig = config;
@@ -171,10 +171,10 @@
mLocale = mContext.getResources().getConfiguration().locale;
mAccessPoints = accessPointController;
- mMobileDataController = mobileDataController;
- mMobileDataController.setNetworkController(this);
- // TODO: Find a way to move this into MobileDataController.
- mMobileDataController.setCallback(new MobileDataController.Callback() {
+ mDataUsageController = dataUsageController;
+ mDataUsageController.setNetworkController(this);
+ // TODO: Find a way to move this into DataUsageController.
+ mDataUsageController.setCallback(new DataUsageController.Callback() {
@Override
public void onMobileDataEnabled(boolean enabled) {
mCallbackHandler.setMobileDataEnabled(enabled);
@@ -236,8 +236,8 @@
}
@Override
- public MobileDataController getMobileDataController() {
- return mMobileDataController;
+ public DataUsageController getMobileDataController() {
+ return mDataUsageController;
}
public void addEmergencyListener(EmergencyListener listener) {
diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialog.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialog.java
index 0901015..ed6fc9e 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialog.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialog.java
@@ -21,7 +21,6 @@
import android.accessibilityservice.AccessibilityServiceInfo;
import android.animation.LayoutTransition;
-import android.animation.ObjectAnimator;
import android.animation.ValueAnimator;
import android.annotation.SuppressLint;
import android.app.Dialog;
@@ -62,7 +61,6 @@
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityManager;
import android.view.accessibility.AccessibilityManager.AccessibilityStateChangeListener;
-import android.view.animation.DecelerateInterpolator;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.SeekBar;
@@ -71,6 +69,7 @@
import com.android.systemui.R;
import com.android.systemui.statusbar.policy.ZenModeController;
+import com.android.systemui.tuner.TunerService;
import com.android.systemui.volume.VolumeDialogController.State;
import com.android.systemui.volume.VolumeDialogController.StreamState;
@@ -85,9 +84,11 @@
*
* Methods ending in "H" must be called on the (ui) handler.
*/
-public class VolumeDialog {
+public class VolumeDialog implements TunerService.Tunable {
private static final String TAG = Util.logTag(VolumeDialog.class);
+ public static final String SHOW_FULL_ZEN = "sysui_show_full_zen";
+
private static final long USER_ATTEMPT_GRACE_PERIOD = 1000;
private static final int WAIT_FOR_RIPPLE = 200;
@@ -131,6 +132,9 @@
private boolean mHovering = false;
private int mLastActiveStream;
+ private boolean mShowFullZen;
+ private final ZenModePanel mZenPanel;
+
public VolumeDialog(Context context, int windowType, VolumeDialogController controller,
ZenModeController zenModeController, Callback callback) {
mContext = context;
@@ -221,11 +225,23 @@
mExpandButtonAnimationDuration = res.getInteger(R.integer.volume_expand_animation_duration);
mZenFooter = (ZenFooter) mDialog.findViewById(R.id.volume_zen_footer);
mZenFooter.init(zenModeController);
+ mZenPanel = (ZenModePanel) mDialog.findViewById(R.id.zen_mode_panel);
+ mZenPanel.addNoneButton();
+ mZenPanel.init(zenModeController);
+ mZenPanel.setCallback(mZenPanelCallback);
mAccessibility.init();
controller.addCallback(mControllerCallbackH, mHandler);
controller.getState();
+ TunerService.get(mContext).addTunable(this, SHOW_FULL_ZEN);
+ }
+
+ @Override
+ public void onTuningChanged(String key, String newValue) {
+ if (SHOW_FULL_ZEN.equals(key)) {
+ mShowFullZen = newValue != null && Integer.parseInt(newValue) != 0;
+ }
}
private ColorStateList loadColorStateList(int colorResId) {
@@ -278,7 +294,7 @@
.getDimensionPixelSize(R.dimen.volume_slider_interspacing);
final LinearLayout.LayoutParams lp =
new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, h);
- mDialogContentView.addView(v, mDialogContentView.getChildCount() - 1, lp);
+ mDialogContentView.addView(v, mDialogContentView.getChildCount() - 2, lp);
row.space = v;
}
row.settingsButton.addOnLayoutChangeListener(new OnLayoutChangeListener() {
@@ -306,7 +322,7 @@
}
});
// add new row just before the footer
- mDialogContentView.addView(row.view, mDialogContentView.getChildCount() - 1);
+ mDialogContentView.addView(row.view, mDialogContentView.getChildCount() - 2);
mRows.add(row);
}
@@ -655,12 +671,21 @@
if (D.BUG) Log.d(TAG, "updateFooterH");
final boolean wasVisible = mZenFooter.getVisibility() == View.VISIBLE;
final boolean visible = mState.zenMode != Global.ZEN_MODE_OFF
- && (mAudioManager.isStreamAffectedByRingerMode(mActiveStream) || mExpanded);
+ && (mAudioManager.isStreamAffectedByRingerMode(mActiveStream) || mExpanded)
+ && !mShowFullZen;
if (wasVisible != visible && !visible) {
prepareForCollapse();
}
Util.setVisOrGone(mZenFooter, visible);
mZenFooter.update();
+
+ final boolean fullWasVisible = mZenPanel.getVisibility() == View.VISIBLE;
+ final boolean fullVisible = mShowFullZen && (mState.zenMode != Global.ZEN_MODE_OFF
+ || mExpanded);
+ if (fullWasVisible != fullVisible && !fullVisible) {
+ prepareForCollapse();
+ }
+ Util.setVisOrGone(mZenPanel, fullVisible);
}
private void updateVolumeRowH(VolumeRow row) {
@@ -903,6 +928,23 @@
}
};
+ private final ZenModePanel.Callback mZenPanelCallback = new ZenModePanel.Callback() {
+ @Override
+ public void onPrioritySettings() {
+ mCallback.onZenPrioritySettingsClicked();
+ }
+
+ @Override
+ public void onInteraction() {
+ mHandler.sendEmptyMessage(H.RESCHEDULE_TIMEOUT);
+ }
+
+ @Override
+ public void onExpanded(boolean expanded) {
+ // noop.
+ }
+ };
+
private final OnClickListener mClickExpand = new OnClickListener() {
@Override
public void onClick(View v) {
diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogComponent.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogComponent.java
index 1083f40..d7635ad 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogComponent.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogComponent.java
@@ -31,6 +31,7 @@
import com.android.systemui.qs.tiles.DndTile;
import com.android.systemui.statusbar.phone.PhoneStatusBar;
import com.android.systemui.statusbar.policy.ZenModeController;
+import com.android.systemui.tuner.TunerService;
import java.io.FileDescriptor;
import java.io.PrintWriter;
@@ -38,16 +39,25 @@
/**
* Implementation of VolumeComponent backed by the new volume dialog.
*/
-public class VolumeDialogComponent implements VolumeComponent {
+public class VolumeDialogComponent implements VolumeComponent, TunerService.Tunable {
+
+ public static final String VOLUME_DOWN_SILENT = "sysui_volume_down_silent";
+ public static final String VOLUME_UP_SILENT = "sysui_volume_up_silent";
+ public static final String VOLUME_SILENT_DO_NOT_DISTURB = "sysui_do_not_disturb";
+
+ public static final boolean DEFAULT_VOLUME_DOWN_TO_ENTER_SILENT = true;
+ public static final boolean DEFAULT_VOLUME_UP_TO_EXIT_SILENT = true;
+ public static final boolean DEFAULT_DO_NOT_DISTURB_WHEN_SILENT = true;
+
private final SystemUI mSysui;
private final Context mContext;
private final VolumeDialogController mController;
private final ZenModeController mZenModeController;
private final VolumeDialog mDialog;
- private final VolumePolicy mVolumePolicy = new VolumePolicy(
- true, // volumeDownToEnterSilent
- true, // volumeUpToExitSilent
- true, // doNotDisturbWhenSilent
+ private VolumePolicy mVolumePolicy = new VolumePolicy(
+ DEFAULT_VOLUME_DOWN_TO_ENTER_SILENT, // volumeDownToEnterSilent
+ DEFAULT_VOLUME_UP_TO_EXIT_SILENT, // volumeUpToExitSilent
+ DEFAULT_DO_NOT_DISTURB_WHEN_SILENT, // doNotDisturbWhenSilent
400 // vibrateToSilentDebounce
);
@@ -65,6 +75,41 @@
mDialog = new VolumeDialog(context, WindowManager.LayoutParams.TYPE_VOLUME_OVERLAY,
mController, zen, mVolumeDialogCallback);
applyConfiguration();
+ TunerService.get(mContext).addTunable(this, VOLUME_DOWN_SILENT, VOLUME_UP_SILENT,
+ VOLUME_SILENT_DO_NOT_DISTURB);
+ }
+
+ @Override
+ public void onTuningChanged(String key, String newValue) {
+ if (VOLUME_DOWN_SILENT.equals(key)) {
+ final boolean volumeDownToEnterSilent = newValue != null
+ ? Integer.parseInt(newValue) != 0
+ : DEFAULT_VOLUME_DOWN_TO_ENTER_SILENT;
+ setVolumePolicy(volumeDownToEnterSilent,
+ mVolumePolicy.volumeUpToExitSilent, mVolumePolicy.doNotDisturbWhenSilent,
+ mVolumePolicy.vibrateToSilentDebounce);
+ } else if (VOLUME_UP_SILENT.equals(key)) {
+ final boolean volumeUpToExitSilent = newValue != null
+ ? Integer.parseInt(newValue) != 0
+ : DEFAULT_VOLUME_UP_TO_EXIT_SILENT;
+ setVolumePolicy(mVolumePolicy.volumeDownToEnterSilent,
+ volumeUpToExitSilent, mVolumePolicy.doNotDisturbWhenSilent,
+ mVolumePolicy.vibrateToSilentDebounce);
+ } else if (VOLUME_SILENT_DO_NOT_DISTURB.equals(key)) {
+ final boolean doNotDisturbWhenSilent = newValue != null
+ ? Integer.parseInt(newValue) != 0
+ : DEFAULT_DO_NOT_DISTURB_WHEN_SILENT;
+ setVolumePolicy(mVolumePolicy.volumeDownToEnterSilent,
+ mVolumePolicy.volumeUpToExitSilent, doNotDisturbWhenSilent,
+ mVolumePolicy.vibrateToSilentDebounce);
+ }
+ }
+
+ private void setVolumePolicy(boolean volumeDownToEnterSilent, boolean volumeUpToExitSilent,
+ boolean doNotDisturbWhenSilent, int vibrateToSilentDebounce) {
+ mVolumePolicy = new VolumePolicy(volumeDownToEnterSilent, volumeUpToExitSilent,
+ doNotDisturbWhenSilent, vibrateToSilentDebounce);
+ mController.setVolumePolicy(mVolumePolicy);
}
private void sendUserActivity() {
diff --git a/packages/SystemUI/src/com/android/systemui/volume/ZenModePanel.java b/packages/SystemUI/src/com/android/systemui/volume/ZenModePanel.java
index 38d8de0..f73ba6f 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/ZenModePanel.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/ZenModePanel.java
@@ -189,6 +189,12 @@
mZenAlarmWarning = (TextView) findViewById(R.id.zen_alarm_warning);
}
+ public void addNoneButton() {
+ mZenButtons.addButton(R.string.interruption_level_all_twoline,
+ R.string.interruption_level_all,
+ Global.ZEN_MODE_OFF);
+ }
+
@Override
protected void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
@@ -494,6 +500,7 @@
if (mExpanded && isShown()) {
ensureSelection();
}
+ mZenConditions.setVisibility(mSessionZen != Global.ZEN_MODE_OFF ? View.VISIBLE : View.GONE);
}
private Condition forever() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java
index b64fbea..5cf3767 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java
@@ -33,7 +33,7 @@
import android.util.Log;
import com.android.internal.telephony.cdma.EriInfo;
-import com.android.settingslib.net.MobileDataController;
+import com.android.settingslib.net.DataUsageController;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.statusbar.policy.NetworkController.IconState;
import com.android.systemui.statusbar.policy.NetworkControllerImpl.Config;
@@ -96,7 +96,7 @@
mCallbackHandler = mock(CallbackHandler.class);
mNetworkController = new NetworkControllerImpl(mContext, mMockCm, mMockTm, mMockWm, mMockSm,
mConfig, Looper.getMainLooper(), mCallbackHandler,
- mock(AccessPointControllerImpl.class), mock(MobileDataController.class),
+ mock(AccessPointControllerImpl.class), mock(DataUsageController.class),
mMockSubDefaults);
setupNetworkController();
@@ -137,7 +137,7 @@
= new NetworkControllerImpl(mContext, mMockCm, mMockTm, mMockWm, mMockSm,
mConfig, Looper.getMainLooper(), mCallbackHandler,
mock(AccessPointControllerImpl.class),
- mock(MobileDataController.class), mMockSubDefaults);
+ mock(DataUsageController.class), mMockSubDefaults);
setupNetworkController();
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java
index e4f858b..d5eca95 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java
@@ -4,7 +4,7 @@
import android.telephony.TelephonyManager;
import android.test.suitebuilder.annotation.SmallTest;
-import com.android.settingslib.net.MobileDataController;
+import com.android.settingslib.net.DataUsageController;
import org.mockito.Mockito;
@SmallTest
@@ -88,7 +88,7 @@
mNetworkController = new NetworkControllerImpl(mContext, mMockCm, mMockTm, mMockWm, mMockSm,
mConfig, Looper.getMainLooper(), mCallbackHandler,
Mockito.mock(AccessPointControllerImpl.class),
- Mockito.mock(MobileDataController.class), mMockSubDefaults);
+ Mockito.mock(DataUsageController.class), mMockSubDefaults);
setupNetworkController();
setupDefaultSignal();
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java
index 760aa9a..08da382 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java
@@ -29,7 +29,7 @@
import com.android.internal.telephony.PhoneConstants;
import com.android.internal.telephony.TelephonyIntents;
-import com.android.settingslib.net.MobileDataController;
+import com.android.settingslib.net.DataUsageController;
import com.android.systemui.R;
import org.mockito.ArgumentCaptor;
@@ -47,7 +47,7 @@
// Create a new NetworkController as this is currently handled in constructor.
mNetworkController = new NetworkControllerImpl(mContext, mMockCm, mMockTm, mMockWm, mMockSm,
mConfig, Looper.getMainLooper(), mCallbackHandler,
- mock(AccessPointControllerImpl.class), mock(MobileDataController.class),
+ mock(AccessPointControllerImpl.class), mock(DataUsageController.class),
mMockSubDefaults);
setupNetworkController();
@@ -96,7 +96,7 @@
// Create a new NetworkController as this is currently handled in constructor.
mNetworkController = new NetworkControllerImpl(mContext, mMockCm, mMockTm, mMockWm, mMockSm,
mConfig, Looper.getMainLooper(), mCallbackHandler,
- mock(AccessPointControllerImpl.class), mock(MobileDataController.class),
+ mock(AccessPointControllerImpl.class), mock(DataUsageController.class),
mMockSubDefaults);
setupNetworkController();
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 1d9bd91..6c502e0 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -11265,9 +11265,13 @@
+ android.Manifest.permission.DEVICE_POWER);
}
+ final int user = UserHandle.myUserId();
synchronized(this) {
long ident = Binder.clearCallingIdentity();
try {
+ if (!shown && mStackSupervisor.isFocusedUserLockedProfile()) {
+ startHomeActivityLocked(user, "setLockScreenShown");
+ }
if (DEBUG_LOCKSCREEN) logLockScreen(" shown=" + shown);
mLockScreenShown = shown ? LOCK_SCREEN_SHOWN : LOCK_SCREEN_HIDDEN;
updateSleepIfNeededLocked();
diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
index 09bb9ab..280ab60 100644
--- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java
+++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
@@ -692,6 +692,12 @@
return null;
}
+ boolean isFocusedUserLockedProfile() {
+ final int userId = mFocusedStack.topRunningActivityLocked().userId;
+ return userId != UserHandle.myUserId()
+ && mService.mUserController.shouldConfirmCredentials(userId);
+ }
+
void setNextTaskIdForUserLocked(int taskId, int userId) {
final int currentTaskId = mCurTaskIdForUser.get(userId, -1);
if (taskId > currentTaskId) {
diff --git a/wifi/java/android/net/wifi/WifiWakeReasonAndCounts.java b/wifi/java/android/net/wifi/WifiWakeReasonAndCounts.java
new file mode 100644
index 0000000..17cc29f
--- /dev/null
+++ b/wifi/java/android/net/wifi/WifiWakeReasonAndCounts.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright (C) 2015 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 android.net.wifi;
+
+import android.os.Parcelable;
+import android.os.Parcel;
+
+/**
+ * A class representing wifi wake reason accounting.
+ */
+
+/** @hide */
+public class WifiWakeReasonAndCounts implements Parcelable {
+ private static final String TAG = "WifiWakeReasonAndCounts";
+ /**
+ * Wlan can wake host, only when it is cmd/event, local driver-fw
+ * functions(non-data, non cmd/event) and rx data.The first packet
+ * from wlan that woke up a sleep host is what is accounted here.
+ * Total wlan wake to application processor would be:
+ * [cmdEventWake + driverFwLocalWake + totalRxDataWake]
+ * A further classification is provided for identifying the reasons
+ * for wakeup.
+ */
+ public int totalCmdEventWake;
+ public int totalDriverFwLocalWake;
+ public int totalRxDataWake;
+
+ public int rxUnicast;
+ public int rxMulticast;
+ public int rxBroadcast;
+
+ public int icmp;
+ public int icmp6;
+ public int icmp6Ra;
+ public int icmp6Na;
+ public int icmp6Ns;
+
+ public int ipv4RxMulticast;
+ public int ipv6Multicast;
+ public int otherRxMulticast;
+
+ /* {@hide} */
+ public WifiWakeReasonAndCounts () {
+ }
+
+ @Override
+ /* {@hide} */
+ public String toString() {
+ StringBuffer sb = new StringBuffer();
+ sb.append(" totalCmdEventWake ").append(totalCmdEventWake);
+ sb.append(" totalDriverFwLocalWake ").append(totalDriverFwLocalWake);
+ sb.append(" totalRxDataWake ").append(totalRxDataWake);
+
+ sb.append(" rxUnicast ").append(rxUnicast);
+ sb.append(" rxMulticast ").append(rxMulticast);
+ sb.append(" rxBroadcast ").append(rxBroadcast);
+
+ sb.append(" icmp ").append(icmp);
+ sb.append(" icmp6 ").append(icmp6);
+ sb.append(" icmp6Ra ").append(icmp6Ra);
+ sb.append(" icmp6Na ").append(icmp6Na);
+ sb.append(" icmp6Ns ").append(icmp6Ns);
+
+ sb.append(" ipv4RxMulticast ").append(ipv4RxMulticast);
+ sb.append(" ipv6Multicast ").append(ipv6Multicast);
+ sb.append(" otherRxMulticast ").append(otherRxMulticast);
+ return sb.toString();
+ }
+
+ /* Implement the Parcelable interface
+ * {@hide}
+ */
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ /* Implement the Parcelable interface
+ * {@hide}
+ */
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeInt(totalCmdEventWake);
+ dest.writeInt(totalDriverFwLocalWake);
+ dest.writeInt(totalRxDataWake);
+
+ dest.writeInt(rxUnicast);
+ dest.writeInt(rxMulticast);
+ dest.writeInt(rxBroadcast);
+
+ dest.writeInt(icmp);
+ dest.writeInt(icmp6);
+ dest.writeInt(icmp6Ra);
+ dest.writeInt(icmp6Na);
+ dest.writeInt(icmp6Ns);
+
+ dest.writeInt(ipv4RxMulticast);
+ dest.writeInt(ipv6Multicast);
+ dest.writeInt(otherRxMulticast);
+ }
+
+ /* Implement the Parcelable interface
+ * {@hide}
+ */
+ public static final Creator<WifiWakeReasonAndCounts> CREATOR =
+ new Creator<WifiWakeReasonAndCounts>() {
+ public WifiWakeReasonAndCounts createFromParcel(Parcel in) {
+ WifiWakeReasonAndCounts counts = new WifiWakeReasonAndCounts();
+ counts.totalCmdEventWake = in.readInt();
+ counts.totalDriverFwLocalWake = in.readInt();
+ counts.totalRxDataWake = in.readInt();
+
+ counts.rxUnicast = in.readInt();
+ counts.rxMulticast = in.readInt();
+ counts.rxBroadcast = in.readInt();
+
+ counts.icmp = in.readInt();
+ counts.icmp6 = in.readInt();
+ counts.icmp6Ra = in.readInt();
+ counts.icmp6Na = in.readInt();
+ counts.icmp6Ns = in.readInt();
+
+ counts.ipv4RxMulticast = in.readInt();
+ counts.ipv6Multicast = in.readInt();
+ counts.otherRxMulticast = in.readInt();
+ return counts;
+ }
+ /* Implement the Parcelable interface
+ * {@hide}
+ */
+ @Override
+ public WifiWakeReasonAndCounts[] newArray(int size) {
+ return new WifiWakeReasonAndCounts[size];
+ }
+ };
+}