1 package com.android.mail.browse; 2 3 import android.content.Context; 4 import android.util.AttributeSet; 5 import android.webkit.WebView; 6 7 public class MailWebView extends WebView { 8 9 // NARROW_COLUMNS reflow can trigger the document to change size, so notify interested parties. 10 // This is also a good trigger to know when to alter scroll position. 11 public interface ContentSizeChangeListener { onHeightChange(int h)12 void onHeightChange(int h); 13 } 14 15 private int mCachedContentHeight; 16 17 private ContentSizeChangeListener mSizeChangeListener; 18 MailWebView(Context c)19 public MailWebView(Context c) { 20 this(c, null); 21 } 22 MailWebView(Context c, AttributeSet attrs)23 public MailWebView(Context c, AttributeSet attrs) { 24 super(c, attrs); 25 } 26 27 @Override computeVerticalScrollRange()28 public int computeVerticalScrollRange() { 29 return super.computeVerticalScrollRange(); 30 } 31 32 @Override computeVerticalScrollOffset()33 public int computeVerticalScrollOffset() { 34 return super.computeVerticalScrollOffset(); 35 } 36 37 @Override computeVerticalScrollExtent()38 public int computeVerticalScrollExtent() { 39 return super.computeVerticalScrollExtent(); 40 } 41 42 @Override computeHorizontalScrollRange()43 public int computeHorizontalScrollRange() { 44 return super.computeHorizontalScrollRange(); 45 } 46 47 @Override computeHorizontalScrollOffset()48 public int computeHorizontalScrollOffset() { 49 return super.computeHorizontalScrollOffset(); 50 } 51 52 @Override computeHorizontalScrollExtent()53 public int computeHorizontalScrollExtent() { 54 return super.computeHorizontalScrollExtent(); 55 } 56 setContentSizeChangeListener(ContentSizeChangeListener l)57 public void setContentSizeChangeListener(ContentSizeChangeListener l) { 58 mSizeChangeListener = l; 59 } 60 61 @Override invalidate()62 public void invalidate() { 63 super.invalidate(); 64 65 if (mSizeChangeListener != null) { 66 final int contentHeight = getContentHeight(); 67 if (contentHeight != mCachedContentHeight) { 68 mCachedContentHeight = contentHeight; 69 mSizeChangeListener.onHeightChange(contentHeight); 70 } 71 } 72 } 73 74 } 75