STATE_LF should finish without processing next case but unexpected fall
through happens due to missing of "break".
Fortunately, this unexpected fall through doesn't cause any problems
since STATE_ODD_NUMBERED_RIS case always finishes without doing anything
when unexpected fall through happens.
Bug: 29491345
Change-Id: I23c673ccfc4a2c786fa41f0f7bacb0885896a509
Previously, powers of 1024 were used in formatting human-readable
strings for file sizes, in contrast with international and industry
standards. With this change, we switch to powers of 1000, as
standardized in SI and others.
Bug: 27672362
Change-Id: I34ae16bb68a28e60b09a7c17ac3b1d5ab9ddbeea
One of the signatures of the method that used CharSequence was
unused. The other's implementation was too crude, resulting in too
many false negatives.
The new code now shares logic with BoringLayout in order to detect
potential bidi-affecting characters. The logic is intentionally
rough in order to be efficient: we still have false negatives, but
not as many as before.
Bug: 29254696
Change-Id: I106133369e93e49d7b2fe82ffc433e4556740ee8
During the offset calculation for selection, SpannableStringBuilder
had an overflow while multiplying two int values. This CL uses long to
calculate the multiplication, and also checks for overflow after
casting the final result into int again.
Bug: 29108549
Change-Id: I11eff4677916701074b38bc5214730fe704707c4
The APIs are useful in avoiding the unnecessary creation of strings
when you have a CharSequence that's not a String.
Bug: 26979409
Change-Id: I27cd157ca53edb5f44a1e69085a1882af3cc7c6a
in order to determine if the text is RTL, the previous code ran
chunks of the text (in code units) through the TextDirectionHeuristic
instead of the whole text, which could result in misdetection as RTL
in various cases, or missing some cases due to RTL characters getting
split across chunks. Now we look at the whole text instead.
This also refactors the code to make it clearer to understand and
removes an unused signature for isBoring.
Bug: 27702584
Change-Id: I8d98614a0af28c0d4e61af5ab4a27a8a3ab8c9dc
Add an extra parameter to LocaleHelper.getDisplayLocaleList()
specifying the maximum number of locales to output, as callers
probably won't need the whole list.
Bug: 28872122
Change-Id: Ief136bc1af2841e76ed4d8e65932a9a30821eae3
Preallocate storage lists and avoid TextUtils and its string
builder for a common code path.
Optimize list join helper to not have a check in the loop.
Bug: 28801010
Change-Id: Iafc582031f973d718252b34bcda6405a77425628
Since LocaleList needs to depend on android.os.Parcelable, we cannot let
that class belong to "android.util" package, which causes layering
violation.
Bug: 28819696
Change-Id: Ia8de2ee9df3dd0a42b1fe84574439519b680fe18
To properly apply ellipsis, we virtually concatenate the last line and
overflowed lines after line breaking for a paragraph.
Previously, width of the concatenated line was computed by summing up all
line's width. However, the width is wrong when there are any trailing
white spaces that can be normal white spaces by concatenating lines.
With this CL, we sum up widths of all characters in lines except the last
overflowed line.
Bug: 28599066
Change-Id: I41d828ee8eb8a702cd5096d626b307cbb3467047
This commit makes the LocaleList constructor require non-null
arguments in all cases, and fixes all uses of LocaleList that could
previously pass a null to use getEmptyLocaleList() instead (which is
preferred anyway becaues it avoids an allocation.
Bug: 28460668
Change-Id: I4b8b3cfa82914412731c2b79003951c46cb2afa1
Vendor may want to introduce their own ZWJ emoji sequence. To delete
them by one back space as the same behavior of Unicode emoji sequence,
use all emoji as the zwj emoji.
Bug: 28248662
Change-Id: I572dad42ee108476962d4b3fe9f3a6019cb50098
This undoes the automerger skip which occured in
commit e740c84dc3 and
replays it as a standard (NOT -s ours) merge.
Change-Id: If5a47be26f73d6a0735c425cd66310a3e2a89086
Because of a min/max issue, while processing each paragraph StaticLayout
would trim the left/right indent arrays incorrectly.
Bug: 28090810
Change-Id: Ib2b9b48963861e0952bd45a079179e3cca86ffcf
The returned descender value for BoringLayout and StaticLayout should
be equal to the font's "bottom" metric in the includePadding case.
Previously, the calculation incorrectly included an addition
mBottomPadding value in some cases (which was an attempt to work
around the case where maxLines was set on TextView but not the
corresponding StaticLayout, no longer the case).
Bug: 27901763
Change-Id: I008c5974b979087725a9bb9104e4771b0caac01c
Reset FontMetrics object used in BoringLayout.isBoring to get updated
and correct FontMetrics as a result of measurement.
Bug: 26704088
Change-Id: If77b0edba8dc4b5b1738a802c5f49e112e47b4f2
In addition, all English locales other than those explicitly mapped
to en-US are mapped to en-GB.
BUG: 26405413
Change-Id: Ie5b77af164c95a6ed5639da5752ddf21f92181bc
A new addLinks function is added that accepts a default scheme and a
set of known schemes. Default scheme is applied whenever the link found
does not start with one of the given known schemes.
Moreover, previously JavaDoc for addLinks functions with a single scheme
parameter described that the scheme attribute will be prepended to the
links that do not have 'a' scheme. The code actually checks if the link
starts with the given scheme and prepends if not. JavaDoc updated
accordingly.
Bug: 26985901
Change-Id: I94ea81dcf83ba7a6b6cd47c10fe8fb277964eb15
A point on a direction boundary can be mapped to two offset and
one offset on a direction boundary can be mapped to two points.
Previously, paragraph's primary direction is always used for deciding
offset and coordinates; thus, handle movement around a direction
boundary is often nonintuitive.
With this CL:
1. For selection end handle, direction of character at offset - 1 is
used for deciding handle shape and position.
2. For getting offset from coordinates, previous offset is used to
minimize the offset delta and primary .
3. For getting coordinates form offset, new logic chooses primary or
secondary horizontal coordinate depending on the current run
direction and paragraph direction.
4. When a handle passes another one because it passes a direction
boundary, new logic keeps the handle at the run boundary instead of
minimizing the selection.
Bug: 19199637
Bug: 21480356
Bug: 21649994
Change-Id: I2a7e87ad08416f4bd01a5f68e006240f77d9036b
Forward delete key now deletes characters until the next grapheme
cluster boundary.
Bug: 25737208
Bug: 27035430
Change-Id: Ie2fb510fefa115657cc48063be5319b1eecb30b9
Remove an unused field in BoringLayout. This has also the positive
side effect of allowing static initialization in the boot image.
Bug: 27248115
Change-Id: I9d6beec5f5e045ef899e8979ece96e0239f82076
This CL updates the email address pattern with:
* Local-part should be max 64 characters, and domain should be max 255
characters (it was the opposite before).
* Labels in the domain name should be at most 63 characters.
* Support non-ascii unicode characters.
* Add tests for email address pattern.
Bug:9585450
Change-Id: I983f269904ef014ef625417dd08b6509084e6879
This CL makes backspace handling aware of variation selector, combining
enclosing keycaps, zero width joiner, regional indicator symbols and
emoji modifiers.
BUG: 25737208
Change-Id: I740578bfee955cc623e2831778e5b7ec4b8cb627
This CL make sure that ellipsized and non-ellipsized text have the
same baseline.
- TextView did not set the maxLines for StaticLayout when ellipsized
is false. This resulted in height and baseline calculation
discrepancies between ellipsized and non-ellipsized TextViews using
StaticLayout.
- For single line TextViews when a text is not ellipsized
BoringLayout is used, and when text is ellipsized StaticLayout is
used. Because of the bottom padding added to the last line of
StaticLayout, those two did not have the same baseline.
Bug: 18864800
Change-Id: I5dbc48a6c7f0f4ac4c693d5c95f0a99b989e07f4
- "green", "gray/grey", "lightgray/lightgrey", and
"darkgray/darkgrey" have different values in HTML/CSS.
- Adopt HTML/CSS color values according to user specified
option flag.
- Remove support to "@color" notation as it is not standard
HTML/CSS.
- Replace SPAN_MARK_MARK with SPAN_INCLUSIVE_EXCLUSIVE
consistency.
BUG:26950749
Change-Id: I5b33282368042f74f1b4768e096aae3e5bf45de6
For mode TO_HTML_PARAGRAPH_LINES_INDIVIDUAL:
1) Empty line outputs <br> instead of <p><br></p>
2) A <ul> element is closed if it is followed by a <br>
3) Explicit zero vertical margin is applied to <ul> instead of <li>'s
4) More deterministic way to encode AlignmentSpans: only spans with
SPAN_PARAGRAPH flag is used. If multiple spans exist, the last one
(which is added most recently) is used.
BUG: 26224878
Change-Id: I86a2aeced9965ae465daac1ace64e5e41cf45caf
The BidiFormatter#unicodeWrap() methods allow null string, but the
toString() call on the result in the refactored code was crashing.
Also adds @Nullable annotations.
Bug: 27124532
Change-Id: I25922d104587af4a850c3640987af9315c3d3bde
The vertical spacing of <ul> and <li> are determined by the
FROM_HTML_SEPARATOR_* flags. Foreground color, background color,
and text-decoration CSS attributes are parsed and converted into
the corresponding spans.
Change-Id: I93b232de15753ae510392cbacf45e7453d1ae067