From 544295eebc1257e8c37b80b1ea7605a7915f0f06 Mon Sep 17 00:00:00 2001 From: Steve Block Date: Thu, 2 Dec 2010 18:40:06 +0000 Subject: Update WebView.addJavascriptInterface() to ignore null instances Bug: 3247571 Change-Id: If6a108fe926e45dc3e298f197f6534c575c560e2 --- core/java/android/webkit/BrowserFrame.java | 8 ++++++-- core/java/android/webkit/WebView.java | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/core/java/android/webkit/BrowserFrame.java b/core/java/android/webkit/BrowserFrame.java index 9568e4f643f8..8f9245822202 100644 --- a/core/java/android/webkit/BrowserFrame.java +++ b/core/java/android/webkit/BrowserFrame.java @@ -571,8 +571,11 @@ class BrowserFrame extends Handler { 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 @@ class BrowserFrame extends Handler { } public void addJavascriptInterface(Object obj, String interfaceName) { + assert obj != null; if (mJSInterfaceMap == null) { mJSInterfaceMap = new HashMap(); } diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index be475ca31238..be20a1cfd520 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -3492,10 +3492,14 @@ public class WebView extends AbsoluteLayout *
  • The Java object that is bound runs in another thread and not in * the thread that it was constructed in.
  • *

    - * @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; -- cgit v1.2.3-59-g8ed1b