Skip to content

Commit afb0de7

Browse files
committed
Squashed 'libs/editor/' changes from 260a0d5..7dcc1a9
7dcc1a9 Merge pull request #435 from wordpress-mobile/issue/432-evaluateJavaScript-not-supported 3b5fd66 Added debug logging when reverting to compatibility EditorWebView for custom ROMs be1722d Set WebView LayoutParams when reverting to compatibility WebView for custom ROM fix a6d3101 Check for custom ROMs using a 4.3 WebView in a 4.4 Android build, and revert to compatibility WebView for those devices git-subtree-dir: libs/editor git-subtree-split: 7dcc1a99138131dcafd020948f2100ab6c3c7b58
1 parent ced2637 commit afb0de7

File tree

3 files changed

+33
-5
lines changed

3 files changed

+33
-5
lines changed

WordPressEditor/src/main/java/org/wordpress/android/editor/EditorFragment.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import android.view.inputmethod.InputMethodManager;
2727
import android.webkit.URLUtil;
2828
import android.webkit.WebView;
29+
import android.widget.RelativeLayout.LayoutParams;
2930
import android.widget.ToggleButton;
3031

3132
import com.android.volley.toolbox.ImageLoader;
@@ -148,6 +149,16 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa
148149

149150
mWebView = (EditorWebViewAbstract) view.findViewById(R.id.webview);
150151

152+
// Revert to compatibility WebView for custom ROMs using a 4.3 WebView in Android 4.4
153+
if (mWebView.shouldSwitchToCompatibilityMode()) {
154+
ViewGroup parent = (ViewGroup) mWebView.getParent();
155+
int index = parent.indexOfChild(mWebView);
156+
parent.removeView(mWebView);
157+
mWebView = new EditorWebViewCompatibility(getActivity(), null);
158+
mWebView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
159+
parent.addView(mWebView, index);
160+
}
161+
151162
mWebView.setOnTouchListener(this);
152163
mWebView.setOnImeBackListener(this);
153164
mWebView.setAuthHeaderRequestListener(this);

WordPressEditor/src/main/java/org/wordpress/android/editor/EditorWebView.java

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import android.os.Build;
66
import android.util.AttributeSet;
77

8+
import org.wordpress.android.util.AppLog;
9+
810
public class EditorWebView extends EditorWebViewAbstract {
911

1012
public EditorWebView(Context context, AttributeSet attrs) {
@@ -13,11 +15,21 @@ public EditorWebView(Context context, AttributeSet attrs) {
1315

1416
@SuppressLint("NewApi")
1517
public void execJavaScriptFromString(String javaScript) {
16-
if (Build.VERSION.SDK_INT >= 19) {
17-
this.evaluateJavascript(javaScript, null);
18-
} else {
19-
this.loadUrl("javascript:" + javaScript);
20-
}
18+
this.evaluateJavascript(javaScript, null);
2119
}
2220

21+
@SuppressLint("NewApi")
22+
@Override
23+
public boolean shouldSwitchToCompatibilityMode() {
24+
if (Build.VERSION.SDK_INT <= 19) {
25+
try {
26+
this.evaluateJavascript("", null);
27+
} catch (NoSuchMethodError | IllegalStateException e) {
28+
AppLog.d(AppLog.T.EDITOR,
29+
"Detected 4.4 ROM using classic WebView, reverting to compatibility EditorWebView.");
30+
return true;
31+
}
32+
}
33+
return false;
34+
}
2335
}

WordPressEditor/src/main/java/org/wordpress/android/editor/EditorWebViewAbstract.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,11 @@ public void setVisibility(int visibility) {
179179
super.setVisibility(visibility);
180180
}
181181

182+
183+
public boolean shouldSwitchToCompatibilityMode() {
184+
return false;
185+
}
186+
182187
public void setDebugModeEnabled(boolean enabled) {
183188
mDebugModeEnabled = enabled;
184189
}

0 commit comments

Comments
 (0)