Merge "Move focus to visible behind activity when we move the home task back"
diff --git a/api/current.txt b/api/current.txt
index 622d79b..d17f4b6 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -34905,6 +34905,7 @@
field public static final int CAPABILITY_PLACE_EMERGENCY_CALLS = 16; // 0x10
field public static final int CAPABILITY_SIM_SUBSCRIPTION = 4; // 0x4
field public static final int CAPABILITY_VIDEO_CALLING = 8; // 0x8
+ field public static final int CAPABILITY_VIDEO_CALLING_RELIES_ON_PRESENCE = 256; // 0x100
field public static final android.os.Parcelable.Creator<android.telecom.PhoneAccount> CREATOR;
field public static final java.lang.String EXTRA_CALL_SUBJECT_CHARACTER_ENCODING = "android.telecom.extra.CALL_SUBJECT_CHARACTER_ENCODING";
field public static final java.lang.String EXTRA_CALL_SUBJECT_MAX_LENGTH = "android.telecom.extra.CALL_SUBJECT_MAX_LENGTH";
diff --git a/api/system-current.txt b/api/system-current.txt
index ba3b7e3..332a516 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -37143,6 +37143,7 @@
field public static final int CAPABILITY_PLACE_EMERGENCY_CALLS = 16; // 0x10
field public static final int CAPABILITY_SIM_SUBSCRIPTION = 4; // 0x4
field public static final int CAPABILITY_VIDEO_CALLING = 8; // 0x8
+ field public static final int CAPABILITY_VIDEO_CALLING_RELIES_ON_PRESENCE = 256; // 0x100
field public static final android.os.Parcelable.Creator<android.telecom.PhoneAccount> CREATOR;
field public static final java.lang.String EXTRA_CALL_SUBJECT_CHARACTER_ENCODING = "android.telecom.extra.CALL_SUBJECT_CHARACTER_ENCODING";
field public static final java.lang.String EXTRA_CALL_SUBJECT_MAX_LENGTH = "android.telecom.extra.CALL_SUBJECT_MAX_LENGTH";
diff --git a/api/test-current.txt b/api/test-current.txt
index 3b53be4..680f783 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -34907,6 +34907,7 @@
field public static final int CAPABILITY_PLACE_EMERGENCY_CALLS = 16; // 0x10
field public static final int CAPABILITY_SIM_SUBSCRIPTION = 4; // 0x4
field public static final int CAPABILITY_VIDEO_CALLING = 8; // 0x8
+ field public static final int CAPABILITY_VIDEO_CALLING_RELIES_ON_PRESENCE = 256; // 0x100
field public static final android.os.Parcelable.Creator<android.telecom.PhoneAccount> CREATOR;
field public static final java.lang.String EXTRA_CALL_SUBJECT_CHARACTER_ENCODING = "android.telecom.extra.CALL_SUBJECT_CHARACTER_ENCODING";
field public static final java.lang.String EXTRA_CALL_SUBJECT_MAX_LENGTH = "android.telecom.extra.CALL_SUBJECT_MAX_LENGTH";
diff --git a/core/java/com/android/internal/util/StateMachine.java b/core/java/com/android/internal/util/StateMachine.java
index 554d367..8c4d078 100644
--- a/core/java/com/android/internal/util/StateMachine.java
+++ b/core/java/com/android/internal/util/StateMachine.java
@@ -778,6 +778,7 @@
*/
@Override
public final void handleMessage(Message msg) {
+ mSm.onPreHandleMessage(msg);
if (!mHasQuit) {
if (mDbg) mSm.log("handleMessage: E msg.what=" + msg.what);
@@ -803,6 +804,7 @@
// We need to check if mSm == null here as we could be quitting.
if (mDbg && mSm != null) mSm.log("handleMessage: X");
}
+ mSm.onPostHandleMessage(msg);
}
/**
@@ -1274,6 +1276,21 @@
}
/**
+ * Notifies subclass that the StateMachine handler is about to process the Message msg
+ * @param msg The message that is being handled
+ */
+ protected void onPreHandleMessage(Message msg) {
+ }
+
+ /**
+ * Notifies subclass that the StateMachine handler has finished processing the Message msg and
+ * has possibly transitioned to a new state.
+ * @param msg The message that is being handled
+ */
+ protected void onPostHandleMessage(Message msg) {
+ }
+
+ /**
* Add a new state to the state machine
* @param state the state to add
* @param parent the parent of state
diff --git a/core/res/res/values/colors_material.xml b/core/res/res/values/colors_material.xml
index 7399fa9..dd18544 100644
--- a/core/res/res/values/colors_material.xml
+++ b/core/res/res/values/colors_material.xml
@@ -48,6 +48,8 @@
<color name="primary_text_default_material_light">#de000000</color>
<!-- 54% black -->
<color name="secondary_text_default_material_light">#8a000000</color>
+ <!-- 38% black -->
+ <color name="tertiary_text_default_material_light">#61000000</color>
<!-- 100% white -->
<color name="primary_text_default_material_dark">#ffffffff</color>
diff --git a/core/res/res/values/styles_material.xml b/core/res/res/values/styles_material.xml
index adcb79b..74ebf26 100644
--- a/core/res/res/values/styles_material.xml
+++ b/core/res/res/values/styles_material.xml
@@ -442,12 +442,11 @@
</style>
<style name="TextAppearance.Material.Notification.Info">
+ <item name="textColor">@color/tertiary_text_default_material_light</item>
<item name="textSize">@dimen/notification_subtext_size</item>
</style>
- <style name="TextAppearance.Material.Notification.Time">
- <item name="textSize">@dimen/notification_subtext_size</item>
- </style>
+ <style name="TextAppearance.Material.Notification.Time" parent="TextAppearance.Material.Notification.Info" />
<style name="TextAppearance.Material.Notification.Emphasis">
<item name="textColor">#66000000</item>
diff --git a/docs/html/tools/help/index.jd b/docs/html/tools/help/index.jd
index f90d029..53247d1 100644
--- a/docs/html/tools/help/index.jd
+++ b/docs/html/tools/help/index.jd
@@ -100,10 +100,6 @@
<dt><a href="{@docRoot}tools/help/traceview.html">traceview</a></dt>
<dd>Provides a graphical viewer for execution logs saved by your application.</dd>
- <dt><a href="{@docRoot}tools/help/systrace.html">Systrace</a></dt>
- <dd>Lets you analyze the execution of your application in the context of system processes,
- to help diagnose display and performance issues.</dd>
-
</dl>
diff --git a/libs/hwui/GammaFontRenderer.h b/libs/hwui/GammaFontRenderer.h
index 146d385..5813e7f 100644
--- a/libs/hwui/GammaFontRenderer.h
+++ b/libs/hwui/GammaFontRenderer.h
@@ -30,7 +30,7 @@
GammaFontRenderer();
void clear() {
- mRenderer.release();
+ mRenderer.reset(nullptr);
}
void flush() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
index 57c56af..39a33a5 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
@@ -1323,9 +1323,9 @@
}
/**
- * Called when the panel was layouted expanded for the first time after being collapsed.
+ * Called when the size of the notification panel changes
*/
- public void onPanelExpandedAndLayouted() {
+ public void onPanelHeightChanged() {
if (mState == StatusBarState.KEYGUARD) {
// Since the number of notifications is determined based on the height of the view, we
// need to update them.
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java
index bd143ac..ed4c774 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java
@@ -991,7 +991,7 @@
mNotificationHeader.setOnClickListener(mExpandClickListener);
mNotificationHeaderWrapper = NotificationViewWrapper.wrap(getContext(),
mNotificationHeader);
- addView(mNotificationHeader);
+ addView(mNotificationHeader, indexOfChild(mChildrenContainer) + 1);
} else {
header.reapply(getContext(), mNotificationHeader);
mNotificationHeaderWrapper.notifyContentUpdated();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java
index 51602e7..59cbd40 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java
@@ -17,6 +17,7 @@
package com.android.systemui.statusbar;
import android.content.Context;
+import android.graphics.Paint;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.view.MotionEvent;
@@ -44,6 +45,7 @@
private static Rect mClipRect = new Rect();
private boolean mWillBeGone;
private int mMinClipTopAmount = 0;
+ private boolean mMeasuredTooHigh;
public ExpandableView(Context context, AttributeSet attrs) {
super(context, attrs);
@@ -54,12 +56,13 @@
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
boolean limitViewHeight = shouldLimitViewHeight();
+ final int givenSize = MeasureSpec.getSize(heightMeasureSpec);
int ownMaxHeight = limitViewHeight ? mMaxViewHeight : Integer.MAX_VALUE;
int heightMode = MeasureSpec.getMode(heightMeasureSpec);
boolean hasFixedHeight = heightMode == MeasureSpec.EXACTLY;
if (hasFixedHeight) {
// We have a height set in our layout, so we want to be at most as big as given
- ownMaxHeight = Math.min(MeasureSpec.getSize(heightMeasureSpec), ownMaxHeight);
+ ownMaxHeight = Math.min(givenSize, ownMaxHeight);
}
int newHeightSpec = MeasureSpec.makeMeasureSpec(ownMaxHeight, MeasureSpec.AT_MOST);
int maxChildHeight = 0;
@@ -97,6 +100,7 @@
mMatchParentViews.clear();
int width = MeasureSpec.getSize(widthMeasureSpec);
setMeasuredDimension(width, ownHeight);
+ mMeasuredTooHigh = heightMode != MeasureSpec.UNSPECIFIED && ownHeight > givenSize;
}
protected boolean shouldLimitViewHeight() {
@@ -384,6 +388,18 @@
mMinClipTopAmount = minClipTopAmount;
}
+ @Override
+ public void setLayerType(int layerType, Paint paint) {
+ if (hasOverlappingRendering()) {
+ super.setLayerType(layerType, paint);
+ }
+ }
+
+ @Override
+ public boolean hasOverlappingRendering() {
+ return super.hasOverlappingRendering() && !mMeasuredTooHigh;
+ }
+
/**
* A listener notifying when {@link #getActualHeight} changes.
*/
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java
index 21d803d..5e54ba7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java
@@ -82,6 +82,7 @@
private boolean mMotionAborted;
private boolean mUpwardsWhenTresholdReached;
private boolean mAnimatingOnDown;
+ private int mLayoutHeight = 0;
private ValueAnimator mHeightAnimator;
private ObjectAnimator mPeekAnimator;
@@ -716,6 +717,10 @@
@Override
protected void onLayout (boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
+ if (mLayoutHeight != getHeight()) {
+ mLayoutHeight = getHeight();
+ mStatusBar.onPanelHeightChanged();
+ }
requestPanelHeightUpdate();
mHasLayoutedSinceDown = true;
if (mUpdateFlingOnLayout) {
@@ -889,7 +894,6 @@
if (mStatusBar.getStatusBarWindow().getHeight()
!= mStatusBar.getStatusBarHeight()) {
getViewTreeObserver().removeOnGlobalLayoutListener(this);
- mStatusBar.onPanelExpandedAndLayouted();
if (animate) {
mBar.startOpeningPanel(PanelView.this);
notifyExpandingStarted();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationChildrenContainer.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationChildrenContainer.java
index 2b71ce9..beaa3ad 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationChildrenContainer.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationChildrenContainer.java
@@ -90,7 +90,7 @@
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
- int childCount = mChildren.size();
+ int childCount = Math.min(mChildren.size(), NUMBER_OF_CHILDREN_WHEN_CHILDREN_EXPANDED);
for (int i = 0; i < childCount; i++) {
View child = mChildren.get(i);
if (child.getVisibility() == View.GONE) {
@@ -118,7 +118,7 @@
int newHeightSpec = MeasureSpec.makeMeasureSpec(ownMaxHeight, MeasureSpec.AT_MOST);
int dividerHeightSpec = MeasureSpec.makeMeasureSpec(mDividerHeight, MeasureSpec.EXACTLY);
int height = mNotificationHeaderHeight + mNotificatonTopPadding;
- int childCount = mChildren.size();
+ int childCount = Math.min(mChildren.size(), NUMBER_OF_CHILDREN_WHEN_CHILDREN_EXPANDED);
for (int i = 0; i < childCount; i++) {
View child = mChildren.get(i);
child.measure(widthMeasureSpec, newHeightSpec);
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 9a185bb..22d30df 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -11772,13 +11772,11 @@
boolean killed = false;
synchronized (mPidsSelfLocked) {
- int[] types = new int[pids.length];
int worstType = 0;
for (int i=0; i<pids.length; i++) {
ProcessRecord proc = mPidsSelfLocked.get(pids[i]);
if (proc != null) {
int type = proc.setAdj;
- types[i] = type;
if (type > worstType) {
worstType = type;
}
diff --git a/telecomm/java/android/telecom/PhoneAccount.java b/telecomm/java/android/telecom/PhoneAccount.java
index 5ecd2b5..b18af33 100644
--- a/telecomm/java/android/telecom/PhoneAccount.java
+++ b/telecomm/java/android/telecom/PhoneAccount.java
@@ -156,6 +156,20 @@
public static final int CAPABILITY_EMERGENCY_CALLS_ONLY = 0x80;
/**
+ * Flag indicating that for this {@code PhoneAccount}, the ability to make a video call to a
+ * number relies on presence. Should only be set if the {@code PhoneAccount} also has
+ * {@link #CAPABILITY_VIDEO_CALLING}.
+ * <p>
+ * When set, the {@link ConnectionService} is responsible for toggling the
+ * {@link android.provider.ContactsContract.Data#CARRIER_PRESENCE_VT_CAPABLE} bit on the
+ * {@link android.provider.ContactsContract.Data#CARRIER_PRESENCE} column to indicate whether
+ * a contact's phone number supports video calling.
+ * <p>
+ * See {@link #getCapabilities}
+ */
+ public static final int CAPABILITY_VIDEO_CALLING_RELIES_ON_PRESENCE = 0x100;
+
+ /**
* URI scheme for telephone number URIs.
*/
public static final String SCHEME_TEL = "tel";