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
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 @@
         // 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 @@
     jfieldID mGeolocationDatabasePath;
 #if ENABLE(DATABASE) || ENABLE(DOM_STORAGE)
     jfieldID mDatabasePath;
+    jfieldID mDatabasePathHasBeenSet;
 #endif
 };
 
@@ -345,9 +347,14 @@
 #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);