Refactoring of AbstractConversationViewFragment.
In order to support EML viewing, we need a bunch of
the overhead provided by AbstractConversationViewFragment
without actually inheriting from it. Additionally, most of
the code was inner classes that had no business being such.
These are now moved into their own classes.
Change-Id: I80769d2606b52c41dc116a6bdee17c00adc66a5a
diff --git a/src/com/android/mail/ui/ConversationViewFragment.java b/src/com/android/mail/ui/ConversationViewFragment.java
index cac5b64..a110ce2 100644
--- a/src/com/android/mail/ui/ConversationViewFragment.java
+++ b/src/com/android/mail/ui/ConversationViewFragment.java
@@ -71,6 +71,7 @@
import com.android.mail.providers.Message;
import com.android.mail.providers.UIProvider;
import com.android.mail.ui.ConversationViewState.ExpansionState;
+import com.android.mail.utils.ConversationViewUtils;
import com.android.mail.utils.LogTag;
import com.android.mail.utils.LogUtils;
import com.android.mail.utils.Utils;
@@ -127,14 +128,14 @@
private ScrollIndicatorsView mScrollIndicators;
+ private ConversationViewProgressController mProgressController;
+
private View mNewMessageBar;
private HtmlConversationTemplates mTemplates;
private final MailJsBridge mJsBridge = new MailJsBridge();
- private final WebViewClient mWebViewClient = new ConversationWebViewClient();
-
private ConversationViewAdapter mAdapter;
private boolean mViewsCreated;
@@ -179,7 +180,8 @@
private final DataSetObserver mLoadedObserver = new DataSetObserver() {
@Override
public void onChanged() {
- getHandler().post(new FragmentRunnable("delayedConversationLoad") {
+ getHandler().post(new FragmentRunnable("delayedConversationLoad",
+ ConversationViewFragment.this) {
@Override
public void go() {
LogUtils.d(LOG_TAG, "CVF load observer fired, this=%s",
@@ -190,7 +192,7 @@
}
};
- private final Runnable mOnProgressDismiss = new FragmentRunnable("onProgressDismiss") {
+ private final Runnable mOnProgressDismiss = new FragmentRunnable("onProgressDismiss", this) {
@Override
public void go() {
LogUtils.d(LOG_TAG, "onProgressDismiss go() - isUserVisible() = %b", isUserVisible());
@@ -295,7 +297,7 @@
// the initial primary item
// Then CPC immediately sets the primary item to #10, which tears down #0/#1 and sets up
// #9/#10/#11.
- getHandler().post(new FragmentRunnable("showConversation") {
+ getHandler().post(new FragmentRunnable("showConversation", this) {
@Override
public void go() {
showConversation();
@@ -321,6 +323,8 @@
public void onCreate(Bundle savedState) {
super.onCreate(savedState);
+ mWebViewClient = new ConversationWebViewClient(getContext(), mAccount);
+
if (savedState != null) {
mWebViewYPercent = savedState.getFloat(BUNDLE_KEY_WEBVIEW_Y_PERCENT);
}
@@ -343,7 +347,8 @@
}
});
- instantiateProgressIndicators(rootView);
+ mProgressController = new ConversationViewProgressController(this, getHandler());
+ mProgressController.instantiateProgressIndicators(rootView);
mWebView = (ConversationWebView) mConversationContainer.findViewById(R.id.webview);
@@ -380,7 +385,7 @@
settings.setJavaScriptEnabled(true);
- setTextZoom(settings);
+ ConversationViewUtils.setTextZoom(getResources(), settings);
mViewsCreated = true;
mWebViewLoadedData = false;
@@ -398,11 +403,6 @@
}
@Override
- protected WebView getWebView() {
- return mWebView;
- }
-
- @Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
@@ -465,7 +465,7 @@
userVisible);
if (!userVisible) {
- dismissLoadingStatus();
+ mProgressController.dismissLoadingStatus();
} else if (mViewsCreated) {
if (getMessageCursor() != null) {
LogUtils.d(LOG_TAG, "Fragment is now user-visible, onConversationSeen: %s", this);
@@ -532,12 +532,12 @@
// TODO(mindyp): don't show loading status for a previously rendered
// conversation. Ielieve this is better done by making sure don't show loading status
// until XX ms have passed without loading completed.
- showLoadingStatus();
+ mProgressController.showLoadingStatus(isUserVisible());
}
private void revealConversation() {
timerMark("revealing conversation");
- dismissLoadingStatus(mOnProgressDismiss);
+ mProgressController.dismissLoadingStatus(mOnProgressDismiss);
}
private boolean isLoadWaiting() {
@@ -979,6 +979,10 @@
}
private class ConversationWebViewClient extends AbstractConversationWebViewClient {
+ public ConversationWebViewClient(Context context, Account account) {
+ super(context, account);
+ }
+
@Override
public void onPageFinished(WebView view, String url) {
// Ignore unsafe calls made after a fragment is detached from an activity.
@@ -1030,7 +1034,8 @@
@JavascriptInterface
public void onWebContentGeometryChange(final String[] overlayTopStrs,
final String[] overlayBottomStrs) {
- getHandler().post(new FragmentRunnable("onWebContentGeometryChange") {
+ getHandler().post(new FragmentRunnable("onWebContentGeometryChange",
+ ConversationViewFragment.this) {
@Override
public void go() {
@@ -1127,7 +1132,8 @@
@SuppressWarnings("unused")
@JavascriptInterface
public void onContentReady() {
- getHandler().post(new FragmentRunnable("onContentReady") {
+ getHandler().post(new FragmentRunnable("onContentReady",
+ ConversationViewFragment.this) {
@Override
public void go() {
try {