diff options
author | Steve Block <steveblock@google.com> | 2010-09-27 18:44:53 +0100 |
---|---|---|
committer | Steve Block <steveblock@google.com> | 2010-09-28 11:23:40 +0100 |
commit | c69eecf3d5b24dd7ef9a0d893e79d3a21a2366ff (patch) | |
tree | 82c7bbc8195e707cf4ae692c7c60d3a0dedd766d /WebKit | |
parent | c95d7f499ee3250e2d4a51f7e8f04bb6ebfc6add (diff) | |
download | external_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.cpp | 58 | ||||
-rw-r--r-- | WebKit/android/WebCoreSupport/WebRequestContext.h | 9 | ||||
-rw-r--r-- | WebKit/android/nav/WebView.cpp | 17 |
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 }, |