Replaced Webview with TextView in Accessbility Settings
Removed the webview used for the font preview and replaced
it with a textview. Removes the overhead of using webview
for just a small preview in settings.
Change-Id: I6eb7f3dd67756b220e8f7ff33eab5cc7429d3f36
diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java
index b11e0c6..74765d5 100644
--- a/src/com/android/browser/BrowserSettings.java
+++ b/src/com/android/browser/BrowserSettings.java
@@ -529,6 +529,13 @@
}
}
+ public WebView getTopWebView(){
+ if (mController!= null)
+ return mController.getCurrentTopWebView();
+
+ return null;
+ }
+
public void clearPasswords() {
// Clear password store maintained by SWE engine
WebSettings settings = null;
diff --git a/src/com/android/browser/preferences/AccessibilityPreferencesFragment.java b/src/com/android/browser/preferences/AccessibilityPreferencesFragment.java
index 7dd20ae..14e1c98 100644
--- a/src/com/android/browser/preferences/AccessibilityPreferencesFragment.java
+++ b/src/com/android/browser/preferences/AccessibilityPreferencesFragment.java
@@ -25,20 +25,16 @@
import com.android.browser.PreferenceKeys;
import com.android.browser.R;
-import android.webkit.WebView;
import java.text.NumberFormat;
public class AccessibilityPreferencesFragment extends PreferenceFragment
implements Preference.OnPreferenceChangeListener {
NumberFormat mFormat;
- // Used to pause/resume timers, which are required for WebViewPreview
- WebView mControlWebView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- mControlWebView = new WebView(getActivity());
addPreferencesFromResource(R.xml.accessibility_preferences);
BrowserSettings settings = BrowserSettings.getInstance();
mFormat = NumberFormat.getPercentInstance();
@@ -61,25 +57,6 @@
*/
}
- @Override
- public void onResume() {
- super.onResume();
- mControlWebView.resumeTimers();
- }
-
- @Override
- public void onPause() {
- super.onPause();
- mControlWebView.pauseTimers();
- }
-
- @Override
- public void onDestroy() {
- super.onDestroy();
- mControlWebView.destroy();
- mControlWebView = null;
- }
-
void updateMinFontSummary(Preference pref, int minFontSize) {
Context c = getActivity();
pref.setSummary(c.getString(R.string.pref_min_font_size_value, minFontSize));
diff --git a/src/com/android/browser/preferences/FontSizePreview.java b/src/com/android/browser/preferences/FontSizePreview.java
index 8825f3d..67d0bd7 100644
--- a/src/com/android/browser/preferences/FontSizePreview.java
+++ b/src/com/android/browser/preferences/FontSizePreview.java
@@ -17,20 +17,16 @@
package com.android.browser.preferences;
import android.content.Context;
-import android.content.res.Resources;
import android.util.AttributeSet;
-import android.view.View;
-import android.webkit.WebSettings;
-import android.webkit.WebView;
-
import com.android.browser.BrowserSettings;
import com.android.browser.R;
+import org.codeaurora.swe.WebSettings;
+
public class FontSizePreview extends WebViewPreview {
- static final String HTML_FORMAT = "<!DOCTYPE html><html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><style type=\"text/css\">p { margin: 2px auto;}</style><body><p style=\"font-size: 4pt\">%s</p><p style=\"font-size: 8pt\">%s</p><p style=\"font-size: 10pt\">%s</p><p style=\"font-size: 14pt\">%s</p><p style=\"font-size: 18pt\">%s</p></body></html>";
-
- String mHtml;
+ //default size for normal sized preview text
+ static final int DEFAULT_FONT_PREVIEW_SIZE = 13;
public FontSizePreview(
Context context, AttributeSet attrs, int defStyle) {
@@ -46,28 +42,15 @@
}
@Override
- protected void init(Context context) {
- super.init(context);
- Resources res = context.getResources();
- Object[] visualNames = res.getStringArray(R.array.pref_text_size_choices);
- mHtml = String.format(HTML_FORMAT, visualNames);
- }
-
- @Override
protected void updatePreview(boolean forceReload) {
- if (mWebView == null) return;
+ if (mWebView == null || mTextView == null)
+ return;
WebSettings ws = mWebView.getSettings();
BrowserSettings bs = BrowserSettings.getInstance();
ws.setMinimumFontSize(bs.getMinimumFontSize());
ws.setTextZoom(bs.getTextZoom());
- mWebView.loadDataWithBaseURL(null, mHtml, "text/html", "utf-8", null);
+ mTextView.setText(R.string.pref_sample_font_size);
+ mTextView.setTextSize(DEFAULT_FONT_PREVIEW_SIZE * bs.getTextZoom() / 100);
}
-
- @Override
- protected void setupWebView(WebView view) {
- super.setupWebView(view);
- view.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
- }
-
}
diff --git a/src/com/android/browser/preferences/WebViewPreview.java b/src/com/android/browser/preferences/WebViewPreview.java
index 1f938f0..03ffcb2 100644
--- a/src/com/android/browser/preferences/WebViewPreview.java
+++ b/src/com/android/browser/preferences/WebViewPreview.java
@@ -24,17 +24,18 @@
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
-import android.webkit.WebView;
-
+import android.widget.TextView;
+import com.android.browser.BrowserSettings;
import com.android.browser.R;
+import org.codeaurora.swe.WebView;
public abstract class WebViewPreview extends Preference
implements OnSharedPreferenceChangeListener {
+ protected TextView mTextView;
protected WebView mWebView;
- public WebViewPreview(
- Context context, AttributeSet attrs, int defStyle) {
+ public WebViewPreview(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init(context);
}
@@ -51,32 +52,23 @@
protected void init(Context context) {
setLayoutResource(R.layout.webview_preview);
+ BrowserSettings bs = BrowserSettings.getInstance();
+ mWebView = bs.getTopWebView();
}
protected abstract void updatePreview(boolean forceReload);
- protected void setupWebView(WebView view) {}
-
- @Override
- protected View onCreateView(ViewGroup parent) {
- View root = super.onCreateView(parent);
- WebView webView = (WebView) root.findViewById(R.id.webview);
- // Tell WebView to really, truly ignore all touch events. No, seriously,
- // ignore them all. And don't show scrollbars.
- webView.setFocusable(false);
- webView.setFocusableInTouchMode(false);
- webView.setClickable(false);
- webView.setLongClickable(false);
- webView.setHorizontalScrollBarEnabled(false);
- webView.setVerticalScrollBarEnabled(false);
- setupWebView(webView);
- return root;
- }
-
@Override
protected void onBindView(View view) {
super.onBindView(view);
- mWebView = (WebView) view.findViewById(R.id.webview);
+ mTextView = (TextView) view.findViewById(R.id.text_size_preview);
+ // Ignore all touch events & don't show scrollbars
+ mTextView.setFocusable(false);
+ mTextView.setFocusableInTouchMode(false);
+ mTextView.setClickable(false);
+ mTextView.setLongClickable(false);
+ mTextView.setHorizontalScrollBarEnabled(false);
+ mTextView.setVerticalScrollBarEnabled(false);
updatePreview(true);
}
@@ -93,8 +85,8 @@
}
@Override
- public void onSharedPreferenceChanged(
- SharedPreferences sharedPreferences, String key) {
+ public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
+ String key) {
updatePreview(false);
}