History log of /packages/apps/UnifiedEmail/src/com/android/mail/browse/ConversationWebView.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
2160d53e6ae0bfb797569d616e735e46c21522ff 11-Feb-2014 Andy Huang <ath@google.com> fix text sizing inaccuracy from 980px switch

The side margin was in CSS px, but goalWidth was in dp. This caused the
goalWidth to be smaller than it should, which caused scrollWidth to be
smaller, which caused each message's zoom factor to be larger, which
caused text to be larger than it used to be.

Now. goalWidth and documentWidth both have body margins accounted for in
the proper units.

Bug: 12579959
Change-Id: Ice36b48f381cf3171b092ba27152aa56b64f4100
/packages/apps/UnifiedEmail/src/com/android/mail/browse/ConversationWebView.java
4dc732387454eef3ee6d89f9fa393630eb6213f9 05-Feb-2014 Andy Huang <ath@google.com> Render conversations to 980px viewport

Expand all conversations to 980px width to allow double-tap to continue
to work on newer Chromium builds. See
https://codereview.chromium.org/18850005.

cool side effects
* much more usable double-tap zoom factor on KK+ (now "it just works")
* better text rendering fidelity in complex layouts (text no longer
escapes bounds as it tended to do before)
* fixes text sizing edge cases where text was unexpectedly large and/or
line heights messed with text rendering

Initially enable these changes on both JB- and KK+ WebViews. Disable
NARROW_COLUMNS layout on JB- to prevent very short columns.
pros on JB-: better rendering fidelity like on KK+, consistency with KK+
cons on JB-: some power users will miss pinch-then-double-tap-to-reflow
functionality

Possible future improvement: use device-width viewport when full convo
fits to inherit Chromium's new fast-click-handling behavior.

Bug: 12579959
Bug: 10695551
Change-Id: I13f85a6df909a966fcd0862e5bd292ec6ae77212
/packages/apps/UnifiedEmail/src/com/android/mail/browse/ConversationWebView.java
bb6f0504c1607c89d9a3dd3e6023f36d61837016 31-Oct-2013 Andrew Sapperstein <asapperstein@google.com> Prevent flickering. Fixes b/10994303.

The problem was that we were calling positionOverlays
from onScrollChanged in WebView which is called during
draw. Since positionOverlays adds views, this is broken.
Two manifestations of it were flickering message headers
during flings and flickering of the drop shadow for the
snap header.

To fix the flickering (which was really not drawing for
a frame), we have slightly changed the recycling behavior
of ConversationContainer. Instead of adding and removing
views, we just move them offscreen (where they're no
longer drawn) until they're needed again. If we don't
have a recycled view, we will still add the views
(via a post) but we don't ever remove when a view is
scrolled off anymore.

Additionally, we stop overriding dispatchDraw to forcibly
draw the topmost overlay. This resulted in flickering of the
snap header gradient because it would be drawn sometimes twice
and sometimes once. We no longer need to since we don't
add or remove views during draw anymore.

Change-Id: I937a4cc67f04ed005439c1fab2103287a986148d
/packages/apps/UnifiedEmail/src/com/android/mail/browse/ConversationWebView.java
25a8a76fab08f862d7ba78b66b841a3aec58cb8d 26-Nov-2013 Andrew Sapperstein <asapperstein@google.com> Delete dead code. b/11708307.

Change-Id: I82cca1daa5c3fae375e72f24c76b68e44517e0f5
/packages/apps/UnifiedEmail/src/com/android/mail/browse/ConversationWebView.java
c1fb9a9c2730178105977fca629e80951bfc3cdc 11-Feb-2013 Andy Huang <ath@google.com> Single-message zoom using a floating WebView

Protected by an experimental pref for now
Restores scroll position
Preserves 'show pics' state
Speedy animation
Fade-in animation begins right after onNewPicture (ICS compatible!)
add UpOrBackController role for fragments to get a whack at back/up

