blob: e80888af6bcb5f18ba814c58ba67cff01db3d0d3 [file] [log] [blame]
/*
* Copyright (C) 2009 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.browser;
import android.content.Context;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceScreen;
import android.util.Log;
import android.webkit.WebStorage;
/**
* Manage the settings for an origin.
* We use it to keep track of the HTML5 settings, i.e. database (webstorage).
*/
class OriginSettings {
private String TAG = "OriginSettings";
private String mOrigin = null;
private long mQuota = 0;
private long mUsage = 0;
private PreferenceScreen mInfoScreen;
private PreferenceScreen mRootScreen;
private PreferenceActivity mActivity;
private static String sMBUsed = null;
private static String sNoQuotaLeft = null;
private static String sMBLeft = null;
public OriginSettings(PreferenceActivity activity, String origin) {
mOrigin = origin;
mUsage = WebStorage.getInstance().getUsageForOrigin(mOrigin);
mQuota = WebStorage.getInstance().getQuotaForOrigin(mOrigin);
mActivity = activity;
if (sMBUsed == null) {
sMBUsed = mActivity.getString(
R.string.webstorage_origin_summary_mb_used);
sNoQuotaLeft = mActivity.getString(
R.string.webstorage_origin_summary_no_quota_left);
sMBLeft = mActivity.getString(
R.string.webstorage_origin_summary_mb_left);
}
}
public String getOrigin() {
return mOrigin;
}
public long getQuota() {
return mQuota;
}
public long getUsage() {
return mUsage;
}
public void setScreen(PreferenceScreen screen) {
mInfoScreen = screen;
}
public void setRootScreen(PreferenceScreen screen) {
mRootScreen = screen;
}
private String sizeValueToString(long value) {
float mb = (float) value / (1024.0F * 1024.0F);
int val = (int) (mb * 10);
float ret = (float) (val / 10.0F);
if (ret <= 0) {
return "0";
}
return String.valueOf(ret);
}
public void updateSummary() {
String summary = sizeValueToString(mUsage) + " " + sMBUsed;
if ((mQuota <= 0) || ((mQuota - mUsage) <= 0)) {
summary += ", " + sNoQuotaLeft;
} else {
summary += " (" + sizeValueToString(mQuota - mUsage);
summary += " " + sMBLeft + ")";
}
mInfoScreen.setSummary(summary);
mActivity.onContentChanged();
}
public void setup() {
mInfoScreen.setTitle(mOrigin);
mInfoScreen.setKey(mOrigin);
updateSummary();
BrowserQuotaPreference manageSite = new BrowserQuotaPreference(mActivity, this);
BrowserYesNoPreference clearAllData = new BrowserYesNoPreference(mActivity, this);
manageSite.setTitle(R.string.webstorage_manage_quota_title);
manageSite.setSummary(R.string.webstorage_manage_quota_summary);
manageSite.setKey(BrowserSettings.PREF_MANAGE_QUOTA);
manageSite.setEntries(R.array.webstorage_quota_entries);
manageSite.setEntryValues(R.array.webstorage_quota_entries_values);
clearAllData.setTitle(R.string.webstorage_clear_data_title);
clearAllData.setSummary(R.string.webstorage_clear_data_summary);
clearAllData.setKey(BrowserSettings.PREF_CLEAR_ALL_DATA);
clearAllData.setDialogTitle(R.string.webstorage_clear_data_dialog_title);
clearAllData.setDialogMessage(R.string.webstorage_clear_data_dialog_message);
clearAllData.setDialogIcon(android.R.drawable.ic_dialog_alert);
mInfoScreen.addPreference(manageSite);
mInfoScreen.addPreference(clearAllData);
}
public void setQuota(long quota) {
mQuota = quota;
WebStorage.getInstance().setQuotaForOrigin(mOrigin, mQuota);
mInfoScreen.getDialog().dismiss();
updateSummary();
}
public void delete() {
WebStorage.getInstance().deleteOrigin(mOrigin);
mInfoScreen.removeAll();
mRootScreen.removePreference(mInfoScreen);
mInfoScreen.getDialog().dismiss();
if (mRootScreen.getPreferenceCount() == 0) {
mRootScreen.getDialog().dismiss();
mRootScreen.setEnabled(false);
Preference clearDatabases = mActivity.findPreference(
BrowserSettings.PREF_WEBSTORAGE_CLEAR_ALL);
clearDatabases.setEnabled(false);
}
}
}