| /* |
| * 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); |
| } |
| } |
| } |