diff options
| author | Ben Murdoch <benm@google.com> | 2010-02-25 18:36:43 +0000 |
|---|---|---|
| committer | Ben Murdoch <benm@google.com> | 2010-02-25 18:47:47 +0000 |
| commit | 0076dce702cf02817d9c43f03fcd045dac226e95 (patch) | |
| tree | 23e07bf15db54648340d9c64021f285b573dc2aa | |
| parent | 57829107712823533dc2e562d1596027adb112ca (diff) | |
| download | external_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.cpp | 13 |
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); |
