summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwnwen <wnwen@chromium.org>2015-04-21 10:43:45 -0700
committerCommit bot <commit-bot@chromium.org>2015-04-21 17:43:54 +0000
commit23911c85198ae5dd2ed9d7046d5106e3982d1f2e (patch)
tree20c4cbd624e848134e9639549974781452634ecd
parentde60c5f1d99db33d563c6ccc42d0a27d504a3bcc (diff)
downloadchromium_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}
-rw-r--r--android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java2
-rw-r--r--android_webview/java/src/org/chromium/android_webview/AwBrowserProcess.java4
-rw-r--r--android_webview/javatests/src/org/chromium/android_webview/test/HttpCacheTest.java9
-rw-r--r--android_webview/test/shell/src/org/chromium/android_webview/shell/AwShellApplication.java2
-rw-r--r--base/android/java/src/org/chromium/base/PathUtils.java43
-rw-r--r--mojo/services/html_viewer/android/android_hooks.cc2
-rw-r--r--mojo/services/html_viewer/android/java/org/chromium/html_viewer/Main.java6
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);
}
}