summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Murdoch <benm@google.com>2010-02-25 18:36:43 +0000
committerBen Murdoch <benm@google.com>2010-02-25 18:47:47 +0000
commit0076dce702cf02817d9c43f03fcd045dac226e95 (patch)
tree23e07bf15db54648340d9c64021f285b573dc2aa
parent57829107712823533dc2e562d1596027adb112ca (diff)
downloadexternal_webkit-0076dce702cf02817d9c43f03fcd045dac226e95.zip
external_webkit-0076dce702cf02817d9c43f03fcd045dac226e95.tar.gz
external_webkit-0076dce702cf02817d9c43f03fcd045dac226e95.tar.bz2
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
-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);