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