summaryrefslogtreecommitdiffstats
path: root/WebKit
diff options
context:
space:
mode:
authorSteve Block <steveblock@google.com>2010-09-27 18:44:53 +0100
committerSteve Block <steveblock@google.com>2010-09-28 11:23:40 +0100
commitc69eecf3d5b24dd7ef9a0d893e79d3a21a2366ff (patch)
tree82c7bbc8195e707cf4ae692c7c60d3a0dedd766d /WebKit
parentc95d7f499ee3250e2d4a51f7e8f04bb6ebfc6add (diff)
downloadexternal_webkit-c69eecf3d5b24dd7ef9a0d893e79d3a21a2366ff.zip
external_webkit-c69eecf3d5b24dd7ef9a0d893e79d3a21a2366ff.tar.gz
external_webkit-c69eecf3d5b24dd7ef9a0d893e79d3a21a2366ff.tar.bz2
Update the storage locations used by the Chromium HTTP stack
This updates the strorage locations to better match those used by the Android HTTP stack. Corresponding frameworks/base change is https://android-git.corp.google.com/g/70644 Bug: 3039536 Change-Id: I49162eb4d47791d4f42996650cc88bcf4aa2e330
Diffstat (limited to 'WebKit')
-rw-r--r--WebKit/android/WebCoreSupport/WebRequestContext.cpp58
-rw-r--r--WebKit/android/WebCoreSupport/WebRequestContext.h9
-rw-r--r--WebKit/android/nav/WebView.cpp17
3 files changed, 52 insertions, 32 deletions
diff --git a/WebKit/android/WebCoreSupport/WebRequestContext.cpp b/WebKit/android/WebCoreSupport/WebRequestContext.cpp
index 704f8e8..5a0daef 100644
--- a/WebKit/android/WebCoreSupport/WebRequestContext.cpp
+++ b/WebKit/android/WebCoreSupport/WebRequestContext.cpp
@@ -47,17 +47,15 @@ Lock acceptLanguageLock;
namespace android {
-static const char* const kNormalCookies = "/chromecookies.db";
-static const char* const kNormalCache = "/chromecache";
-static const char* const kPrivateCookies = "/chromecookies_private.db";
-static const char* const kPrivateCache = "/chromecache_private";
+static const char* const kCookiesDatabaseFilename = "/webviewCookiesChromium.db";
+static const char* const kCacheDirectory = "/webviewCacheChromium";
+static const char* const kCookiesDatabaseFilenamePrivate = "/webviewCookiesChromiumPrivate.db";
+static const char* const kCacheDirectoryPrivate = "/webviewCacheChromiumPrivate";
static scoped_refptr<WebRequestContext> androidContext(0);
static scoped_refptr<WebRequestContext> androidPrivateBrowsingContext(0);
static WTF::Mutex androidPrivateBrowsingContextMutex;
-std::string* WebRequestContext::s_dataDirectory(0);
-
WebRequestContext::WebRequestContext()
{
// Also hardcoded in FrameLoader.java
@@ -92,30 +90,50 @@ const std::string& WebRequestContext::GetAcceptLanguage() const
return acceptLanguage;
}
-const std::string* WebRequestContext::GetDataDirectory()
+const std::string& WebRequestContext::GetDatabaseDirectory()
+{
+ static std::string databaseDirectory;
+ if (databaseDirectory.empty()) {
+ JNIEnv* env = JSC::Bindings::getJNIEnv();
+ jclass bridgeClass = env->FindClass("android/webkit/BrowserFrame");
+ jmethodID method = env->GetStaticMethodID(bridgeClass, "getDatabaseDirectory", "()Ljava/lang/String;");
+
+ jstring str = (jstring)env->CallStaticObjectMethod(bridgeClass, method);
+ jboolean isCopy;
+ const char* nativeString = env->GetStringUTFChars(str, &isCopy);
+ databaseDirectory = std::string(nativeString);
+ if (isCopy == JNI_TRUE)
+ env->ReleaseStringUTFChars(str, nativeString);
+ }
+
+ return databaseDirectory;
+}
+
+const std::string& WebRequestContext::GetCacheDirectory()
{
- if (!s_dataDirectory) {
+ static std::string cacheDirectory;
+ if (cacheDirectory.empty()) {
JNIEnv* env = JSC::Bindings::getJNIEnv();
jclass bridgeClass = env->FindClass("android/webkit/BrowserFrame");
- jmethodID method = env->GetStaticMethodID(bridgeClass, "getDataDirectory", "()Ljava/lang/String;");
+ jmethodID method = env->GetStaticMethodID(bridgeClass, "getCacheDirectory", "()Ljava/lang/String;");
jstring str = (jstring)env->CallStaticObjectMethod(bridgeClass, method);
jboolean isCopy;
const char* nativeString = env->GetStringUTFChars(str, &isCopy);
- s_dataDirectory = new std::string(nativeString);
+ cacheDirectory = std::string(nativeString);
if (isCopy == JNI_TRUE)
env->ReleaseStringUTFChars(str, nativeString);
}
- return s_dataDirectory;
+ return cacheDirectory;
}
scoped_refptr<WebRequestContext> WebRequestContext::GetAndroidContextForPath(const char* cookieFilename, const char* cacheFilename)
{
- std::string cookieString(*GetDataDirectory());
+ std::string cookieString(GetDatabaseDirectory());
cookieString.append(cookieFilename);
FilePath cookiePath(cookieString.c_str());
- std::string cacheString(*GetDataDirectory());
+ std::string cacheString(GetCacheDirectory());
cacheString.append(cacheFilename);
FilePath cachePath(cacheString.c_str());
@@ -140,7 +158,7 @@ scoped_refptr<WebRequestContext> WebRequestContext::GetAndroidContextForPath(con
scoped_refptr<WebRequestContext> WebRequestContext::GetAndroidContext()
{
if (!androidContext)
- androidContext = GetAndroidContextForPath(kNormalCookies, kNormalCache);
+ androidContext = GetAndroidContextForPath(kCookiesDatabaseFilename, kCacheDirectory);
return androidContext;
}
@@ -151,7 +169,7 @@ scoped_refptr<WebRequestContext> WebRequestContext::GetAndroidPrivateBrowsingCon
if (!androidPrivateBrowsingContext) {
// TODO: Where is the right place to put the temporary db? Should it be
// kept in memory?
- androidPrivateBrowsingContext = GetAndroidContextForPath(kPrivateCookies, kPrivateCache);
+ androidPrivateBrowsingContext = GetAndroidContextForPath(kCookiesDatabaseFilenamePrivate, kCacheDirectoryPrivate);
}
return androidPrivateBrowsingContext;
}
@@ -180,18 +198,18 @@ static void removeFileOrDirectory(const char* filename)
unlink(filename);
}
-bool WebRequestContext::CleanupAndroidPrivateBrowsingFiles(std::string dataDirectory)
+bool WebRequestContext::CleanupPrivateBrowsingFiles(const std::string& databaseDirectory, const std::string& cacheDirectory)
{
WTF::MutexLocker lock(androidPrivateBrowsingContextMutex);
if (!androidPrivateBrowsingContext || androidPrivateBrowsingContext->HasOneRef()) {
androidPrivateBrowsingContext = 0;
- std::string cookiePath(dataDirectory);
- cookiePath.append(kPrivateCookies);
+ std::string cookiePath(databaseDirectory);
+ cookiePath.append(kCookiesDatabaseFilenamePrivate);
removeFileOrDirectory(cookiePath.c_str());
- std::string cachePath(dataDirectory);
- cachePath.append(kPrivateCache);
+ std::string cachePath(cacheDirectory);
+ cachePath.append(kCacheDirectoryPrivate);
removeFileOrDirectory(cachePath.c_str());
return true;
}
diff --git a/WebKit/android/WebCoreSupport/WebRequestContext.h b/WebKit/android/WebCoreSupport/WebRequestContext.h
index d93fd24..5008487 100644
--- a/WebKit/android/WebCoreSupport/WebRequestContext.h
+++ b/WebKit/android/WebCoreSupport/WebRequestContext.h
@@ -39,20 +39,17 @@ public:
virtual const std::string& GetAcceptLanguage() const;
static scoped_refptr<WebRequestContext> GetAndroidContext();
static scoped_refptr<WebRequestContext> GetAndroidPrivateBrowsingContext();
- static bool CleanupAndroidPrivateBrowsingFiles(std::string dataDirectory);
+ static bool CleanupPrivateBrowsingFiles(const std::string& databaseDirectory, const std::string& cacheDirectory);
static void SetUserAgent(WTF::String);
static void SetAcceptLanguage(WTF::String);
private:
- static const std::string* GetDataDirectory();
+ static const std::string& GetDatabaseDirectory();
+ static const std::string& GetCacheDirectory();
static scoped_refptr<WebRequestContext> GetAndroidContextForPath(const char* cookiePath, const char* cachePath);
WebRequestContext();
~WebRequestContext();
-
- // Caching this query from java
- static std::string* s_dataDirectory;
- static std::string* s_userAgent;
};
} // namespace android
diff --git a/WebKit/android/nav/WebView.cpp b/WebKit/android/nav/WebView.cpp
index e95eee0..841434f 100644
--- a/WebKit/android/nav/WebView.cpp
+++ b/WebKit/android/nav/WebView.cpp
@@ -1965,14 +1965,19 @@ static void nativeMoveSelection(JNIEnv *env, jobject obj, int x, int y)
GET_NATIVE_VIEW(env, obj)->moveSelection(x, y);
}
-static jboolean nativeCleanupPrivateBrowsingFiles(JNIEnv *env, jobject obj, jstring dataDirectory) {
+static jboolean nativeCleanupPrivateBrowsingFiles(
+ JNIEnv *env, jobject obj, jstring databaseDirectoryJString, jstring cacheDirectoryJString) {
#if USE(CHROME_NETWORK_STACK)
jboolean isCopy;
- const char* nativeString = env->GetStringUTFChars(dataDirectory, &isCopy);
- std::string nativeDataDirectory(nativeString);
+ const char* cString = env->GetStringUTFChars(databaseDirectoryJString, &isCopy);
+ std::string databaseDirectory(cString);
if (isCopy == JNI_TRUE)
- env->ReleaseStringUTFChars(dataDirectory, nativeString);
- return WebRequestContext::CleanupAndroidPrivateBrowsingFiles(nativeDataDirectory);
+ env->ReleaseStringUTFChars(databaseDirectoryJString, cString);
+ cString = env->GetStringUTFChars(cacheDirectoryJString, &isCopy);
+ std::string cacheDirectory(cString);
+ if (isCopy == JNI_TRUE)
+ env->ReleaseStringUTFChars(cacheDirectoryJString, cString);
+ return WebRequestContext::CleanupPrivateBrowsingFiles(databaseDirectory, cacheDirectory);
#else
return JNI_FALSE;
#endif
@@ -2228,7 +2233,7 @@ static JNINativeMethod gJavaWebViewMethods[] = {
(void*) nativeMoveGeneration },
{ "nativeMoveSelection", "(II)V",
(void*) nativeMoveSelection },
- { "nativeCleanupPrivateBrowsingFiles", "(Ljava/lang/String;)Z",
+ { "nativeCleanupPrivateBrowsingFiles", "(Ljava/lang/String;Ljava/lang/String;)Z",
(void*) nativeCleanupPrivateBrowsingFiles },
{ "nativePointInNavCache", "(III)Z",
(void*) nativePointInNavCache },