Commit fe2b322b authored by Isha Bobra's avatar Isha Bobra Committed by Commit Bot

Android Browser Accessibility: Read "B" as "bytes"

This CL wraps "xyz B" shown on Data saver screen for data statistics
with TtsSpan of type TYPE_MEASURE so that TTS engine announces it as "xyz bytes"

Bug: 461909, 786947
Change-Id: I8924a3cc904e9dc1f0cccc1dc1fa955f9d52a2b2
Reviewed-on: https://chromium-review.googlesource.com/784052
Commit-Queue: Isha Bobra <ibobra@google.com>
Reviewed-by: default avatarDavid Trainor <dtrainor@chromium.org>
Reviewed-by: default avatarTheresa <twellington@chromium.org>
Reviewed-by: default avatarFinnur Thorarinsson <finnur@chromium.org>
Reviewed-by: default avatarDominic Mazzoni <dmazzoni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#521968}
parent ba14e675
...@@ -5,7 +5,8 @@ ...@@ -5,7 +5,8 @@
package org.chromium.chrome.browser.preferences.datareduction; package org.chromium.chrome.browser.preferences.datareduction;
import android.content.Context; import android.content.Context;
import android.text.format.Formatter;
import org.chromium.chrome.browser.util.FileSizeUtil;
/** /**
* Stores the data used and saved by a hostname. * Stores the data used and saved by a hostname.
...@@ -61,8 +62,8 @@ public class DataReductionDataUseItem { ...@@ -61,8 +62,8 @@ public class DataReductionDataUseItem {
* @param context An Android context. * @param context An Android context.
* @return A formatted string of the data used. * @return A formatted string of the data used.
*/ */
public String getFormattedDataUsed(Context context) { public CharSequence getFormattedDataUsed(Context context) {
return Formatter.formatFileSize(context, mDataUsed); return FileSizeUtil.formatFileSize(context, mDataUsed);
} }
/** /**
...@@ -72,8 +73,7 @@ public class DataReductionDataUseItem { ...@@ -72,8 +73,7 @@ public class DataReductionDataUseItem {
* @param context An Android context. * @param context An Android context.
* @return A formatted string of the data saved. * @return A formatted string of the data saved.
*/ */
public String getFormattedDataSaved(Context context) { public CharSequence getFormattedDataSaved(Context context) {
if (mDataUsed > mOriginalSize) return Formatter.formatFileSize(context, 0); return FileSizeUtil.formatFileSize(context, Math.max(0, mOriginalSize - mDataUsed));
return Formatter.formatFileSize(context, mOriginalSize - mDataUsed);
} }
} }
\ No newline at end of file
...@@ -15,7 +15,6 @@ import android.content.DialogInterface; ...@@ -15,7 +15,6 @@ import android.content.DialogInterface;
import android.preference.Preference; import android.preference.Preference;
import android.support.v7.app.AlertDialog; import android.support.v7.app.AlertDialog;
import android.text.format.DateUtils; import android.text.format.DateUtils;
import android.text.format.Formatter;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.view.Gravity; import android.view.Gravity;
import android.view.View; import android.view.View;
...@@ -29,6 +28,7 @@ import org.chromium.base.ContextUtils; ...@@ -29,6 +28,7 @@ import org.chromium.base.ContextUtils;
import org.chromium.chrome.R; import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeFeatureList; import org.chromium.chrome.browser.ChromeFeatureList;
import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings; import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
import org.chromium.chrome.browser.util.FileSizeUtil;
import org.chromium.third_party.android.datausagechart.ChartDataUsageView; import org.chromium.third_party.android.datausagechart.ChartDataUsageView;
import org.chromium.third_party.android.datausagechart.NetworkStats; import org.chromium.third_party.android.datausagechart.NetworkStats;
import org.chromium.third_party.android.datausagechart.NetworkStatsHistory; import org.chromium.third_party.android.datausagechart.NetworkStatsHistory;
...@@ -64,9 +64,9 @@ public class DataReductionStatsPreference extends Preference { ...@@ -64,9 +64,9 @@ public class DataReductionStatsPreference extends Preference {
private long mLeftPosition; private long mLeftPosition;
private long mRightPosition; private long mRightPosition;
private Long mCurrentTime; private Long mCurrentTime;
private String mOriginalTotalPhrase; private CharSequence mOriginalTotalPhrase;
private String mSavingsTotalPhrase; private CharSequence mSavingsTotalPhrase;
private String mReceivedTotalPhrase; private CharSequence mReceivedTotalPhrase;
private String mPercentReductionPhrase; private String mPercentReductionPhrase;
private String mStartDatePhrase; private String mStartDatePhrase;
private String mEndDatePhrase; private String mEndDatePhrase;
...@@ -292,12 +292,11 @@ public class DataReductionStatsPreference extends Preference { ...@@ -292,12 +292,11 @@ public class DataReductionStatsPreference extends Preference {
final Context context = getContext(); final Context context = getContext();
final long compressedTotalBytes = mReceivedNetworkStatsHistory.getTotalBytes(); final long compressedTotalBytes = mReceivedNetworkStatsHistory.getTotalBytes();
mReceivedTotalPhrase = Formatter.formatFileSize(context, compressedTotalBytes); mReceivedTotalPhrase = FileSizeUtil.formatFileSize(context, compressedTotalBytes);
final long originalTotalBytes = mOriginalNetworkStatsHistory.getTotalBytes(); final long originalTotalBytes = mOriginalNetworkStatsHistory.getTotalBytes();
mOriginalTotalPhrase = Formatter.formatFileSize(context, originalTotalBytes); mOriginalTotalPhrase = FileSizeUtil.formatFileSize(context, originalTotalBytes);
mSavingsTotalPhrase = final long savingsTotalBytes = originalTotalBytes - compressedTotalBytes;
Formatter.formatFileSize(context, originalTotalBytes - compressedTotalBytes); mSavingsTotalPhrase = FileSizeUtil.formatFileSize(context, savingsTotalBytes);
float percentage = 0.0f; float percentage = 0.0f;
if (originalTotalBytes > 0L && originalTotalBytes > compressedTotalBytes) { if (originalTotalBytes > 0L && originalTotalBytes > compressedTotalBytes) {
......
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.chrome.browser.util;
import android.annotation.TargetApi;
import android.content.Context;
import android.os.Build;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.format.Formatter;
import android.text.style.TtsSpan;
/**
* Helper functions for file size info that is shown to the user.
*/
public class FileSizeUtil {
/**
* Formats the file size and also sets TtsSpans of type TYPE_MEASURE so that "B" is announced
* as "byte" by the TTS engine.
* @see Formatter.formatFileSize
*/
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public static CharSequence formatFileSize(Context context, long bytes) {
String phrase = Formatter.formatFileSize(context, bytes);
// For some languages TTS does not speak "B" as "bytes", so the text is wrapped with a span.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
// Only add spans for numbers which will be displayed as bytes. KB, MB etc are spoken
// correctly by the TTS.
if (bytes / 1024 < 1) {
TtsSpan ttsSpan =
new TtsSpan.MeasureBuilder().setNumber(bytes).setUnit("byte").build();
Spannable phraseSpannable = new SpannableString(phrase);
phraseSpannable.setSpan(ttsSpan, 0, phraseSpannable.length(), 0);
return phraseSpannable;
}
}
return phrase;
}
}
\ No newline at end of file
...@@ -1230,6 +1230,7 @@ chrome_java_sources = [ ...@@ -1230,6 +1230,7 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/util/ColorUtils.java", "java/src/org/chromium/chrome/browser/util/ColorUtils.java",
"java/src/org/chromium/chrome/browser/util/ConversionUtils.java", "java/src/org/chromium/chrome/browser/util/ConversionUtils.java",
"java/src/org/chromium/chrome/browser/util/FeatureUtilities.java", "java/src/org/chromium/chrome/browser/util/FeatureUtilities.java",
"java/src/org/chromium/chrome/browser/util/FileSizeUtil.java",
"java/src/org/chromium/chrome/browser/util/HashUtil.java", "java/src/org/chromium/chrome/browser/util/HashUtil.java",
"java/src/org/chromium/chrome/browser/util/IntentUtils.java", "java/src/org/chromium/chrome/browser/util/IntentUtils.java",
"java/src/org/chromium/chrome/browser/util/KeyNavigationUtil.java", "java/src/org/chromium/chrome/browser/util/KeyNavigationUtil.java",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment