From 172f720710be2008df620438736d19224f0ebcc4 Mon Sep 17 00:00:00 2001 From: dgn Date: Thu, 10 Dec 2015 13:10:21 -0800 Subject: Move some calls from the Android UI thread to the Chrome one Some callbacks (from AsyncTasks, broadcasts reciever and other sources) are received on the Android UI thread but the code expects to run on the Chrome UI thread. BUG=568602 TBR=atwilson@chromium.org Review URL: https://codereview.chromium.org/1514903002 Cr-Commit-Position: refs/heads/master@{#364476} --- .../org/chromium/android_webview/AwContents.java | 7 +++++- .../AwDataReductionProxyManager.java | 29 ++++++++++++---------- 2 files changed, 22 insertions(+), 14 deletions(-) (limited to 'android_webview/java') diff --git a/android_webview/java/src/org/chromium/android_webview/AwContents.java b/android_webview/java/src/org/chromium/android_webview/AwContents.java index ebebc65..1bcf5fa 100644 --- a/android_webview/java/src/org/chromium/android_webview/AwContents.java +++ b/android_webview/java/src/org/chromium/android_webview/AwContents.java @@ -640,7 +640,12 @@ public class AwContents implements SmartClipProvider, if (isDestroyed(NO_WARN)) return; boolean visibleRectEmpty = getGlobalVisibleRect().isEmpty(); final boolean visible = mIsViewVisible && mIsWindowVisible && !visibleRectEmpty; - nativeTrimMemory(mNativeAwContents, level, visible); + ThreadUtils.runOnUiThread(new Runnable() { + @Override + public void run() { + nativeTrimMemory(mNativeAwContents, level, visible); + } + }); } @Override diff --git a/android_webview/java/src/org/chromium/android_webview/AwDataReductionProxyManager.java b/android_webview/java/src/org/chromium/android_webview/AwDataReductionProxyManager.java index 85944b9..f42b25d 100644 --- a/android_webview/java/src/org/chromium/android_webview/AwDataReductionProxyManager.java +++ b/android_webview/java/src/org/chromium/android_webview/AwDataReductionProxyManager.java @@ -15,6 +15,7 @@ import android.os.Handler; import android.util.Log; import org.chromium.base.CommandLine; +import org.chromium.base.ThreadUtils; import java.lang.reflect.Field; @@ -108,21 +109,23 @@ public final class AwDataReductionProxyManager { private static void applyDataReductionProxySettingsAsync( final Context context, final String key) { - AsyncTask task = new AsyncTask() { + AsyncTask.THREAD_POOL_EXECUTOR.execute(new Runnable() { @Override - protected Boolean doInBackground(Void... params) { - return isDataReductionProxyEnabled(context); + public void run() { + final boolean enabled = isDataReductionProxyEnabled(context); + + ThreadUtils.runOnUiThread(new Runnable() { + @Override + public void run() { + if (enabled) { + // Set the data reduction proxy key. + AwContentsStatics.setDataReductionProxyKey(key); + } + AwContentsStatics.setDataReductionProxyEnabled(enabled); + } + }); } - @Override - protected void onPostExecute(Boolean enabled) { - if (enabled) { - // Set the data reduction proxy key. - AwContentsStatics.setDataReductionProxyKey(key); - } - AwContentsStatics.setDataReductionProxyEnabled(enabled); - } - }; - task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); + }); } private static boolean isDataReductionProxyEnabled(Context context) { -- cgit v1.1