blob: 3c7273d59449ad94b7bb50b1cb8afa79e7985510 [file] [log] [blame]
Nicolas Roard78a98e42009-05-11 13:34:17 +01001/*
2 * Copyright (C) 2009 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package com.android.browser;
18
19import android.content.Context;
20import android.preference.PreferenceActivity;
21import android.preference.PreferenceScreen;
22import android.util.Log;
23import android.webkit.WebStorage;
24
25/**
26 * Manage the settings for an origin.
27 * We use it to keep track of the HTML5 settings, i.e. database (webstorage).
28 */
29class OriginSettings {
30
31 private String TAG = "OriginSettings";
32 private String mOrigin = null;
33 private long mQuota = 0;
34 private long mUsage = 0;
35 private PreferenceScreen mInfoScreen;
36 private PreferenceScreen mRootScreen;
37 private PreferenceActivity mActivity;
38
39 private static String sMBUsed = null;
40 private static String sNoQuotaLeft = null;
41 private static String sMBLeft = null;
42
43 public OriginSettings(PreferenceActivity activity, String origin) {
44 mOrigin = origin;
45 mUsage = WebStorage.getInstance().getUsageForOrigin(mOrigin);
46 mQuota = WebStorage.getInstance().getQuotaForOrigin(mOrigin);
47 mActivity = activity;
48 if (sMBUsed == null) {
49 sMBUsed = mActivity.getString(
50 R.string.webstorage_origin_summary_mb_used);
51 sNoQuotaLeft = mActivity.getString(
52 R.string.webstorage_origin_summary_no_quota_left);
53 sMBLeft = mActivity.getString(
54 R.string.webstorage_origin_summary_mb_left);
55 }
56 }
57
58 public String getOrigin() {
59 return mOrigin;
60 }
61
62 public long getQuota() {
63 return mQuota;
64 }
65
66 public void setScreen(PreferenceScreen screen) {
67 mInfoScreen = screen;
68 }
69
70 public void setRootScreen(PreferenceScreen screen) {
71 mRootScreen = screen;
72 }
73
74 private String sizeValueToString(long value) {
75 float mb = (float) value / (1024.0F * 1024.0F);
76 int val = (int) (mb * 10);
77 float ret = (float) (val / 10.0F);
78 if (ret <= 0) {
79 return "0";
80 }
81 return String.valueOf(ret);
82 }
83
84 public void updateSummary() {
85 String summary = sizeValueToString(mUsage) + " " + sMBUsed;
86 if ((mQuota <= 0) || ((mQuota - mUsage) <= 0)) {
87 summary += ", " + sNoQuotaLeft;
88 } else {
89 summary += " (" + sizeValueToString(mQuota - mUsage);
90 summary += " " + sMBLeft + ")";
91 }
92 mInfoScreen.setSummary(summary);
93 mActivity.onContentChanged();
94 }
95
96 public void setup() {
97 mInfoScreen.setTitle(mOrigin);
98 mInfoScreen.setKey(mOrigin);
99 updateSummary();
100
101 BrowserQuotaPreference manageSite = new BrowserQuotaPreference(mActivity, this);
102 BrowserYesNoPreference clearAllData = new BrowserYesNoPreference(mActivity, this);
103
104 manageSite.setTitle(R.string.webstorage_manage_quota_title);
105 manageSite.setSummary(R.string.webstorage_manage_quota_summary);
106 manageSite.setKey(BrowserSettings.PREF_MANAGE_QUOTA);
107 manageSite.setEntries(R.array.webstorage_quota_entries);
108 manageSite.setEntryValues(R.array.webstorage_quota_entries_values);
109
110 clearAllData.setTitle(R.string.webstorage_clear_data_title);
111 clearAllData.setSummary(R.string.webstorage_clear_data_summary);
112 clearAllData.setKey(BrowserSettings.PREF_CLEAR_ALL_DATA);
113 clearAllData.setDialogTitle(R.string.webstorage_clear_data_dialog_title);
114 clearAllData.setDialogMessage(R.string.webstorage_clear_data_dialog_message);
115 clearAllData.setDialogIcon(android.R.drawable.ic_dialog_alert);
116
117 mInfoScreen.addPreference(manageSite);
118 mInfoScreen.addPreference(clearAllData);
119 }
120
121 public void setQuota(long quota) {
122 mQuota = quota;
123 WebStorage.getInstance().setQuotaForOrigin(mOrigin, mQuota);
124 mInfoScreen.getDialog().dismiss();
125 updateSummary();
126 }
127
128 public void delete() {
129 WebStorage.getInstance().deleteOrigin(mOrigin);
130 mInfoScreen.removeAll();
131 mRootScreen.removePreference(mInfoScreen);
132 mInfoScreen.getDialog().dismiss();
133 }
134}