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 @@
package org.chromium.chrome.browser.preferences.datareduction;
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.
......@@ -61,8 +62,8 @@ public class DataReductionDataUseItem {
* @param context An Android context.
* @return A formatted string of the data used.
*/
public String getFormattedDataUsed(Context context) {
return Formatter.formatFileSize(context, mDataUsed);
public CharSequence getFormattedDataUsed(Context context) {
return FileSizeUtil.formatFileSize(context, mDataUsed);
}
/**
......@@ -72,8 +73,7 @@ public class DataReductionDataUseItem {
* @param context An Android context.
* @return A formatted string of the data saved.
*/
public String getFormattedDataSaved(Context context) {
if (mDataUsed > mOriginalSize) return Formatter.formatFileSize(context, 0);
return Formatter.formatFileSize(context, mOriginalSize - mDataUsed);
public CharSequence getFormattedDataSaved(Context context) {
return FileSizeUtil.formatFileSize(context, Math.max(0, mOriginalSize - mDataUsed));
}
}
\ No newline at end of file
......@@ -15,7 +15,6 @@ import android.content.DialogInterface;
import android.preference.Preference;
import android.support.v7.app.AlertDialog;
import android.text.format.DateUtils;
import android.text.format.Formatter;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.View;
......@@ -29,6 +28,7 @@ import org.chromium.base.ContextUtils;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeFeatureList;
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.NetworkStats;
import org.chromium.third_party.android.datausagechart.NetworkStatsHistory;
......@@ -64,9 +64,9 @@ public class DataReductionStatsPreference extends Preference {
private long mLeftPosition;
private long mRightPosition;
private Long mCurrentTime;
private String mOriginalTotalPhrase;
private String mSavingsTotalPhrase;
private String mReceivedTotalPhrase;
private CharSequence mOriginalTotalPhrase;
private CharSequence mSavingsTotalPhrase;
private CharSequence mReceivedTotalPhrase;
private String mPercentReductionPhrase;
private String mStartDatePhrase;
private String mEndDatePhrase;
......@@ -292,12 +292,11 @@ public class DataReductionStatsPreference extends Preference {
final Context context = getContext();
final long compressedTotalBytes = mReceivedNetworkStatsHistory.getTotalBytes();
mReceivedTotalPhrase = Formatter.formatFileSize(context, compressedTotalBytes);
mReceivedTotalPhrase = FileSizeUtil.formatFileSize(context, compressedTotalBytes);
final long originalTotalBytes = mOriginalNetworkStatsHistory.getTotalBytes();
mOriginalTotalPhrase = Formatter.formatFileSize(context, originalTotalBytes);
mSavingsTotalPhrase =
Formatter.formatFileSize(context, originalTotalBytes - compressedTotalBytes);
mOriginalTotalPhrase = FileSizeUtil.formatFileSize(context, originalTotalBytes);
final long savingsTotalBytes = originalTotalBytes - compressedTotalBytes;
mSavingsTotalPhrase = FileSizeUtil.formatFileSize(context, savingsTotalBytes);
float percentage = 0.0f;
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 = [
"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/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/IntentUtils.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