From 0076dce702cf02817d9c43f03fcd045dac226e95 Mon Sep 17 00:00:00 2001 From: Ben Murdoch Date: Thu, 25 Feb 2010 18:36:43 +0000 Subject: Only set the DatabaseTracker path if it has been successfully set to something on the Java side as the DatabaseTracker only allows us to set it once. Change-Id: I5d0121dac9a2b276a483992784822c1f52c04853 --- WebKit/android/jni/WebSettings.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'WebKit/android/jni/WebSettings.cpp') diff --git a/WebKit/android/jni/WebSettings.cpp b/WebKit/android/jni/WebSettings.cpp index 50919b6..91ed8cc 100644 --- a/WebKit/android/jni/WebSettings.cpp +++ b/WebKit/android/jni/WebSettings.cpp @@ -94,6 +94,7 @@ struct FieldIds { // The databases saved to disk for both the SQL and DOM Storage APIs are stored // in the same base directory. mDatabasePath = env->GetFieldID(clazz, "mDatabasePath", "Ljava/lang/String;"); + mDatabasePathHasBeenSet = env->GetFieldID(clazz, "mDatabasePathHasBeenSet", "Z"); #endif #if ENABLE(OFFLINE_WEB_APPLICATIONS) mAppCacheEnabled = env->GetFieldID(clazz, "mAppCacheEnabled", "Z"); @@ -207,6 +208,7 @@ struct FieldIds { jfieldID mGeolocationDatabasePath; #if ENABLE(DATABASE) || ENABLE(DOM_STORAGE) jfieldID mDatabasePath; + jfieldID mDatabasePathHasBeenSet; #endif }; @@ -345,9 +347,14 @@ public: #if ENABLE(DATABASE) flag = env->GetBooleanField(obj, gFieldIds->mDatabaseEnabled); s->setDatabasesEnabled(flag); - str = (jstring)env->GetObjectField(obj, gFieldIds->mDatabasePath); - if (str && WebCore::DatabaseTracker::tracker().databaseDirectoryPath().isNull()) - WebCore::DatabaseTracker::tracker().setDatabaseDirectoryPath(to_string(env, str)); + + flag = env->GetBooleanField(obj, gFieldIds->mDatabasePathHasBeenSet); + if (flag) { + // If the user has set the database path, sync it to the DatabaseTracker. + str = (jstring)env->GetObjectField(obj, gFieldIds->mDatabasePath); + if (str) + WebCore::DatabaseTracker::tracker().setDatabaseDirectoryPath(to_string(env, str)); + } #endif #if ENABLE(DOM_STORAGE) flag = env->GetBooleanField(obj, gFieldIds->mDomStorageEnabled); -- cgit v1.1