And because this approach avoids using the CSS 'zoom' attribute
within single-message mode, double-tap works well and there are no
line-height issues.

Bug: 7400516
Change-Id: Idedfa6e35edc291c9169fbd9b1315b39b4253f60
/packages/apps/UnifiedEmail/src/com/android/mail/browse/ConversationWebView.java
ce8565b3605c2ce47c75e259f387cd4955f017da 17-Jan-2013 Andy Huang <ath@google.com> counteract jumping in CSS-based message zooming

Adjust scroll position after a zoom to counteract jumping.
There's still a momentary flash, so it's not perfect yet. That
might be suppressable with ingenuity (i.e. gross hacks).

Suppress WebView input handling for an input sequence on
POINTER_DOWN to prevent WebView from scrolling during a scale.
I've chosen to implement message translation-during-scale
manually, so the WebView must not move on its own during a
scale, or else the translation will be doubly applied.

Bug: 7400516
Change-Id: I54c347c37d28864441c8a3bca3395bdc86f6616f
/packages/apps/UnifiedEmail/src/com/android/mail/browse/ConversationWebView.java
02f9d18a54072db8d86c524f9c09e508092ddd7c 29-Nov-2012 Andy Huang <ath@google.com> per-message zoom using JavaScript + CSS 3D transforms

When Auto-fit is off, disable built-in WebView zooming, which
is only capable of zooming an entire document (the entire
conversation).

Use ScaleGestureDetector to trigger a CSS 3D transform to zoom
in/out just a single message div.

During the gesture, the elements above and below the message
being scaled are untouched. This is ugly.
TODO: they should either move away (tricky) or at least fade
out.

When the gesture is complete, to avoid leaving overlapping
elements, we force-scale the height and reset the transform
origin to the top left.
TODO: auto-scroll to the correct place to counteract this
perceived jump.

Double-tap is not yet implemented. We'll have to do it
ourselves.

Bug: 7478834
Change-Id: I114e4977304c7060d499d116cc75bc0488967448
/packages/apps/UnifiedEmail/src/com/android/mail/browse/ConversationWebView.java
30bcfe7b69f9d8e0cad2ee62dae9d3571cd0d88b 19-Oct-2012 Andy Huang <ath@google.com> clean up supplemental software drawing on ICS

* don't allocate big bitmaps for offscreen conversations on ICS
* reduce the bitmap size to the view size (vs. screen size)
* handle OOM gracefully
* ensure the 'doAfter' action happens even for offscreen convos

Bug: 7373250
Change-Id: I976dc826bed83d5872802e6d656eff2f72f9ed3d
/packages/apps/UnifiedEmail/src/com/android/mail/browse/ConversationWebView.java
916f819b1dfde084b8bd7941fd6f6d70d564e3e9 01-Oct-2012 Paul Westbrook <pwestbro@google.com> Fix crash on ICS

ICS had a bug where calling recycle on a bitmap could
cause a native crash see bug 6048952

Since this code is only used on ICS, just don't call recycle

Bug: 7232717
Change-Id: Iafaf8708b34ca10e4cb5e424d7f3bb138dddb5eb
/packages/apps/UnifiedEmail/src/com/android/mail/browse/ConversationWebView.java
b84fba3b19aef87144a069407b1cdb5980eedf0b 26-Sep-2012 mindyp <mindyp@google.com> Only create bitmaps in the case where we actually use them

Part of b/6268986 Perf regression (~5 seconds) in loading messages on orientation change in new gmail

Change-Id: Ib461c008a434da7b9f298e71acc660f9fc88076f
/packages/apps/UnifiedEmail/src/com/android/mail/browse/ConversationWebView.java
afc9b365dc9199ee9b2a1e598b8f40b3c78b6d9f 25-Sep-2012 mindyp <mindyp@google.com> Add ics content ready signal.

Uses a software layer to show content asap.
Part of b/6268986 Perf regression (~5 seconds) in loading messages on orientation change in new gmail

