summaryrefslogtreecommitdiff
path: root/android/widget
diff options
context:
space:
mode:
authorJustin Klaassen <justinklaassen@google.com>2017-09-18 17:38:50 -0400
committerJustin Klaassen <justinklaassen@google.com>2017-09-18 17:38:50 -0400
commitbc81c7ada5aab3806dd0b17498f5c9672c9b33c4 (patch)
tree7fdcc541a9ac9e92134f1a80cec557fee772bcf8 /android/widget
parent10d07c88d69cc64f73a069163e7ea5ba2519a099 (diff)
downloadandroid-28-bc81c7ada5aab3806dd0b17498f5c9672c9b33c4.tar.gz
Import Android SDK Platform P [4344336]
/google/data/ro/projects/android/fetch_artifact \ --bid 4344336 \ --target sdk_phone_armv7-win_sdk \ sdk-repo-linux-sources-4344336.zip AndroidVersion.ApiLevel has been modified to appear as 28 Change-Id: If482fcd4cfaf6c5e544e5574926be25a293e9a6d
Diffstat (limited to 'android/widget')
-rw-r--r--android/widget/DatePickerCalendarDelegate.java46
-rw-r--r--android/widget/Editor.java84
-rw-r--r--android/widget/TextView.java13
3 files changed, 77 insertions, 66 deletions
diff --git a/android/widget/DatePickerCalendarDelegate.java b/android/widget/DatePickerCalendarDelegate.java
index 60b47572..e40023d0 100644
--- a/android/widget/DatePickerCalendarDelegate.java
+++ b/android/widget/DatePickerCalendarDelegate.java
@@ -22,11 +22,10 @@ import android.content.res.ColorStateList;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.content.res.TypedArray;
+import android.icu.text.DateFormat;
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.util.AttributeSet;
import android.util.StateSet;
import android.view.HapticFeedbackConstants;
@@ -62,8 +61,8 @@ class DatePickerCalendarDelegate extends DatePicker.AbstractDatePickerDelegate {
private static final int[] ATTRS_DISABLED_ALPHA = new int[] {
com.android.internal.R.attr.disabledAlpha};
- private SimpleDateFormat mYearFormat;
- private SimpleDateFormat mMonthDayFormat;
+ private DateFormat mYearFormat;
+ private DateFormat mMonthDayFormat;
// Top-level container.
private ViewGroup mContainer;
@@ -273,19 +272,16 @@ class DatePickerCalendarDelegate extends DatePicker.AbstractDatePickerDelegate {
/**
* Listener called when the user clicks on a header item.
*/
- private final OnClickListener mOnHeaderClickListener = new OnClickListener() {
- @Override
- public void onClick(View v) {
- tryVibrate();
+ private final OnClickListener mOnHeaderClickListener = v -> {
+ tryVibrate();
- switch (v.getId()) {
- case R.id.date_picker_header_year:
- setCurrentView(VIEW_YEAR);
- break;
- case R.id.date_picker_header_date:
- setCurrentView(VIEW_MONTH_DAY);
- break;
- }
+ switch (v.getId()) {
+ case R.id.date_picker_header_year:
+ setCurrentView(VIEW_YEAR);
+ break;
+ case R.id.date_picker_header_date:
+ setCurrentView(VIEW_MONTH_DAY);
+ break;
}
};
@@ -299,10 +295,9 @@ class DatePickerCalendarDelegate extends DatePicker.AbstractDatePickerDelegate {
}
// Update the date formatter.
- final String datePattern = DateFormat.getBestDateTimePattern(locale, "EMMMd");
- mMonthDayFormat = new SimpleDateFormat(datePattern, locale);
+ mMonthDayFormat = DateFormat.getInstanceForSkeleton("EMMMd", locale);
mMonthDayFormat.setContext(DisplayContext.CAPITALIZATION_FOR_STANDALONE);
- mYearFormat = new SimpleDateFormat("y", locale);
+ mYearFormat = DateFormat.getInstanceForSkeleton("y", locale);
// Update the header text.
onCurrentDateChanged(false);
@@ -344,14 +339,11 @@ class DatePickerCalendarDelegate extends DatePicker.AbstractDatePickerDelegate {
case VIEW_YEAR:
final int year = mCurrentDate.get(Calendar.YEAR);
mYearPickerView.setYear(year);
- mYearPickerView.post(new Runnable() {
- @Override
- public void run() {
- mYearPickerView.requestFocus();
- final View selected = mYearPickerView.getSelectedView();
- if (selected != null) {
- selected.requestFocus();
- }
+ mYearPickerView.post(() -> {
+ mYearPickerView.requestFocus();
+ final View selected = mYearPickerView.getSelectedView();
+ if (selected != null) {
+ selected.requestFocus();
}
});
diff --git a/android/widget/Editor.java b/android/widget/Editor.java
index d23dfe46..0f617242 100644
--- a/android/widget/Editor.java
+++ b/android/widget/Editor.java
@@ -41,6 +41,7 @@ import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
+import android.metrics.LogMaker;
import android.os.Bundle;
import android.os.LocaleList;
import android.os.Parcel;
@@ -1585,49 +1586,49 @@ public class Editor {
outText.startOffset = 0;
outText.selectionStart = mTextView.getSelectionStart();
outText.selectionEnd = mTextView.getSelectionEnd();
+ outText.hint = mTextView.getHint();
return true;
}
boolean reportExtractedText() {
final Editor.InputMethodState ims = mInputMethodState;
- if (ims != null) {
- final boolean contentChanged = ims.mContentChanged;
- if (contentChanged || ims.mSelectionModeChanged) {
- ims.mContentChanged = false;
- ims.mSelectionModeChanged = false;
- final ExtractedTextRequest req = ims.mExtractedTextRequest;
- if (req != null) {
- InputMethodManager imm = InputMethodManager.peekInstance();
- if (imm != null) {
- if (TextView.DEBUG_EXTRACT) {
- Log.v(TextView.LOG_TAG, "Retrieving extracted start="
- + ims.mChangedStart
- + " end=" + ims.mChangedEnd
- + " delta=" + ims.mChangedDelta);
- }
- if (ims.mChangedStart < 0 && !contentChanged) {
- ims.mChangedStart = EXTRACT_NOTHING;
- }
- if (extractTextInternal(req, ims.mChangedStart, ims.mChangedEnd,
- ims.mChangedDelta, ims.mExtractedText)) {
- if (TextView.DEBUG_EXTRACT) {
- Log.v(TextView.LOG_TAG,
- "Reporting extracted start="
- + ims.mExtractedText.partialStartOffset
- + " end=" + ims.mExtractedText.partialEndOffset
- + ": " + ims.mExtractedText.text);
- }
-
- imm.updateExtractedText(mTextView, req.token, ims.mExtractedText);
- ims.mChangedStart = EXTRACT_UNKNOWN;
- ims.mChangedEnd = EXTRACT_UNKNOWN;
- ims.mChangedDelta = 0;
- ims.mContentChanged = false;
- return true;
- }
- }
- }
- }
+ if (ims == null) {
+ return false;
+ }
+ ims.mSelectionModeChanged = false;
+ final ExtractedTextRequest req = ims.mExtractedTextRequest;
+ if (req == null) {
+ return false;
+ }
+ final InputMethodManager imm = InputMethodManager.peekInstance();
+ if (imm == null) {
+ return false;
+ }
+ if (TextView.DEBUG_EXTRACT) {
+ Log.v(TextView.LOG_TAG, "Retrieving extracted start="
+ + ims.mChangedStart
+ + " end=" + ims.mChangedEnd
+ + " delta=" + ims.mChangedDelta);
+ }
+ if (ims.mChangedStart < 0 && !ims.mContentChanged) {
+ ims.mChangedStart = EXTRACT_NOTHING;
+ }
+ if (extractTextInternal(req, ims.mChangedStart, ims.mChangedEnd,
+ ims.mChangedDelta, ims.mExtractedText)) {
+ if (TextView.DEBUG_EXTRACT) {
+ Log.v(TextView.LOG_TAG,
+ "Reporting extracted start="
+ + ims.mExtractedText.partialStartOffset
+ + " end=" + ims.mExtractedText.partialEndOffset
+ + ": " + ims.mExtractedText.text);
+ }
+
+ imm.updateExtractedText(mTextView, req.token, ims.mExtractedText);
+ ims.mChangedStart = EXTRACT_UNKNOWN;
+ ims.mChangedEnd = EXTRACT_UNKNOWN;
+ ims.mChangedDelta = 0;
+ ims.mContentChanged = false;
+ return true;
}
return false;
}
@@ -3932,6 +3933,10 @@ public class Editor {
textClassification.getLabel())
.setIcon(textClassification.getIcon())
.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
+ mMetricsLogger.write(
+ new LogMaker(MetricsEvent.TEXT_SELECTION_MENU_ITEM_ASSIST)
+ .setType(MetricsEvent.TYPE_OPEN)
+ .setSubtype(textClassification.getLogType()));
}
}
@@ -3973,6 +3978,9 @@ public class Editor {
.onClick(mTextView);
}
}
+ mMetricsLogger.action(
+ MetricsEvent.ACTION_TEXT_SELECTION_MENU_ITEM_ASSIST,
+ textClassification.getLogType());
stopTextActionMode();
return true;
}
diff --git a/android/widget/TextView.java b/android/widget/TextView.java
index 4b6c4d35..efcc3a2f 100644
--- a/android/widget/TextView.java
+++ b/android/widget/TextView.java
@@ -5547,6 +5547,14 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
*/
@android.view.RemotableViewMethod
public final void setHint(CharSequence hint) {
+ setHintInternal(hint);
+
+ if (isInputMethodTarget()) {
+ mEditor.reportExtractedText();
+ }
+ }
+
+ private void setHintInternal(CharSequence hint) {
mHint = TextUtils.stringOrSpannedString(hint);
if (mLayout != null) {
@@ -7644,6 +7652,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
} else {
MetaKeyKeyListener.stopSelecting(this, sp);
}
+
+ setHintInternal(text.hint);
}
/**
@@ -8433,7 +8443,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
if (mMaxMode != LINES) {
desired = Math.min(desired, mMaximum);
- } else if (cap && linecount > mMaximum && layout instanceof DynamicLayout) {
+ } else if (cap && linecount > mMaximum && (layout instanceof DynamicLayout
+ || layout instanceof BoringLayout)) {
desired = layout.getLineTop(mMaximum);
if (dr != null) {