Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4673)

Unified Diff: chrome/android/testshell/javatests/src/org/chromium/chrome/testshell/ChromiumTestShellTestBase.java

Issue 12255042: [Android] Introduce a Java wrapper for TemplateUrlService. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: bulach again Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/testshell/javatests/src/org/chromium/chrome/testshell/ChromiumTestShellTestBase.java
diff --git a/chrome/android/testshell/javatests/src/org/chromium/chrome/testshell/ChromiumTestShellTestBase.java b/chrome/android/testshell/javatests/src/org/chromium/chrome/testshell/ChromiumTestShellTestBase.java
index 1c80486c65f20684b46ed90e7538aba55c706b93..6c44ea46848430c6100a6441fa10b836321e19f0 100644
--- a/chrome/android/testshell/javatests/src/org/chromium/chrome/testshell/ChromiumTestShellTestBase.java
+++ b/chrome/android/testshell/javatests/src/org/chromium/chrome/testshell/ChromiumTestShellTestBase.java
@@ -5,6 +5,7 @@
package org.chromium.chrome.testshell;
import android.content.ComponentName;
+import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.test.ActivityInstrumentationTestCase2;
@@ -14,6 +15,7 @@ import org.chromium.chrome.browser.TabBase;
import org.chromium.content.browser.test.util.Criteria;
import org.chromium.content.browser.test.util.CriteriaHelper;
+import java.io.File;
import java.util.concurrent.atomic.AtomicBoolean;
/**
@@ -88,6 +90,84 @@ public class ChromiumTestShellTestBase extends
}
/**
+ * Clear all files in the testshell's directory except 'lib'.
+ *
+ * @return Whether clearing the application data was successful.
+ */
+ protected boolean clearAppData() throws Exception {
+ final int MAX_TIMEOUT_MS = 3000;
+ final String appDir = getAppDir();
+ return CriteriaHelper.pollForCriteria(
+ new Criteria() {
+ private boolean mDataRemoved = false;
+ @Override
+ public boolean isSatisfied() {
+ if (!mDataRemoved && !removeAppData(appDir)) {
+ return false;
+ }
+ mDataRemoved = true;
+ // We have to make sure the cache directory still exists, as the framework
+ // will try to create it otherwise and will fail for sandbox processes with
+ // an NPE.
+ File cacheDir = new File(appDir, "cache");
+ if (cacheDir.exists()) {
+ return true;
+ }
+ return cacheDir.mkdir();
+ }
+ },
+ MAX_TIMEOUT_MS, MAX_TIMEOUT_MS / 10);
+ }
+
+ /**
+ * Remove all files and directories under the given appDir except 'lib'
+ *
+ * @param appDir the app directory to remove.
+ *
+ * @return true if succeeded.
+ */
+ private boolean removeAppData(String appDir) {
+ File[] files = new File(appDir).listFiles();
+ if (files == null) {
+ return true;
+ }
+ for (File file : files) {
+ if (!file.getAbsolutePath().endsWith("/lib") && !removeFile(file)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ private String getAppDir() {
+ Context target_ctx = getInstrumentation().getTargetContext();
+ String cacheDir = target_ctx.getCacheDir().getAbsolutePath();
+ return cacheDir.substring(0, cacheDir.lastIndexOf('/'));
+ }
+
+ /**
+ * Remove the given file or directory.
+ *
+ * @param file the file or directory to remove.
+ *
+ * @return true if succeeded.
+ */
+ private static boolean removeFile(File file) {
+ if (file.isDirectory()) {
+ File[] files = file.listFiles();
+ if (files == null) {
+ return true;
+ }
+ for (File sub_file : files) {
+ if (!removeFile(sub_file))
+ return false;
+ }
+ }
+ return file.delete();
+ }
+
+
+ /**
* Navigates the currently active tab to a sanitized version of {@code url}.
* @param url The potentially unsanitized URL to navigate to.
*/

Powered by Google App Engine
This is Rietveld 408576698