Change-Id: I8ae2e86685187108aa704c8d6d19202b2a2a4d7e
/packages/apps/UnifiedEmail/src/com/android/mail/browse/ConversationWebView.java
56d83850db72592a16f4e6ee9e0d59b60ec0824a 19-Sep-2012 Mark Wei <markwei@google.com> Draw scrollbars above conversation view content.

Bug: 6319192
Change-Id: Id4ba584f1e90c80d9085b6b3d962ee2783975427
/packages/apps/UnifiedEmail/src/com/android/mail/browse/ConversationWebView.java
2b24e995cfcdb6ab0579b2fbcccb399a53632395 11-Sep-2012 Mark Wei <markwei@google.com> Fix rounding errors that caused conversation subject displays higher than
expected and slightly cut off for threads with many messages.

Bug: 6406245
Change-Id: Iee5114cd479cfdac001c2a9d5c9f15a79482c427
/packages/apps/UnifiedEmail/src/com/android/mail/browse/ConversationWebView.java
23014705ca9872cd5004a1aa76e83ae260165eca 09-Jul-2012 Andy Huang <ath@google.com> better handling of wide message content

Don't hide horizontal overflow, so content in extra-wide
messages is scrollable. (Downside is that an initial swipe on
such conversations will scroll the content rather than going to
ViewPager.)

Use default WebView text layout algorithm (NARROW_COLUMNS). It
doesn't kick in by default, possibly because of the method we
use to shrink wide messages, but at least double-tap after a
manual zoom-in will trigger line re-wrapping.

NARROW_COLUMNS reflow can change the HTML height, so we need to
remeasure and reposition headers when that happens. Added code
to listen for WebView mContentHeight changes. This is done
circuitously (via invalidate()) because I don't know of a more
natural way to to know when this happens. Although invalidate()
happens all the time, this should be pretty cheap because no
work is done unless the DOM height changes.

Clean up screen-pixel -> HTML-pixel conversion code. This will
be handy when trying to make the page initially wide to further
improve line wrapping behavior and reduce the frequency of
the extra-wide case. Initial-wide-mode presents a host of
side effects to be addressed in a future CL.

Bug: 6389819
Bug: 6318848

Change-Id: I3ad2bd1ca6c1f6c0859af1a10056578ea4faf073
/packages/apps/UnifiedEmail/src/com/android/mail/browse/ConversationWebView.java
b334c9035e9b7a38766bb66c29da2208525d1e11 25-Jun-2012 Paul Westbrook <pwestbro@google.com> Changes to support different Log tags

Change-Id: I7121fbf7132444fc0f5c0c130373e3f2d1a3cf7a
/packages/apps/UnifiedEmail/src/com/android/mail/browse/ConversationWebView.java
632721e6b3a9ba8c476456f2e0fb1b564561e0b5 12-Apr-2012 Andy Huang <ath@google.com> conversation paging

This CL takes the approach of using a permanent ViewPager that
pages through conversation fragments. Its adapter is only
set and populated when the conversation view is shown. In all
other cases, it is an inert empty layer.

One risk with this approach is that it breaks with the typical
fragment transitions that all other content panes use.

On the other hand: conversation fragments are full-on fragments
and benefit from loader separation, and the FragmentManager
takes care of save/restore of state.

Change-Id: Ic17d1ae3f35a0cb1119967f2d34433ad27fa307c
/packages/apps/UnifiedEmail/src/com/android/mail/browse/ConversationWebView.java
5ff63747a1b5c6e2197528972cbc3ba808b09d8d 17-Mar-2012 Andy Huang <ath@google.com> show subject and labels in conversation view

Show labels only for accounts that support multi-folder
conversations.
Move some classes into smaller 'browse' package.
Special-case subject/labels overlay for now. Full adapterization
is coming soon when super-collapsed blocks are in.

Change-Id: I458009776eb2e3840dd9e441de9e4ead3cc94d0b
/packages/apps/UnifiedEmail/src/com/android/mail/browse/ConversationWebView.java