Pass the estimated size of new HTML 5 databases to the ChromeClient so it can use that amount to figure an initial default quota.

Change-Id:Ic9372b0c86472b42ba5d0b964aaff1e2bbfe3efa
This commit is contained in:
Ben Murdoch
2009-08-25 19:32:54 +01:00
parent 97f870956a
commit d497d87650
5 changed files with 25 additions and 11 deletions

View File

@@ -162447,6 +162447,8 @@
</parameter>
<parameter name="currentQuota" type="long">
</parameter>
<parameter name="estimatedSize" type="long">
</parameter>
<parameter name="totalUsedQuota" type="long">
</parameter>
<parameter name="quotaUpdater" type="android.webkit.WebStorage.QuotaUpdater">
@@ -164109,6 +164111,8 @@
</parameter>
<parameter name="currentQuota" type="long">
</parameter>
<parameter name="estimatedSize" type="long">
</parameter>
<parameter name="totalUsedQuota" type="long">
</parameter>
<parameter name="quotaUpdater" type="android.webkit.WebStorage.QuotaUpdater">

View File

@@ -434,12 +434,14 @@ class CallbackProxy extends Handler {
((Long) map.get("currentQuota")).longValue();
long totalUsedQuota =
((Long) map.get("totalUsedQuota")).longValue();
long estimatedSize =
((Long) map.get("estimatedSize")).longValue();
WebStorage.QuotaUpdater quotaUpdater =
(WebStorage.QuotaUpdater) map.get("quotaUpdater");
mWebChromeClient.onExceededDatabaseQuota(url,
databaseIdentifier, currentQuota, totalUsedQuota,
quotaUpdater);
databaseIdentifier, currentQuota, estimatedSize,
totalUsedQuota, quotaUpdater);
}
break;
@@ -1195,6 +1197,7 @@ class CallbackProxy extends Handler {
* @param databaseIdentifier The identifier of the database that the
* transaction that caused the overflow was running on.
* @param currentQuota The current quota the origin is allowed.
* @param estimatedSize The estimated size of the database.
* @param totalUsedQuota is the sum of all origins' quota.
* @param quotaUpdater An instance of a class encapsulating a callback
* to WebViewCore to run when the decision to allow or deny more
@@ -1202,7 +1205,8 @@ class CallbackProxy extends Handler {
*/
public void onExceededDatabaseQuota(
String url, String databaseIdentifier, long currentQuota,
long totalUsedQuota, WebStorage.QuotaUpdater quotaUpdater) {
long estimatedSize, long totalUsedQuota,
WebStorage.QuotaUpdater quotaUpdater) {
if (mWebChromeClient == null) {
quotaUpdater.updateQuota(currentQuota);
return;
@@ -1213,6 +1217,7 @@ class CallbackProxy extends Handler {
map.put("databaseIdentifier", databaseIdentifier);
map.put("url", url);
map.put("currentQuota", currentQuota);
map.put("estimatedSize", estimatedSize);
map.put("totalUsedQuota", totalUsedQuota);
map.put("quotaUpdater", quotaUpdater);
exceededQuota.obj = map;

View File

@@ -215,13 +215,14 @@ public class WebChromeClient {
* @param databaseIdentifier The identifier of the database that caused the
* quota overflow.
* @param currentQuota The current quota for the origin.
* @param estimatedSize The estimated size of the database.
* @param totalUsedQuota is the sum of all origins' quota.
* @param quotaUpdater A callback to inform the WebCore thread that a new
* quota is available. This callback must always be executed at some
* point to ensure that the sleeping WebCore thread is woken up.
*/
public void onExceededDatabaseQuota(String url, String databaseIdentifier,
long currentQuota, long totalUsedQuota,
long currentQuota, long estimatedSize, long totalUsedQuota,
WebStorage.QuotaUpdater quotaUpdater) {
// This default implementation passes the current quota back to WebCore.
// WebCore will interpret this that new quota was declined.

View File

@@ -258,20 +258,23 @@ final class WebViewCore {
* @param url The URL that caused the overflow.
* @param databaseIdentifier The identifier of the database.
* @param currentQuota The current quota for the origin.
* @param estimatedSize The estimated size of the database.
*/
protected void exceededDatabaseQuota(String url,
String databaseIdentifier,
long currentQuota) {
long currentQuota,
long estimatedSize) {
// Inform the callback proxy of the quota overflow. Send an object
// that encapsulates a call to the nativeSetDatabaseQuota method to
// awaken the sleeping webcore thread when a decision from the
// client to allow or deny quota is available.
mCallbackProxy.onExceededDatabaseQuota(url, databaseIdentifier,
currentQuota, getUsedQuota(), new WebStorage.QuotaUpdater() {
public void updateQuota(long quota) {
nativeSetNewStorageLimit(quota);
}
});
currentQuota, estimatedSize, getUsedQuota(),
new WebStorage.QuotaUpdater() {
public void updateQuota(long quota) {
nativeSetNewStorageLimit(quota);
}
});
}
/**

View File

@@ -552,7 +552,8 @@ public class TestShellActivity extends Activity implements LayoutTestController
@Override
public void onExceededDatabaseQuota(String url_str,
String databaseIdentifier, long currentQuota, long totalUsedQuota,
String databaseIdentifier, long currentQuota,
long estimatedSize, long totalUsedQuota,
WebStorage.QuotaUpdater callback) {
if (mDumpDatabaseCallbacks) {
if (mDatabaseCallbackStrings == null) {