summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Murdoch <benm@google.com>2010-02-26 02:11:11 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2010-02-26 02:11:11 -0800
commitdf29e6249ae08605ad2ba3e9a6e5428a0a48d4ff (patch)
tree367b935e01879c08d94c818481cff6708111ef71
parentdfc6913fe5be473f971494d3bb8a6b29dfdb70ab (diff)
parent0076dce702cf02817d9c43f03fcd045dac226e95 (diff)
downloadexternal_webkit-df29e6249ae08605ad2ba3e9a6e5428a0a48d4ff.zip
external_webkit-df29e6249ae08605ad2ba3e9a6e5428a0a48d4ff.tar.gz
external_webkit-df29e6249ae08605ad2ba3e9a6e5428a0a48d4ff.tar.bz2
Merge "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."
-rw-r--r--WebKit/android/jni/WebSettings.cpp13
1 files changed, 10 insertions, 3 deletions
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);