| Index: android_webview/glue/java/src/com/android/webview/chromium/WebViewDatabaseAdapter.java
|
| diff --git a/android_webview/glue/java/src/com/android/webview/chromium/WebViewDatabaseAdapter.java b/android_webview/glue/java/src/com/android/webview/chromium/WebViewDatabaseAdapter.java
|
| index 972a619f7507fc980d02c322f03825035e4d5ea6..945fb68b11f059fb5fbcba267934b7e90f53f1e7 100644
|
| --- a/android_webview/glue/java/src/com/android/webview/chromium/WebViewDatabaseAdapter.java
|
| +++ b/android_webview/glue/java/src/com/android/webview/chromium/WebViewDatabaseAdapter.java
|
| @@ -8,6 +8,9 @@ import android.webkit.WebViewDatabase;
|
|
|
| import org.chromium.android_webview.AwFormDatabase;
|
| import org.chromium.android_webview.HttpAuthDatabase;
|
| +import org.chromium.base.ThreadUtils;
|
| +
|
| +import java.util.concurrent.Callable;
|
|
|
| /**
|
| * Chromium implementation of WebViewDatabase -- forwards calls to the
|
| @@ -15,9 +18,12 @@ import org.chromium.android_webview.HttpAuthDatabase;
|
| */
|
| @SuppressWarnings("deprecation")
|
| final class WebViewDatabaseAdapter extends WebViewDatabase {
|
| - private HttpAuthDatabase mHttpAuthDatabase;
|
| + private final WebViewChromiumFactoryProvider mFactory;
|
| + private final HttpAuthDatabase mHttpAuthDatabase;
|
|
|
| - public WebViewDatabaseAdapter(HttpAuthDatabase httpAuthDatabase) {
|
| + public WebViewDatabaseAdapter(
|
| + WebViewChromiumFactoryProvider factory, HttpAuthDatabase httpAuthDatabase) {
|
| + mFactory = factory;
|
| mHttpAuthDatabase = httpAuthDatabase;
|
| }
|
|
|
| @@ -34,21 +40,65 @@ final class WebViewDatabaseAdapter extends WebViewDatabase {
|
|
|
| @Override
|
| public boolean hasHttpAuthUsernamePassword() {
|
| + if (checkNeedsPost()) {
|
| + return mFactory.runOnUiThreadBlocking(new Callable<Boolean>() {
|
| + @Override
|
| + public Boolean call() {
|
| + return mHttpAuthDatabase.hasHttpAuthUsernamePassword();
|
| + }
|
| +
|
| + });
|
| + }
|
| return mHttpAuthDatabase.hasHttpAuthUsernamePassword();
|
| }
|
|
|
| @Override
|
| public void clearHttpAuthUsernamePassword() {
|
| + if (checkNeedsPost()) {
|
| + mFactory.addTask(new Runnable() {
|
| + @Override
|
| + public void run() {
|
| + mHttpAuthDatabase.clearHttpAuthUsernamePassword();
|
| + }
|
| +
|
| + });
|
| + return;
|
| + }
|
| mHttpAuthDatabase.clearHttpAuthUsernamePassword();
|
| }
|
|
|
| @Override
|
| public boolean hasFormData() {
|
| + if (checkNeedsPost()) {
|
| + return mFactory.runOnUiThreadBlocking(new Callable<Boolean>() {
|
| + @Override
|
| + public Boolean call() {
|
| + return AwFormDatabase.hasFormData();
|
| + }
|
| +
|
| + });
|
| + }
|
| return AwFormDatabase.hasFormData();
|
| }
|
|
|
| @Override
|
| public void clearFormData() {
|
| + if (checkNeedsPost()) {
|
| + mFactory.addTask(new Runnable() {
|
| + @Override
|
| + public void run() {
|
| + AwFormDatabase.clearFormData();
|
| + }
|
| +
|
| + });
|
| + return;
|
| + }
|
| AwFormDatabase.clearFormData();
|
| }
|
| +
|
| + private static boolean checkNeedsPost() {
|
| + // Init is guaranteed to have happened if a WebViewDatabaseAdapter is created, so do not
|
| + // need to check WebViewChromiumFactoryProvider.hasStarted.
|
| + return !ThreadUtils.runningOnUiThread();
|
| + }
|
| }
|
|
|