diff options
author | wnwen <wnwen@chromium.org> | 2015-04-21 10:43:45 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-04-21 17:43:54 +0000 |
commit | 23911c85198ae5dd2ed9d7046d5106e3982d1f2e (patch) | |
tree | 20c4cbd624e848134e9639549974781452634ecd | |
parent | de60c5f1d99db33d563c6ccc42d0a27d504a3bcc (diff) | |
download | chromium_src-23911c85198ae5dd2ed9d7046d5106e3982d1f2e.zip chromium_src-23911c85198ae5dd2ed9d7046d5106e3982d1f2e.tar.gz chromium_src-23911c85198ae5dd2ed9d7046d5106e3982d1f2e.tar.bz2 |
Migrate the rest of PathUtils calls to run in background.
Follow-up for http://crrev.com/1091843002, to have all callers start async tasks
in order to fetch directory paths to avoid I/O on the UI thread.
BUG=473353
Review URL: https://codereview.chromium.org/1093223002
Cr-Commit-Position: refs/heads/master@{#326065}
7 files changed, 20 insertions, 48 deletions
diff --git a/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java b/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java index 041ffe2..d608ac9 100644 --- a/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java +++ b/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java @@ -125,7 +125,7 @@ public class WebViewChromiumFactoryProvider implements WebViewFactoryProvider { ThreadUtils.setWillOverrideUiThread(); // Load chromium library. - AwBrowserProcess.loadLibrary(); + AwBrowserProcess.loadLibrary(getWrappedCurrentApplicationContext()); final PackageInfo packageInfo = WebViewFactory.getLoadedPackageInfo(); diff --git a/android_webview/java/src/org/chromium/android_webview/AwBrowserProcess.java b/android_webview/java/src/org/chromium/android_webview/AwBrowserProcess.java index 96d9fb0..c1529e6 100644 --- a/android_webview/java/src/org/chromium/android_webview/AwBrowserProcess.java +++ b/android_webview/java/src/org/chromium/android_webview/AwBrowserProcess.java @@ -30,8 +30,8 @@ public abstract class AwBrowserProcess { * to run webview in this process. Does not create threads; safe to call from zygote. * Note: it is up to the caller to ensure this is only called once. */ - public static void loadLibrary() { - PathUtils.setPrivateDataDirectorySuffix(PRIVATE_DATA_DIRECTORY_SUFFIX); + public static void loadLibrary(Context context) { + PathUtils.setPrivateDataDirectorySuffix(PRIVATE_DATA_DIRECTORY_SUFFIX, context); try { LibraryLoader libraryLoader = LibraryLoader.get(LibraryProcessType.PROCESS_WEBVIEW); libraryLoader.loadNow(); diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/HttpCacheTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/HttpCacheTest.java index 9a4569e..333e9a6 100644 --- a/android_webview/javatests/src/org/chromium/android_webview/test/HttpCacheTest.java +++ b/android_webview/javatests/src/org/chromium/android_webview/test/HttpCacheTest.java @@ -4,6 +4,7 @@ package org.chromium.android_webview.test; +import android.content.Context; import android.os.Build; import android.test.suitebuilder.annotation.SmallTest; @@ -71,11 +72,11 @@ public class HttpCacheTest extends AwTestBase { @SmallTest @Feature({"AndroidWebView"}) public void testLegacyHttpCacheDirIsRemovedOnStartup() throws Exception { + Context targetContext = getInstrumentation().getTargetContext(); PathUtils.setPrivateDataDirectorySuffix( - AwBrowserProcess.PRIVATE_DATA_DIRECTORY_SUFFIX, - getInstrumentation().getTargetContext()); + AwBrowserProcess.PRIVATE_DATA_DIRECTORY_SUFFIX, targetContext); File webViewLegacyCacheDir = new File( - PathUtils.getDataDirectory(getInstrumentation().getTargetContext()), "Cache"); + PathUtils.getDataDirectory(targetContext), "Cache"); if (!webViewLegacyCacheDir.isDirectory()) { assertTrue(webViewLegacyCacheDir.mkdir()); assertTrue(webViewLegacyCacheDir.isDirectory()); @@ -84,7 +85,7 @@ public class HttpCacheTest extends AwTestBase { assertTrue(dummyCacheFile.exists()); // Set up JNI bindings. - AwBrowserProcess.loadLibrary(); + AwBrowserProcess.loadLibrary(targetContext); // No delay before removing the legacy cache files. AwContentsStatics.setLegacyCacheRemovalDelayForTest(0); diff --git a/android_webview/test/shell/src/org/chromium/android_webview/shell/AwShellApplication.java b/android_webview/test/shell/src/org/chromium/android_webview/shell/AwShellApplication.java index 638d1d9..5e1a070 100644 --- a/android_webview/test/shell/src/org/chromium/android_webview/shell/AwShellApplication.java +++ b/android_webview/test/shell/src/org/chromium/android_webview/shell/AwShellApplication.java @@ -39,7 +39,7 @@ public class AwShellApplication extends ContentApplication { Log.e(TAG, "Java debugger connected. Resuming execution."); } - AwBrowserProcess.loadLibrary(); + AwBrowserProcess.loadLibrary(this); if (CommandLine.getInstance().hasSwitch(AwShellSwitches.ENABLE_ATRACE)) { Log.e(TAG, "Enabling Android trace."); diff --git a/base/android/java/src/org/chromium/base/PathUtils.java b/base/android/java/src/org/chromium/base/PathUtils.java index bcd850c..edaa634 100644 --- a/base/android/java/src/org/chromium/base/PathUtils.java +++ b/base/android/java/src/org/chromium/base/PathUtils.java @@ -16,8 +16,6 @@ import java.util.concurrent.ExecutionException; */ public abstract class PathUtils { - private static String sDataDirectorySuffix; - private static final int DATA_DIRECTORY = 0; private static final int DATABASE_DIRECTORY = 1; private static final int CACHE_DIRECTORY = 2; @@ -28,22 +26,6 @@ public abstract class PathUtils { private PathUtils() {} /** - * Sets the suffix that should be used for the directory where private data is to be stored - * by the application. - * - * TODO(wnwen): Remove this after all clients have migrated and add asserts for not null. - * - * @param suffix The private data directory suffix. - * @see Context#getDir(String, int) - * @deprecated - */ - @Deprecated - public static void setPrivateDataDirectorySuffix(String suffix) { - sDirPathFetchTask = null; - sDataDirectorySuffix = suffix; - } - - /** * Starts an asynchronous task to fetch the path of the directory where private data is to be * stored by the application. * @@ -51,7 +33,6 @@ public abstract class PathUtils { * @see Context#getDir(String, int) */ public static void setPrivateDataDirectorySuffix(String suffix, final Context appContext) { - sDataDirectorySuffix = null; sDirPathFetchTask = new AsyncTask<String, Void, String[]>() { @Override protected String[] doInBackground(String... dataDirectorySuffix) { @@ -83,15 +64,8 @@ public abstract class PathUtils { */ @CalledByNative public static String getDataDirectory(Context appContext) { - if (sDataDirectorySuffix == null && sDirPathFetchTask == null) { - throw new IllegalStateException( - "setDataDirectorySuffix must be called before getDataDirectory"); - } else if (sDirPathFetchTask != null) { - return getDirectoryPath(DATA_DIRECTORY); - } else { - // Temporarily allow UI thread directory fetching until all callers have been migrated. - return appContext.getDir(sDataDirectorySuffix, Context.MODE_PRIVATE).getPath(); - } + assert sDirPathFetchTask != null : "setDataDirectorySuffix must be called first."; + return getDirectoryPath(DATA_DIRECTORY); } /** @@ -99,11 +73,8 @@ public abstract class PathUtils { */ @CalledByNative public static String getDatabaseDirectory(Context appContext) { - if (sDirPathFetchTask != null) { - return getDirectoryPath(DATABASE_DIRECTORY); - } - // Context.getDatabasePath() returns path for the provided filename. - return appContext.getDatabasePath("foo").getParent(); + assert sDirPathFetchTask != null : "setDataDirectorySuffix must be called first."; + return getDirectoryPath(DATABASE_DIRECTORY); } /** @@ -112,10 +83,8 @@ public abstract class PathUtils { @SuppressWarnings("unused") @CalledByNative public static String getCacheDirectory(Context appContext) { - if (sDirPathFetchTask != null) { - return getDirectoryPath(CACHE_DIRECTORY); - } - return appContext.getCacheDir().getPath(); + assert sDirPathFetchTask != null : "setDataDirectorySuffix must be called first."; + return getDirectoryPath(CACHE_DIRECTORY); } /** diff --git a/mojo/services/html_viewer/android/android_hooks.cc b/mojo/services/html_viewer/android/android_hooks.cc index a1a29d2..21ba5c1 100644 --- a/mojo/services/html_viewer/android/android_hooks.cc +++ b/mojo/services/html_viewer/android/android_hooks.cc @@ -16,7 +16,7 @@ bool RegisterJNI(JNIEnv* env) { } bool Init() { - Java_Main_init(base::android::AttachCurrentThread()); + Java_Main_init(base::android::AttachCurrentThread(), GetApplicationContext()); return true; } } // namespace diff --git a/mojo/services/html_viewer/android/java/org/chromium/html_viewer/Main.java b/mojo/services/html_viewer/android/java/org/chromium/html_viewer/Main.java index 283029d..87a7b59 100644 --- a/mojo/services/html_viewer/android/java/org/chromium/html_viewer/Main.java +++ b/mojo/services/html_viewer/android/java/org/chromium/html_viewer/Main.java @@ -4,6 +4,8 @@ package org.chromium.html_viewer; +import android.content.Context; + import org.chromium.base.CalledByNative; import org.chromium.base.PathUtils; @@ -17,7 +19,7 @@ public final class Main { @SuppressWarnings("unused") @CalledByNative - private static void init() { - PathUtils.setPrivateDataDirectorySuffix(PRIVATE_DATA_DIRECTORY_SUFFIX); + private static void init(Context context) { + PathUtils.setPrivateDataDirectorySuffix(PRIVATE_DATA_DIRECTORY_SUFFIX, context); } } |