diff options
24 files changed, 226 insertions, 342 deletions
diff --git a/api/current.txt b/api/current.txt index 70ea1c577134..b109f988688e 100644 --- a/api/current.txt +++ b/api/current.txt @@ -34569,7 +34569,7 @@ package android.service.media { package android.service.notification { - public class Condition implements android.os.Parcelable { + public final class Condition implements android.os.Parcelable { ctor public Condition(android.net.Uri, java.lang.String, int); ctor public Condition(android.net.Uri, java.lang.String, java.lang.String, java.lang.String, int, int, int); ctor public Condition(android.os.Parcel); @@ -34606,7 +34606,7 @@ package android.service.notification { method public void onRequestConditions(int); method public abstract void onSubscribe(android.net.Uri); method public abstract void onUnsubscribe(android.net.Uri); - field public static final java.lang.String EXTRA_RULE_ID = "android.content.automatic.ruleId"; + field public static final java.lang.String EXTRA_RULE_ID = "android.service.notification.extra.RULE_ID"; field public static final java.lang.String META_DATA_CONFIGURATION_ACTIVITY = "android.service.zen.automatic.configurationActivity"; field public static final java.lang.String META_DATA_RULE_INSTANCE_LIMIT = "android.service.zen.automatic.ruleInstanceLimit"; field public static final java.lang.String META_DATA_RULE_TYPE = "android.service.zen.automatic.ruleType"; diff --git a/api/system-current.txt b/api/system-current.txt index a6f612d195bf..c7ff526dddbf 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -37292,7 +37292,7 @@ package android.service.notification { field public static final java.lang.String NEEDS_AUTOGROUPING_KEY = "autogroup_needed"; } - public class Condition implements android.os.Parcelable { + public final class Condition implements android.os.Parcelable { ctor public Condition(android.net.Uri, java.lang.String, int); ctor public Condition(android.net.Uri, java.lang.String, java.lang.String, java.lang.String, int, int, int); ctor public Condition(android.os.Parcel); @@ -37329,7 +37329,7 @@ package android.service.notification { method public void onRequestConditions(int); method public abstract void onSubscribe(android.net.Uri); method public abstract void onUnsubscribe(android.net.Uri); - field public static final java.lang.String EXTRA_RULE_ID = "android.content.automatic.ruleId"; + field public static final java.lang.String EXTRA_RULE_ID = "android.service.notification.extra.RULE_ID"; field public static final java.lang.String META_DATA_CONFIGURATION_ACTIVITY = "android.service.zen.automatic.configurationActivity"; field public static final java.lang.String META_DATA_RULE_INSTANCE_LIMIT = "android.service.zen.automatic.ruleInstanceLimit"; field public static final java.lang.String META_DATA_RULE_TYPE = "android.service.zen.automatic.ruleType"; diff --git a/api/test-current.txt b/api/test-current.txt index 37bc7afb69ef..1e19db7e5f28 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -34646,7 +34646,7 @@ package android.service.media { package android.service.notification { - public class Condition implements android.os.Parcelable { + public final class Condition implements android.os.Parcelable { ctor public Condition(android.net.Uri, java.lang.String, int); ctor public Condition(android.net.Uri, java.lang.String, java.lang.String, java.lang.String, int, int, int); ctor public Condition(android.os.Parcel); @@ -34683,7 +34683,7 @@ package android.service.notification { method public void onRequestConditions(int); method public abstract void onSubscribe(android.net.Uri); method public abstract void onUnsubscribe(android.net.Uri); - field public static final java.lang.String EXTRA_RULE_ID = "android.content.automatic.ruleId"; + field public static final java.lang.String EXTRA_RULE_ID = "android.service.notification.extra.RULE_ID"; field public static final java.lang.String META_DATA_CONFIGURATION_ACTIVITY = "android.service.zen.automatic.configurationActivity"; field public static final java.lang.String META_DATA_RULE_INSTANCE_LIMIT = "android.service.zen.automatic.ruleInstanceLimit"; field public static final java.lang.String META_DATA_RULE_TYPE = "android.service.zen.automatic.ruleType"; diff --git a/core/java/android/service/notification/Condition.java b/core/java/android/service/notification/Condition.java index 0163b47f2ba7..447afe62fd1a 100644 --- a/core/java/android/service/notification/Condition.java +++ b/core/java/android/service/notification/Condition.java @@ -33,7 +33,7 @@ import java.util.Objects; * {@link ConditionProviderService} that owns the rule. Used to tell the system to enter Do Not * Disturb mode and request that the system exit Do Not Disturb mode. */ -public class Condition implements Parcelable { +public final class Condition implements Parcelable { @SystemApi public static final String SCHEME = "condition"; diff --git a/core/java/android/service/notification/ConditionProviderService.java b/core/java/android/service/notification/ConditionProviderService.java index 44c3887ec35d..9d4b0a4057b3 100644 --- a/core/java/android/service/notification/ConditionProviderService.java +++ b/core/java/android/service/notification/ConditionProviderService.java @@ -95,7 +95,7 @@ public abstract class ConditionProviderService extends Service { /** * A String rule id extra passed to {@link #META_DATA_CONFIGURATION_ACTIVITY}. */ - public static final String EXTRA_RULE_ID = "android.content.automatic.ruleId"; + public static final String EXTRA_RULE_ID = "android.service.notification.extra.RULE_ID"; /** * Called when this service is connected. diff --git a/core/java/android/widget/CalendarView.java b/core/java/android/widget/CalendarView.java index 66896ab70e45..ac44033c21c6 100644 --- a/core/java/android/widget/CalendarView.java +++ b/core/java/android/widget/CalendarView.java @@ -16,6 +16,8 @@ package android.widget; +import com.android.internal.R; + import android.annotation.AttrRes; import android.annotation.ColorInt; import android.annotation.DrawableRes; @@ -27,17 +29,16 @@ import android.content.Context; import android.content.res.Configuration; import android.content.res.TypedArray; import android.graphics.drawable.Drawable; +import android.icu.util.Calendar; +import android.icu.util.TimeZone; import android.util.AttributeSet; import android.util.Log; -import com.android.internal.R; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.Calendar; import java.util.Date; import java.util.Locale; -import java.util.TimeZone; /** * This class is a calendar widget for displaying and selecting dates. The diff --git a/core/java/android/widget/CalendarViewLegacyDelegate.java b/core/java/android/widget/CalendarViewLegacyDelegate.java index f540479ad641..2b91713e3fed 100644 --- a/core/java/android/widget/CalendarViewLegacyDelegate.java +++ b/core/java/android/widget/CalendarViewLegacyDelegate.java @@ -27,6 +27,7 @@ import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Rect; import android.graphics.drawable.Drawable; +import android.icu.util.Calendar; import android.text.format.DateUtils; import android.util.AttributeSet; import android.util.DisplayMetrics; @@ -37,7 +38,6 @@ import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; -import java.util.Calendar; import java.util.Locale; import libcore.icu.LocaleData; diff --git a/core/java/android/widget/CalendarViewMaterialDelegate.java b/core/java/android/widget/CalendarViewMaterialDelegate.java index 0ed75d5f7a42..07b20007f8fa 100644 --- a/core/java/android/widget/CalendarViewMaterialDelegate.java +++ b/core/java/android/widget/CalendarViewMaterialDelegate.java @@ -18,11 +18,10 @@ package android.widget; import android.annotation.StyleRes; import android.content.Context; +import android.icu.util.Calendar; import android.util.AttributeSet; import android.widget.DayPickerView.OnDaySelectedListener; -import java.util.Calendar; - class CalendarViewMaterialDelegate extends CalendarView.AbstractCalendarViewDelegate { private final DayPickerView mDayPickerView; diff --git a/core/java/android/widget/DatePicker.java b/core/java/android/widget/DatePicker.java index 0c5edc5f2f81..8613f9989abc 100644 --- a/core/java/android/widget/DatePicker.java +++ b/core/java/android/widget/DatePicker.java @@ -16,11 +16,15 @@ package android.widget; +import com.android.internal.R; + import android.annotation.Nullable; import android.annotation.Widget; import android.content.Context; import android.content.res.Configuration; import android.content.res.TypedArray; +import android.icu.util.Calendar; +import android.icu.util.TimeZone; import android.os.Parcel; import android.os.Parcelable; import android.util.AttributeSet; @@ -28,11 +32,7 @@ import android.util.SparseArray; import android.view.View; import android.view.accessibility.AccessibilityEvent; -import com.android.internal.R; - -import java.util.Calendar; import java.util.Locale; -import java.util.TimeZone; /** * Provides a widget for selecting a date. diff --git a/core/java/android/widget/DatePickerCalendarDelegate.java b/core/java/android/widget/DatePickerCalendarDelegate.java index 0a23b34b9195..2c80f2811cac 100755 --- a/core/java/android/widget/DatePickerCalendarDelegate.java +++ b/core/java/android/widget/DatePickerCalendarDelegate.java @@ -26,6 +26,7 @@ import android.content.res.Resources; import android.content.res.TypedArray; import android.icu.text.DisplayContext; import android.icu.text.SimpleDateFormat; +import android.icu.util.Calendar; import android.os.Parcelable; import android.text.format.DateFormat; import android.text.format.DateUtils; @@ -40,7 +41,6 @@ import android.view.accessibility.AccessibilityEvent; import android.widget.DayPickerView.OnDaySelectedListener; import android.widget.YearPickerView.OnYearSelectedListener; -import java.util.Calendar; import java.util.Locale; /** diff --git a/core/java/android/widget/DatePickerSpinnerDelegate.java b/core/java/android/widget/DatePickerSpinnerDelegate.java index d8a3c5638b72..17af014c5119 100644 --- a/core/java/android/widget/DatePickerSpinnerDelegate.java +++ b/core/java/android/widget/DatePickerSpinnerDelegate.java @@ -19,6 +19,7 @@ package android.widget; import android.content.Context; import android.content.res.Configuration; import android.content.res.TypedArray; +import android.icu.util.Calendar; import android.os.Parcelable; import android.text.InputType; import android.text.TextUtils; @@ -37,7 +38,6 @@ import java.text.DateFormatSymbols; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Arrays; -import java.util.Calendar; import java.util.Locale; import libcore.icu.ICU; diff --git a/core/java/android/widget/DayPickerPagerAdapter.java b/core/java/android/widget/DayPickerPagerAdapter.java index 97936e7c7c5b..9f02b4485dc0 100644 --- a/core/java/android/widget/DayPickerPagerAdapter.java +++ b/core/java/android/widget/DayPickerPagerAdapter.java @@ -25,14 +25,13 @@ import android.annotation.Nullable; import android.content.Context; import android.content.res.ColorStateList; import android.content.res.TypedArray; +import android.icu.util.Calendar; import android.util.SparseArray; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.SimpleMonthView.OnDayClickListener; -import java.util.Calendar; - /** * An adapter for a list of {@link android.widget.SimpleMonthView} items. */ diff --git a/core/java/android/widget/DayPickerView.java b/core/java/android/widget/DayPickerView.java index dc772fbf63dc..ab89c1f0b534 100644 --- a/core/java/android/widget/DayPickerView.java +++ b/core/java/android/widget/DayPickerView.java @@ -24,6 +24,7 @@ import android.annotation.Nullable; import android.content.Context; import android.content.res.ColorStateList; import android.content.res.TypedArray; +import android.icu.util.Calendar; import android.util.AttributeSet; import android.util.MathUtils; import android.view.LayoutInflater; @@ -31,7 +32,6 @@ import android.view.View; import android.view.ViewGroup; import android.view.accessibility.AccessibilityManager; -import java.util.Calendar; import java.util.Locale; import libcore.icu.LocaleData; diff --git a/core/java/android/widget/SimpleMonthView.java b/core/java/android/widget/SimpleMonthView.java index 97d834a85681..588425fdee66 100644 --- a/core/java/android/widget/SimpleMonthView.java +++ b/core/java/android/widget/SimpleMonthView.java @@ -32,6 +32,7 @@ import android.graphics.Rect; import android.graphics.Typeface; import android.icu.text.DisplayContext; import android.icu.text.SimpleDateFormat; +import android.icu.util.Calendar; import android.os.Bundle; import android.text.TextPaint; import android.text.format.DateFormat; @@ -48,7 +49,6 @@ import android.view.accessibility.AccessibilityNodeInfo; import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction; import java.text.NumberFormat; -import java.util.Calendar; import java.util.Locale; import libcore.icu.LocaleData; diff --git a/core/java/android/widget/YearPickerView.java b/core/java/android/widget/YearPickerView.java index 96624d2f0617..a3f5a67baca1 100644 --- a/core/java/android/widget/YearPickerView.java +++ b/core/java/android/widget/YearPickerView.java @@ -16,18 +16,17 @@ package android.widget; +import com.android.internal.R; + import android.content.Context; import android.content.res.Resources; +import android.icu.util.Calendar; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.accessibility.AccessibilityEvent; -import java.util.Calendar; - -import com.android.internal.R; - /** * Displays a selectable list of years. */ diff --git a/core/res/res/values/arrays.xml b/core/res/res/values/arrays.xml index 30e23f5124c5..e190bd13f5d2 100644 --- a/core/res/res/values/arrays.xml +++ b/core/res/res/values/arrays.xml @@ -22,296 +22,120 @@ <!-- Do not translate. These are all of the drawable resources that should be preloaded by the zygote process before it starts forking application processes. --> <array name="preloaded_drawables"> - <item>@drawable/toast_frame</item> - <item>@drawable/btn_check_on_pressed_holo_light</item> - <item>@drawable/btn_check_on_pressed_holo_dark</item> - <item>@drawable/btn_check_on_holo_light</item> - <item>@drawable/btn_check_on_holo_dark</item> - <item>@drawable/btn_check_on_focused_holo_light</item> - <item>@drawable/btn_check_on_focused_holo_dark</item> - <item>@drawable/btn_check_on_disabled_holo_light</item> - <item>@drawable/btn_check_on_disabled_holo_dark</item> - <item>@drawable/btn_check_on_disabled_focused_holo_light</item> - <item>@drawable/btn_check_on_disabled_focused_holo_dark</item> - <item>@drawable/btn_check_off_pressed_holo_light</item> - <item>@drawable/btn_check_off_pressed_holo_dark</item> - <item>@drawable/btn_check_off_holo_light</item> - <item>@drawable/btn_check_off_holo_dark</item> - <item>@drawable/btn_check_off_focused_holo_light</item> - <item>@drawable/btn_check_off_focused_holo_dark</item> - <item>@drawable/btn_check_off_disabled_holo_light</item> - <item>@drawable/btn_check_off_disabled_holo_dark</item> - <item>@drawable/btn_check_off_disabled_focused_holo_light</item> - <item>@drawable/btn_check_off_disabled_focused_holo_dark</item> - <item>@drawable/btn_check_holo_light</item> - <item>@drawable/btn_check_holo_dark</item> - <item>@drawable/btn_radio_on_pressed_holo_light</item> - <item>@drawable/btn_radio_on_pressed_holo_dark</item> - <item>@drawable/btn_radio_on_holo_light</item> - <item>@drawable/btn_radio_on_holo_dark</item> - <item>@drawable/btn_radio_on_focused_holo_light</item> - <item>@drawable/btn_radio_on_focused_holo_dark</item> - <item>@drawable/btn_radio_on_disabled_holo_light</item> - <item>@drawable/btn_radio_on_disabled_holo_dark</item> - <item>@drawable/btn_radio_on_disabled_focused_holo_light</item> - <item>@drawable/btn_radio_on_disabled_focused_holo_dark</item> - <item>@drawable/btn_radio_off_pressed_holo_light</item> - <item>@drawable/btn_radio_off_pressed_holo_dark</item> - <item>@drawable/btn_radio_off_holo_light</item> - <item>@drawable/btn_radio_off_holo_dark</item> - <item>@drawable/btn_radio_off_focused_holo_light</item> - <item>@drawable/btn_radio_off_focused_holo_dark</item> - <item>@drawable/btn_radio_off_disabled_holo_light</item> - <item>@drawable/btn_radio_off_disabled_holo_dark</item> - <item>@drawable/btn_radio_off_disabled_focused_holo_light</item> - <item>@drawable/btn_radio_off_disabled_focused_holo_dark</item> - <item>@drawable/btn_default_pressed_holo_light</item> - <item>@drawable/btn_default_pressed_holo_dark</item> - <item>@drawable/btn_default_normal_holo_light</item> - <item>@drawable/btn_default_normal_holo_dark</item> - <item>@drawable/btn_default_focused_holo_light</item> - <item>@drawable/btn_default_focused_holo_dark</item> - <item>@drawable/btn_default_disabled_holo_light</item> - <item>@drawable/btn_default_disabled_holo_dark</item> - <item>@drawable/btn_default_disabled_focused_holo_light</item> - <item>@drawable/btn_default_disabled_focused_holo_dark</item> - <item>@drawable/btn_default_holo_dark</item> - <item>@drawable/btn_default_holo_light</item> - <item>@drawable/edit_text_holo_light</item> - <item>@drawable/edit_text_holo_dark</item> - <item>@drawable/text_cursor_holo_light</item> - <item>@drawable/text_cursor_holo_dark</item> - <item>@drawable/text_edit_paste_window</item> - <item>@drawable/expander_close_holo_dark</item> - <item>@drawable/expander_close_holo_light</item> - <item>@drawable/expander_group_holo_dark</item> - <item>@drawable/expander_group_holo_light</item> - <item>@drawable/list_selector_holo_dark</item> - <item>@drawable/list_selector_holo_light</item> - <item>@drawable/list_section_divider_holo_light</item> - <item>@drawable/list_section_divider_holo_dark</item> - <item>@drawable/menu_dropdown_panel_holo_light</item> - <item>@drawable/menu_dropdown_panel_holo_dark</item> - <item>@drawable/menu_panel_holo_light</item> - <item>@drawable/menu_panel_holo_dark</item> - <item>@drawable/spinner_16_outer_holo</item> - <item>@drawable/spinner_16_inner_holo</item> - <item>@drawable/spinner_48_outer_holo</item> - <item>@drawable/spinner_48_inner_holo</item> - <item>@drawable/progress_bg_holo_dark</item> - <item>@drawable/progress_bg_holo_light</item> - <item>@drawable/progress_horizontal_holo_dark</item> - <item>@drawable/progress_horizontal_holo_light</item> - <item>@drawable/progress_large_holo</item> - <item>@drawable/progress_medium_holo</item> - <item>@drawable/progress_primary_holo_dark</item> - <item>@drawable/progress_primary_holo_light</item> - <item>@drawable/progress_secondary_holo_dark</item> - <item>@drawable/progress_secondary_holo_light</item> - <item>@drawable/progress_small_holo</item> - <item>@drawable/scrubber_progress_horizontal_holo_dark</item> - <item>@drawable/scrubber_progress_horizontal_holo_light</item> - <item>@drawable/background_holo_light</item> - <item>@drawable/background_holo_dark</item> - <item>@drawable/screen_background_dark</item> - <item>@drawable/screen_background_dark_transparent</item> - <item>@drawable/screen_background_light</item> - <item>@drawable/screen_background_light_transparent</item> - <item>@drawable/screen_background_selector_dark</item> - <item>@drawable/screen_background_selector_light</item> - <item>@drawable/scrollbar_handle_holo_dark</item> - <item>@drawable/scrollbar_handle_holo_light</item> - <item>@drawable/spinner_background_holo_dark</item> - <item>@drawable/spinner_background_holo_light</item> - <item>@drawable/spinner_ab_default_holo_dark</item> - <item>@drawable/spinner_ab_default_holo_light</item> - <item>@drawable/spinner_ab_disabled_holo_dark</item> - <item>@drawable/spinner_ab_disabled_holo_light</item> - <item>@drawable/spinner_ab_focused_holo_dark</item> - <item>@drawable/spinner_ab_focused_holo_light</item> - <item>@drawable/spinner_ab_pressed_holo_dark</item> - <item>@drawable/spinner_ab_pressed_holo_light</item> - <item>@drawable/spinner_ab_holo_dark</item> - <item>@drawable/spinner_ab_holo_light</item> - <item>@drawable/spinner_default_holo_dark</item> - <item>@drawable/spinner_default_holo_light</item> - <item>@drawable/spinner_disabled_holo_dark</item> - <item>@drawable/spinner_disabled_holo_light</item> - <item>@drawable/spinner_focused_holo_dark</item> - <item>@drawable/spinner_focused_holo_light</item> - <item>@drawable/spinner_pressed_holo_dark</item> - <item>@drawable/spinner_pressed_holo_light</item> - <item>@drawable/cab_background_bottom_holo_dark</item> - <item>@drawable/cab_background_top_holo_light</item> - <item>@drawable/cab_background_bottom_holo_light</item> - <item>@drawable/ic_cab_done_holo_dark</item> - <item>@drawable/cab_background_top_holo_dark</item> - <item>@drawable/ic_cab_done_holo_light</item> - <item>@drawable/btn_cab_done_default_holo_dark</item> - <item>@drawable/btn_cab_done_focused_holo_light</item> - <item>@drawable/btn_cab_done_default_holo_light</item> - <item>@drawable/btn_cab_done_pressed_holo_dark</item> - <item>@drawable/btn_cab_done_focused_holo_dark</item> - <item>@drawable/btn_cab_done_pressed_holo_light</item> - <item>@drawable/btn_cab_done_holo_light</item> - <item>@drawable/btn_cab_done_holo_dark</item> - <item>@drawable/ic_menu_close_clear_cancel</item> - <item>@drawable/ic_menu_copy_holo_dark</item> - <item>@drawable/ic_menu_copy_holo_light</item> - <item>@drawable/ic_menu_cut_holo_dark</item> - <item>@drawable/ic_menu_cut_holo_light</item> - <item>@drawable/ic_menu_more</item> - <item>@drawable/ic_menu_moreoverflow_holo_dark</item> - <item>@drawable/ic_menu_moreoverflow_holo_light</item> - <item>@drawable/ic_menu_paste_holo_dark</item> - <item>@drawable/ic_menu_paste_holo_light</item> - <item>@drawable/ic_menu_selectall_holo_light</item> - <item>@drawable/ic_menu_selectall_holo_dark</item> - <item>@drawable/ic_clear</item> - <item>@drawable/ic_clear_disabled</item> - <item>@drawable/ic_clear_normal</item> - <item>@drawable/ic_search_api_holo_dark</item> - <item>@drawable/ic_search_api_holo_light</item> - <item>@drawable/ic_go</item> - <item>@drawable/ic_voice_search_api_holo_dark</item> - <item>@drawable/ic_voice_search_api_holo_light</item> - <item>@drawable/dialog_bottom_holo_dark</item> - <item>@drawable/dialog_bottom_holo_light</item> - <item>@drawable/dialog_middle_holo_dark</item> - <item>@drawable/dialog_middle_holo_light</item> - <item>@drawable/dialog_top_holo_dark</item> - <item>@drawable/dialog_top_holo_light</item> - <item>@drawable/ic_dialog_alert_holo_dark</item> - <item>@drawable/ic_dialog_alert_holo_light</item> - <item>@drawable/list_divider_holo_dark</item> - <item>@drawable/list_divider_holo_light</item> - <item>@drawable/list_divider_holo_light</item> - <item>@drawable/ab_transparent_dark_holo</item> - <item>@drawable/ab_stacked_transparent_dark_holo</item> - <item>@drawable/ab_bottom_transparent_dark_holo</item> - <item>@drawable/ab_solid_dark_holo</item> - <item>@drawable/ab_stacked_solid_dark_holo</item> - <item>@drawable/ab_bottom_solid_dark_holo</item> - <item>@drawable/ab_transparent_light_holo</item> - <item>@drawable/ab_stacked_transparent_light_holo</item> - <item>@drawable/ab_bottom_transparent_light_holo</item> - <item>@drawable/ab_solid_light_holo</item> - <item>@drawable/ab_stacked_solid_light_holo</item> - <item>@drawable/ab_bottom_solid_light_holo</item> - <item>@drawable/ab_solid_shadow_holo</item> - <item>@drawable/item_background_holo_dark</item> - <item>@drawable/item_background_holo_light</item> - <item>@drawable/fastscroll_thumb_holo</item> - <item>@drawable/fastscroll_thumb_pressed_holo</item> - <item>@drawable/fastscroll_thumb_default_holo</item> - <item>@drawable/fastscroll_track_holo_dark</item> - <item>@drawable/fastscroll_track_pressed_holo_dark</item> - <item>@drawable/fastscroll_track_default_holo_dark</item> - <item>@drawable/fastscroll_track_holo_light</item> - <item>@drawable/fastscroll_track_pressed_holo_light</item> - <item>@drawable/fastscroll_track_default_holo_light</item> - <item>@drawable/editbox_dropdown_background_dark</item> - <item>@drawable/textfield_searchview_holo_dark</item> - <item>@drawable/textfield_searchview_right_holo_dark</item> - <item>@drawable/textfield_searchview_holo_light</item> - <item>@drawable/textfield_searchview_right_holo_light</item> - <item>@drawable/textfield_search_selected_holo_dark</item> - <item>@drawable/textfield_search_default_holo_dark</item> - <item>@drawable/textfield_search_right_selected_holo_dark</item> - <item>@drawable/textfield_search_right_default_holo_dark</item> - <item>@drawable/textfield_search_selected_holo_light</item> - <item>@drawable/textfield_search_default_holo_light</item> - <item>@drawable/textfield_search_right_selected_holo_light</item> - <item>@drawable/textfield_search_right_default_holo_light</item> - <item>@drawable/tab_indicator_holo</item> - <item>@drawable/tab_unselected_holo</item> - <item>@drawable/tab_selected_holo</item> - <item>@drawable/tab_unselected_focused_holo</item> - <item>@drawable/tab_selected_focused_holo</item> - <item>@drawable/tab_unselected_pressed_holo</item> - <item>@drawable/tab_selected_pressed_holo</item> - <item>@drawable/quickcontact_badge_overlay_dark</item> - <item>@drawable/quickcontact_badge_overlay_normal_dark</item> - <item>@drawable/quickcontact_badge_overlay_pressed_dark</item> - <item>@drawable/quickcontact_badge_overlay_light</item> - <item>@drawable/quickcontact_badge_overlay_normal_light</item> - <item>@drawable/quickcontact_badge_overlay_pressed_light</item> - - <!-- Material assets --> - <item>@drawable/ab_share_pack_material</item> - <item>@drawable/ab_solid_shadow_material</item> - <item>@drawable/activated_background_material</item> - <item>@drawable/btn_borderless_material</item> - <item>@drawable/btn_check_material_anim</item> - <item>@drawable/btn_default_material</item> - <item>@drawable/btn_radio_material_anim</item> - <item>@drawable/btn_star_material</item> - <item>@drawable/btn_toggle_material</item> - <item>@drawable/cab_background_bottom_material</item> - <item>@drawable/cab_background_top_material</item> - <item>@drawable/dialog_background_material</item> - <item>@drawable/edit_text_material</item> - <item>@drawable/expander_group_material</item> - <item>@drawable/fastscroll_label_left_material</item> - <item>@drawable/fastscroll_label_right_material</item> - <item>@drawable/fastscroll_thumb_material</item> - <item>@drawable/fastscroll_track_material</item> - <item>@drawable/floating_popup_background_dark</item> - <item>@drawable/floating_popup_background_light</item> - <item>@drawable/ic_ab_back_material</item> - <item>@drawable/ic_ab_back_material_dark</item> - <item>@drawable/ic_ab_back_material_light</item> - <item>@drawable/ic_clear_material</item> - <item>@drawable/ic_commit_search_api_material</item> - <item>@drawable/ic_dialog_alert_material</item> - <item>@drawable/ic_find_next_material</item> - <item>@drawable/ic_find_previous_material</item> - <item>@drawable/ic_go_search_api_material</item> - <item>@drawable/ic_media_route_connecting_material</item> - <item>@drawable/ic_media_route_material</item> - <item>@drawable/ic_menu_copy_material</item> - <item>@drawable/ic_menu_cut_material</item> - <item>@drawable/ic_menu_find_material</item> - <item>@drawable/ic_menu_moreoverflow_material</item> - <item>@drawable/ic_menu_paste_material</item> - <item>@drawable/ic_menu_search_material</item> - <item>@drawable/ic_menu_selectall_material</item> - <item>@drawable/ic_menu_share_material</item> - <item>@drawable/ic_search_api_material</item> - <item>@drawable/ic_voice_search_api_material</item> - <item>@drawable/item_background_borderless_material</item> - <item>@drawable/item_background_borderless_material_dark</item> - <item>@drawable/item_background_borderless_material_light</item> - <item>@drawable/item_background_material</item> - <item>@drawable/item_background_material_dark</item> - <item>@drawable/item_background_material_light</item> - <item>@drawable/list_divider_material</item> - <item>@drawable/list_section_divider_material</item> - <item>@drawable/notification_material_action_background</item> - <item>@drawable/notification_material_media_action_background</item> - <item>@drawable/popup_background_material</item> - <item>@drawable/progress_horizontal_material</item> - <item>@drawable/progress_indeterminate_horizontal_material</item> - <item>@drawable/progress_large_material</item> - <item>@drawable/progress_medium_material</item> - <item>@drawable/progress_small_material</item> - <item>@drawable/ratingbar_material</item> - <item>@drawable/ratingbar_small_material</item> - <item>@drawable/ratingbar_indicator_material</item> - <item>@drawable/scrollbar_handle_material</item> - <item>@drawable/seekbar_thumb_material_anim</item> - <item>@drawable/seekbar_track_material</item> - <item>@drawable/spinner_background_material</item> - <item>@drawable/spinner_textfield_background_material</item> - <item>@drawable/switch_thumb_material_anim</item> - <item>@drawable/switch_track_material</item> - <item>@drawable/tab_indicator_material</item> - <item>@drawable/text_cursor_material</item> - <item>@drawable/textfield_search_material</item> - <item>@drawable/text_select_handle_left_material</item> - <item>@drawable/text_select_handle_middle_material</item> - <item>@drawable/text_select_handle_right_material</item> - <item>@drawable/ic_account_circle</item> + <item>@drawable/ab_share_pack_material</item> + <item>@drawable/ab_solid_shadow_material</item> + <item>@drawable/action_bar_item_background_material</item> + <item>@drawable/activated_background_material</item> + <item>@drawable/btn_borderless_material</item> + <item>@drawable/btn_check_material_anim</item> + <item>@drawable/btn_colored_material</item> + <item>@drawable/btn_default_material</item> + <item>@drawable/btn_group_holo_dark</item> + <item>@drawable/btn_group_holo_light</item> + <item>@drawable/btn_radio_material_anim</item> + <item>@drawable/btn_star_material</item> + <item>@drawable/btn_toggle_material</item> + <item>@drawable/button_inset</item> + <item>@drawable/cab_background_bottom_material</item> + <item>@drawable/cab_background_top_material</item> + <item>@drawable/control_background_32dp_material</item> + <item>@drawable/control_background_40dp_material</item> + <item>@drawable/dialog_background_material</item> + <item>@drawable/editbox_dropdown_background_dark</item> + <item>@drawable/edit_text_material</item> + <item>@drawable/expander_group_material</item> + <item>@drawable/fastscroll_label_left_material</item> + <item>@drawable/fastscroll_label_right_material</item> + <item>@drawable/fastscroll_thumb_material</item> + <item>@drawable/fastscroll_track_material</item> + <item>@drawable/floating_popup_background_dark</item> + <item>@drawable/floating_popup_background_light</item> + <item>@drawable/gallery_item_background</item> + <item>@drawable/ic_ab_back_material</item> + <item>@drawable/ic_ab_back_material_dark</item> + <item>@drawable/ic_ab_back_material_light</item> + <item>@drawable/ic_account_circle</item> + <item>@drawable/ic_arrow_drop_right_black_24dp</item> + <item>@drawable/ic_clear</item> + <item>@drawable/ic_clear_disabled</item> + <item>@drawable/ic_clear_material</item> + <item>@drawable/ic_clear_normal</item> + <item>@drawable/ic_commit_search_api_material</item> + <item>@drawable/ic_dialog_alert_material</item> + <item>@drawable/ic_find_next_material</item> + <item>@drawable/ic_find_previous_material</item> + <item>@drawable/ic_go</item> + <item>@drawable/ic_go_search_api_material</item> + <item>@drawable/ic_media_route_connecting_material</item> + <item>@drawable/ic_media_route_material</item> + <item>@drawable/ic_menu_close_clear_cancel</item> + <item>@drawable/ic_menu_copy_material</item> + <item>@drawable/ic_menu_cut_material</item> + <item>@drawable/ic_menu_find_material</item> + <item>@drawable/ic_menu_more</item> + <item>@drawable/ic_menu_moreoverflow_material</item> + <item>@drawable/ic_menu_paste_material</item> + <item>@drawable/ic_menu_search_material</item> + <item>@drawable/ic_menu_selectall_material</item> + <item>@drawable/ic_menu_share_material</item> + <item>@drawable/ic_search_api_material</item> + <item>@drawable/ic_voice_search_api_material</item> + <item>@drawable/indicator_check_mark_dark</item> + <item>@drawable/indicator_check_mark_light</item> + <item>@drawable/item_background_borderless_material</item> + <item>@drawable/item_background_borderless_material_dark</item> + <item>@drawable/item_background_borderless_material_light</item> + <item>@drawable/item_background_material</item> + <item>@drawable/item_background_material_dark</item> + <item>@drawable/item_background_material_light</item> + <item>@drawable/list_choice_background_material</item> + <item>@drawable/list_divider_material</item> + <item>@drawable/list_section_divider_material</item> + <item>@drawable/menu_background_fill_parent_width</item> + <item>@drawable/notification_material_action_background</item> + <item>@drawable/notification_material_media_action_background</item> + <item>@drawable/number_picker_divider_material</item> + <item>@drawable/popup_background_material</item> + <item>@drawable/popup_inline_error_above_holo_dark</item> + <item>@drawable/popup_inline_error_above_holo_light</item> + <item>@drawable/popup_inline_error_holo_dark</item> + <item>@drawable/popup_inline_error_holo_light</item> + <item>@drawable/progress_horizontal_material</item> + <item>@drawable/progress_indeterminate_horizontal_material</item> + <item>@drawable/progress_large_material</item> + <item>@drawable/progress_medium_material</item> + <item>@drawable/progress_small_material</item> + <item>@drawable/quickcontact_badge_overlay_dark</item> + <item>@drawable/quickcontact_badge_overlay_light</item> + <item>@drawable/quickcontact_badge_overlay_normal_dark</item> + <item>@drawable/quickcontact_badge_overlay_normal_light</item> + <item>@drawable/quickcontact_badge_overlay_pressed_dark</item> + <item>@drawable/quickcontact_badge_overlay_pressed_light</item> + <item>@drawable/ratingbar_indicator_material</item> + <item>@drawable/ratingbar_material</item> + <item>@drawable/ratingbar_small_material</item> + <item>@drawable/screen_background_dark</item> + <item>@drawable/screen_background_dark_transparent</item> + <item>@drawable/screen_background_light</item> + <item>@drawable/screen_background_light_transparent</item> + <item>@drawable/screen_background_selector_dark</item> + <item>@drawable/screen_background_selector_light</item> + <item>@drawable/scrollbar_handle_material</item> + <item>@drawable/seekbar_thumb_material_anim</item> + <item>@drawable/seekbar_tick_mark_material</item> + <item>@drawable/seekbar_track_material</item> + <item>@drawable/spinner_background_material</item> + <item>@drawable/spinner_textfield_background_material</item> + <item>@drawable/switch_thumb_material_anim</item> + <item>@drawable/switch_track_material</item> + <item>@drawable/tab_indicator_material</item> + <item>@drawable/text_cursor_material</item> + <item>@drawable/text_edit_paste_window</item> + <item>@drawable/textfield_search_material</item> + <item>@drawable/text_select_handle_left_material</item> + <item>@drawable/text_select_handle_middle_material</item> + <item>@drawable/text_select_handle_right_material</item> + <item>@drawable/toast_frame</item> </array> <!-- Do not translate. These are all of the color state list resources that should be diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml index 45ee778f3a9e..22329422251b 100644 --- a/core/res/res/values/strings.xml +++ b/core/res/res/values/strings.xml @@ -4318,6 +4318,6 @@ <string name="audit_safemode_notification_details">Touch to learn more.</string> <!-- Accessibilty string added to a widget that has been suspended [CHAR LIMIT=20] --> - <string name="suspended_widget_accessibility">Suspended <xliff:g id="label" example="Calendar">%1$s</xliff:g></string> + <string name="suspended_widget_accessibility">Disabled <xliff:g id="label" example="Calendar">%1$s</xliff:g></string> </resources> diff --git a/libs/hwui/FrameBuilder.cpp b/libs/hwui/FrameBuilder.cpp index 746e99a96123..cb8e55fbb21c 100644 --- a/libs/hwui/FrameBuilder.cpp +++ b/libs/hwui/FrameBuilder.cpp @@ -878,11 +878,49 @@ void FrameBuilder::deferEndLayerOp(const EndLayerOp& /* ignored */) { restoreForLayer(); + // saveLayer will clip & translate the draw contents, so we need + // to translate the drawLayer by how much the contents was translated + // TODO: Unify this with beginLayerOp so we don't have to calculate this + // twice + uint32_t layerWidth = (uint32_t) beginLayerOp.unmappedBounds.getWidth(); + uint32_t layerHeight = (uint32_t) beginLayerOp.unmappedBounds.getHeight(); + + auto previous = mCanvasState.currentSnapshot(); + Vector3 lightCenter = previous->getRelativeLightCenter(); + + // Combine all transforms used to present saveLayer content: + // parent content transform * canvas transform * bounds offset + Matrix4 contentTransform(*(previous->transform)); + contentTransform.multiply(beginLayerOp.localMatrix); + contentTransform.translate(beginLayerOp.unmappedBounds.left, + beginLayerOp.unmappedBounds.top); + + Matrix4 inverseContentTransform; + inverseContentTransform.loadInverse(contentTransform); + + // map the light center into layer-relative space + inverseContentTransform.mapPoint3d(lightCenter); + + // Clip bounds of temporary layer to parent's clip rect, so: + Rect saveLayerBounds(layerWidth, layerHeight); + // 1) transform Rect(width, height) into parent's space + // note: left/top offsets put in contentTransform above + contentTransform.mapRect(saveLayerBounds); + // 2) intersect with parent's clip + saveLayerBounds.doIntersect(previous->getRenderTargetClip()); + // 3) and transform back + inverseContentTransform.mapRect(saveLayerBounds); + saveLayerBounds.doIntersect(Rect(layerWidth, layerHeight)); + saveLayerBounds.roundOut(); + + Matrix4 localMatrix(beginLayerOp.localMatrix); + localMatrix.translate(saveLayerBounds.left, saveLayerBounds.top); + // record the draw operation into the previous layer's list of draw commands // uses state from the associated beginLayerOp, since it has all the state needed for drawing LayerOp* drawLayerOp = mAllocator.create_trivial<LayerOp>( beginLayerOp.unmappedBounds, - beginLayerOp.localMatrix, + localMatrix, beginLayerOp.localClip, beginLayerOp.paint, &(mLayerBuilders[finishedLayerIndex]->offscreenBuffer)); diff --git a/libs/hwui/OpDumper.cpp b/libs/hwui/OpDumper.cpp index cab93e8faf6a..ec9ffdeebb4c 100644 --- a/libs/hwui/OpDumper.cpp +++ b/libs/hwui/OpDumper.cpp @@ -45,5 +45,9 @@ void OpDumper::dump(const RecordedOp& op, std::ostream& output, int level) { } } +const char* OpDumper::opName(const RecordedOp& op) { + return sOpNameLut[op.opId]; +} + } // namespace uirenderer } // namespace android diff --git a/libs/hwui/OpDumper.h b/libs/hwui/OpDumper.h index c99b51796b5c..a82289c7cca2 100644 --- a/libs/hwui/OpDumper.h +++ b/libs/hwui/OpDumper.h @@ -26,6 +26,7 @@ struct RecordedOp; class OpDumper { public: static void dump(const RecordedOp& op, std::ostream& output, int level = 0); + static const char* opName(const RecordedOp& op); }; }; // namespace uirenderer diff --git a/libs/hwui/tests/unit/FrameBuilderTests.cpp b/libs/hwui/tests/unit/FrameBuilderTests.cpp index 0f16b1512586..af1fbd8254f9 100644 --- a/libs/hwui/tests/unit/FrameBuilderTests.cpp +++ b/libs/hwui/tests/unit/FrameBuilderTests.cpp @@ -2025,6 +2025,7 @@ struct SaveLayerAlphaData { uint32_t layerHeight = 0; Rect rectClippedBounds; Matrix4 rectMatrix; + Matrix4 drawLayerMatrix; }; /** * Constructs a view to hit the temporary layer alpha property implementation: @@ -2060,6 +2061,7 @@ void testSaveLayerAlphaClip(SaveLayerAlphaData* outObservedData, } void onLayerOp(const LayerOp& op, const BakedOpState& state) override { EXPECT_EQ(3, mIndex++); + mOutData->drawLayerMatrix = state.computedState.transform; } void recycleTemporaryLayer(OffscreenBuffer* offscreenBuffer) override { EXPECT_EQ(4, mIndex++); @@ -2108,6 +2110,9 @@ RENDERTHREAD_TEST(FrameBuilder, renderPropSaveLayerAlphaClipBig) { expected.loadTranslate(0, -2000, 0); EXPECT_MATRIX_APPROX_EQ(expected, observedData.rectMatrix) << "expect content to be translated as part of being clipped"; + expected.loadTranslate(10, 0, 0); + EXPECT_MATRIX_APPROX_EQ(expected, observedData.drawLayerMatrix) + << "expect drawLayer to be translated as part of being clipped"; } RENDERTHREAD_TEST(FrameBuilder, renderPropSaveLayerAlphaRotate) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java index 6a37099d0b7d..522f2502e256 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java @@ -220,18 +220,8 @@ public class NotificationPanelView extends PanelView implements super.onFinishInflate(); mKeyguardStatusBar = (KeyguardStatusBarView) findViewById(R.id.keyguard_header); mKeyguardStatusView = (KeyguardStatusView) findViewById(R.id.keyguard_status_view); - mQsAutoReinflateContainer = - (AutoReinflateContainer) findViewById(R.id.qs_auto_reinflate_container); - mQsAutoReinflateContainer.addInflateListener(new InflateListener() { - @Override - public void onInflated(View v) { - mQsContainer = (QSContainer) v.findViewById(R.id.quick_settings_container); - mQsContainer.setPanelView(NotificationPanelView.this); - mQsContainer.getHeader().findViewById(R.id.expand_indicator) - .setOnClickListener(NotificationPanelView.this); - } - }); mClockView = (TextView) findViewById(R.id.clock_view); + mNotificationContainerParent = (NotificationsQuickSettingsContainer) findViewById(R.id.notification_container_parent); mNotificationStackScroller = (NotificationStackScrollLayout) @@ -239,22 +229,34 @@ public class NotificationPanelView extends PanelView implements mNotificationStackScroller.setOnHeightChangedListener(this); mNotificationStackScroller.setOverscrollTopChangedListener(this); mNotificationStackScroller.setOnEmptySpaceClickListener(this); - mNotificationStackScroller.setQsContainer(mQsContainer); mKeyguardBottomArea = (KeyguardBottomAreaView) findViewById(R.id.keyguard_bottom_area); mQsNavbarScrim = findViewById(R.id.qs_navbar_scrim); mAfforanceHelper = new KeyguardAffordanceHelper(this, getContext()); mLastOrientation = getResources().getConfiguration().orientation; - // recompute internal state when qspanel height changes - mQsContainer.addOnLayoutChangeListener(new OnLayoutChangeListener() { + mQsAutoReinflateContainer = + (AutoReinflateContainer) findViewById(R.id.qs_auto_reinflate_container); + mQsAutoReinflateContainer.addInflateListener(new InflateListener() { @Override - public void onLayoutChange(View v, int left, int top, int right, int bottom, - int oldLeft, int oldTop, int oldRight, int oldBottom) { - final int height = bottom - top; - final int oldHeight = oldBottom - oldTop; - if (height != oldHeight) { - onQsHeightChanged(); - } + public void onInflated(View v) { + mQsContainer = (QSContainer) v.findViewById(R.id.quick_settings_container); + mQsContainer.setPanelView(NotificationPanelView.this); + mQsContainer.getHeader().findViewById(R.id.expand_indicator) + .setOnClickListener(NotificationPanelView.this); + + // recompute internal state when qspanel height changes + mQsContainer.addOnLayoutChangeListener(new OnLayoutChangeListener() { + @Override + public void onLayoutChange(View v, int left, int top, int right, int bottom, + int oldLeft, int oldTop, int oldRight, int oldBottom) { + final int height = bottom - top; + final int oldHeight = oldBottom - oldTop; + if (height != oldHeight) { + onQsHeightChanged(); + } + } + }); + mNotificationStackScroller.setQsContainer(mQsContainer); } }); } diff --git a/services/core/java/com/android/server/notification/ScheduleConditionProvider.java b/services/core/java/com/android/server/notification/ScheduleConditionProvider.java index 15a63ec6875b..e3dcf1401f3a 100644 --- a/services/core/java/com/android/server/notification/ScheduleConditionProvider.java +++ b/services/core/java/com/android/server/notification/ScheduleConditionProvider.java @@ -36,6 +36,7 @@ import android.util.Slog; import com.android.server.notification.NotificationManagerService.DumpFilter; import java.io.PrintWriter; +import java.util.Calendar; import java.util.TimeZone; /** @@ -237,6 +238,14 @@ public class ScheduleConditionProvider extends SystemConditionProviderService { @Override public void onReceive(Context context, Intent intent) { if (DEBUG) Slog.d(TAG, "onReceive " + intent.getAction()); + if (Intent.ACTION_TIMEZONE_CHANGED.equals(intent.getAction())) { + for (Uri conditionId : mSubscriptions.keySet()) { + final ScheduleCalendar cal = mSubscriptions.get(conditionId); + if (cal != null) { + cal.setTimeZone(Calendar.getInstance().getTimeZone()); + } + } + } evaluateSubscriptions(); } }; diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/Layout.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/Layout.java index cbd041593d95..1afd90d39f31 100644 --- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/Layout.java +++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/Layout.java @@ -23,6 +23,7 @@ import com.android.ide.common.rendering.api.SessionParams; import com.android.ide.common.rendering.api.StyleResourceValue; import com.android.layoutlib.bridge.Bridge; import com.android.layoutlib.bridge.android.BridgeContext; +import com.android.layoutlib.bridge.android.RenderParamsFlags; import com.android.layoutlib.bridge.bars.AppCompatActionBar; import com.android.layoutlib.bridge.bars.BridgeActionBar; import com.android.layoutlib.bridge.bars.Config; @@ -232,8 +233,10 @@ class Layout extends RelativeLayout { private BridgeActionBar createActionBar(@NonNull BridgeContext context, @NonNull SessionParams params) { + boolean isMenu = "menu".equals(params.getFlag(RenderParamsFlags.FLAG_KEY_ROOT_TAG)); + BridgeActionBar actionBar; - if (mBuilder.isThemeAppCompat()) { + if (mBuilder.isThemeAppCompat() && !isMenu) { actionBar = new AppCompatActionBar(context, params); } else { actionBar = new FrameworkActionBar(context, params); |