]> git.wh0rd.org - chrome-ext/clearhistory-advance-fork.git/blob - javascript/clearhistory.js
fix timer init
[chrome-ext/clearhistory-advance-fork.git] / javascript / clearhistory.js
1 // Copyright 2011 Google Inc. All Rights Reserved.
2
3 /**
4 * @fileoverview The main script for the Clear History extension for Chrome.
5 * @author arunjit@google.com (Arunjit Singh)
6 */
7
8 /**
9 * Removes a single cookie
10 * @param {Object.<Cookie>} cookie The cookie to delete.
11 * @param {Function} callback The function to invoke when the cookie is deleted.
12 */
13 function removeCookie(cookie, callback) {
14 var url = 'http' + (cookie.secure ? 's' : '') + '://' + cookie.domain +
15 cookie.path;
16 chrome.cookies.remove({url: url, name: cookie.name}, callback);
17 }
18
19 /**
20 * Removes all cookies
21 * @param {Function=} callback The function to invoke when all cookies are
22 * deleted (optional).
23 */
24 function clearCookies(callback) {
25 callback = callback || function() {};
26 chrome.cookies.getAll({}, function(cookies) {
27 var len = cookies.length;
28 // Synchronize the cookie deletion and execute the callback only when all
29 // cookie deletion functions have called back (finished).
30 (function doCookieCleanup(i) {
31 if (i === len) {
32 callback();
33 } else {
34 removeCookie(cookies[i], function() {
35 doCookieCleanup(i + 1);
36 });
37 }
38 })(0);
39 });
40 }
41
42 /**
43 * Callback for when history deletion is successful
44 */
45 function didClearHistory() {
46 var time = ~~(localStorage['time']) || CONSTANTS.DEFAULT_TIME;
47 time = getUnitsForTime(time);
48 var timeString = (time.time === -1) ?
49 chrome.i18n.getMessage('notificationTimeAll') :
50 chrome.i18n.getMessage('notificationTime',
51 [time.time, time.units]);
52 var message = chrome.i18n.getMessage('notificationBody', timeString);
53 var notification = webkitNotifications.createNotification(
54 chrome.extension.getURL('/images/icon48.png'),
55 chrome.i18n.getMessage('notificationTitle'),
56 message);
57 notification.show();
58 setTimeout(function() {
59 notification.cancel();
60 }, 5000);
61 }
62
63 /**
64 * Clears the history for the amount of time stored in {@code localStorage}
65 */
66 function clearHistory() {
67 //Get the values from localStorage
68 // time is in hours
69 var time = ~~(localStorage['time']) || CONSTANTS.DEFAULT_TIME;
70 if (time === -1) {
71 // Delete everything
72 chrome.history.deleteAll(didClearHistory);
73 } else {
74 // Create the range
75 var timeStart = localStorage['timeStart'] === CONSTANTS.YES;
76 var now = (new Date).getTime();
77 var startTime = (now - time * 60 * 60 * 1000); // time from hrs to ms
78 if (timeStart) {
79 var endTime = now;
80 } else {
81 var endTime = startTime;
82 startTime = 0;
83 }
84 var range = {
85 startTime: startTime,
86 endTime: endTime
87 };
88 // Delete history in the range
89 chrome.history.deleteRange(range, didClearHistory);
90 }
91 }
92
93 function runCleaner() {
94 var clearCookies = localStorage['cookies'] || CONSTANTS.NO;
95
96 if (clearCookies === CONSTANTS.YES) {
97 clearCookies(clearHistory);
98 } else {
99 clearHistory();
100 }
101 }
102
103 /**
104 * Executes when the user clicks the browser action. Uses stored values from
105 * {@code localStorage}
106 */
107 chrome.browserAction.onClicked.addListener(function(tab) {
108 // Get the value from localStorage
109 var showPrompt = localStorage['prompt'] || CONSTANTS.YES;
110
111 // The confirmation message to ask
112 var message = chrome.i18n.getMessage('confirmPrompt');
113
114 // Clear cookies, and then clear the history
115 if (showPrompt === CONSTANTS.YES) {
116 if (!confirm(message))
117 return;
118 }
119 runCleaner();
120 });
121
122 chrome.alarms.get(CONSTANTS.CLEANER_ALARM, function(a) {
123 if (a)
124 return;
125
126 chrome.alarms.create(CONSTANTS.CLEANER_ALARM, {
127 // First fire 10 minutes from now.
128 'when': Date.now() + (10 * 60 * 1000),
129 'periodInMinutes': 24 * 60
130 });
131 });
132
133 chrome.alarms.onAlarm.addListener(function(alarm) {
134 var autoCleaner = localStorage['autoclear'] || CONSTANTS.NO;
135 if (autoCleaner === CONSTANTS.YES)
136 runCleaner();
137 console.log('running');
138 });