Merge "Update WebView.addJavascriptInterface() to ignore null instances"
diff --git a/core/java/android/webkit/BrowserFrame.java b/core/java/android/webkit/BrowserFrame.java
index 9568e4f..8f92458 100644
--- a/core/java/android/webkit/BrowserFrame.java
+++ b/core/java/android/webkit/BrowserFrame.java
@@ -571,8 +571,11 @@
Iterator iter = mJSInterfaceMap.keySet().iterator();
while (iter.hasNext()) {
String interfaceName = (String) iter.next();
- nativeAddJavascriptInterface(nativeFramePointer,
- mJSInterfaceMap.get(interfaceName), interfaceName);
+ Object object = mJSInterfaceMap.get(interfaceName);
+ if (object != null) {
+ nativeAddJavascriptInterface(nativeFramePointer,
+ mJSInterfaceMap.get(interfaceName), interfaceName);
+ }
}
}
}
@@ -595,6 +598,7 @@
}
public void addJavascriptInterface(Object obj, String interfaceName) {
+ assert obj != null;
if (mJSInterfaceMap == null) {
mJSInterfaceMap = new HashMap<String, Object>();
}
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index be475ca..be20a1c 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -3492,10 +3492,14 @@
* <li> The Java object that is bound runs in another thread and not in
* the thread that it was constructed in.</li>
* </ul></p>
- * @param obj The class instance to bind to Javascript
- * @param interfaceName The name to used to expose the class in Javascript
+ * @param obj The class instance to bind to Javascript, null instances are
+ * ignored.
+ * @param interfaceName The name to used to expose the class in JavaScript.
*/
public void addJavascriptInterface(Object obj, String interfaceName) {
+ if (obj == null) {
+ return;
+ }
WebViewCore.JSInterfaceData arg = new WebViewCore.JSInterfaceData();
arg.mObject = obj;
arg.mInterfaceName = interfaceName;