Merge "DO NOT MERGE" into gingerbread
This commit is contained in:
committed by
Android (Google) Code Review
commit
fbd2646705
@ -20,6 +20,8 @@ import android.os.Handler;
|
||||
import android.os.Message;
|
||||
import android.util.Log;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.HashMap;
|
||||
import java.util.Set;
|
||||
|
||||
final class JWebCoreJavaBridge extends Handler {
|
||||
@ -44,7 +46,8 @@ final class JWebCoreJavaBridge extends Handler {
|
||||
|
||||
// keep track of the main WebView attached to the current window so that we
|
||||
// can get the proper Context.
|
||||
private WebView mCurrentMainWebView;
|
||||
private static WeakReference<WebView> sCurrentMainWebView =
|
||||
new WeakReference<WebView>(null);
|
||||
|
||||
/* package */
|
||||
static final int REFRESH_PLUGINS = 100;
|
||||
@ -62,20 +65,20 @@ final class JWebCoreJavaBridge extends Handler {
|
||||
nativeFinalize();
|
||||
}
|
||||
|
||||
synchronized void setActiveWebView(WebView webview) {
|
||||
if (mCurrentMainWebView != null) {
|
||||
static synchronized void setActiveWebView(WebView webview) {
|
||||
if (sCurrentMainWebView.get() != null) {
|
||||
// it is possible if there is a sub-WebView. Do nothing.
|
||||
return;
|
||||
}
|
||||
mCurrentMainWebView = webview;
|
||||
sCurrentMainWebView = new WeakReference<WebView>(webview);
|
||||
}
|
||||
|
||||
synchronized void removeActiveWebView(WebView webview) {
|
||||
if (mCurrentMainWebView != webview) {
|
||||
static synchronized void removeActiveWebView(WebView webview) {
|
||||
if (sCurrentMainWebView.get() != webview) {
|
||||
// it is possible if there is a sub-WebView. Do nothing.
|
||||
return;
|
||||
}
|
||||
mCurrentMainWebView = null;
|
||||
sCurrentMainWebView.clear();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -256,11 +259,12 @@ final class JWebCoreJavaBridge extends Handler {
|
||||
|
||||
synchronized private String getSignedPublicKey(int index, String challenge,
|
||||
String url) {
|
||||
if (mCurrentMainWebView != null) {
|
||||
WebView current = sCurrentMainWebView.get();
|
||||
if (current != null) {
|
||||
// generateKeyPair expects organizations which we don't have. Ignore
|
||||
// url.
|
||||
return CertTool.getSignedPublicKey(
|
||||
mCurrentMainWebView.getContext(), index, challenge);
|
||||
current.getContext(), index, challenge);
|
||||
} else {
|
||||
Log.e(LOGTAG, "There is no active WebView for getSignedPublicKey");
|
||||
return "";
|
||||
|
@ -4502,9 +4502,9 @@ public class WebView extends AbsoluteLayout
|
||||
public void onWindowFocusChanged(boolean hasWindowFocus) {
|
||||
setActive(hasWindowFocus);
|
||||
if (hasWindowFocus) {
|
||||
BrowserFrame.sJavaBridge.setActiveWebView(this);
|
||||
JWebCoreJavaBridge.setActiveWebView(this);
|
||||
} else {
|
||||
BrowserFrame.sJavaBridge.removeActiveWebView(this);
|
||||
JWebCoreJavaBridge.removeActiveWebView(this);
|
||||
}
|
||||
super.onWindowFocusChanged(hasWindowFocus);
|
||||
}
|
||||
|
Reference in New Issue
Block a user