Index: chrome/common/extensions/docs/examples/api/cookies/manager.html |
diff --git a/chrome/common/extensions/docs/examples/api/cookies/manager.html b/chrome/common/extensions/docs/examples/api/cookies/manager.html |
index 8c644c92edbbb734f059ae473f1cab87f7ed2825..80a00c42e819e36909891d5363e7253868f66da2 100644 |
--- a/chrome/common/extensions/docs/examples/api/cookies/manager.html |
+++ b/chrome/common/extensions/docs/examples/api/cookies/manager.html |
@@ -20,277 +20,28 @@ td.cookie_count { |
</style> |
-<script> |
+<script src="manager.js"></script> |
-if (!chrome.cookies) { |
- chrome.cookies = chrome.experimental.cookies; |
-} |
- |
-// A simple Timer class. |
-function Timer() { |
- this.start_ = new Date(); |
- |
- this.elapsed = function() { |
- return (new Date()) - this.start_; |
- } |
- |
- this.reset = function() { |
- this.start_ = new Date(); |
- } |
-} |
- |
-// Compares cookies for "key" (name, domain, etc.) equality, but not "value" |
-// equality. |
-function cookieMatch(c1, c2) { |
- return (c1.name == c2.name) && (c1.domain == c2.domain) && |
- (c1.hostOnly == c2.hostOnly) && (c1.path == c2.path) && |
- (c1.secure == c2.secure) && (c1.httpOnly == c2.httpOnly) && |
- (c1.session == c2.session) && (c1.storeId == c2.storeId); |
-} |
- |
-// Returns an array of sorted keys from an associative array. |
-function sortedKeys(array) { |
- var keys = []; |
- for (var i in array) { |
- keys.push(i); |
- } |
- keys.sort(); |
- return keys; |
-} |
- |
-// Shorthand for document.querySelector. |
-function select(selector) { |
- return document.querySelector(selector); |
-} |
- |
-// An object used for caching data about the browser's cookies, which we update |
-// as notifications come in. |
-function CookieCache() { |
- this.cookies_ = {}; |
- |
- this.reset = function() { |
- this.cookies_ = {}; |
- } |
- |
- this.add = function(cookie) { |
- var domain = cookie.domain; |
- if (!this.cookies_[domain]) { |
- this.cookies_[domain] = []; |
- } |
- this.cookies_[domain].push(cookie); |
- }; |
- |
- this.remove = function(cookie) { |
- var domain = cookie.domain; |
- if (this.cookies_[domain]) { |
- var i = 0; |
- while (i < this.cookies_[domain].length) { |
- if (cookieMatch(this.cookies_[domain][i], cookie)) { |
- this.cookies_[domain].splice(i, 1); |
- } else { |
- i++; |
- } |
- } |
- if (this.cookies_[domain].length == 0) { |
- delete this.cookies_[domain]; |
- } |
- } |
- }; |
- |
- // Returns a sorted list of cookie domains that match |filter|. If |filter| is |
- // null, returns all domains. |
- this.getDomains = function(filter) { |
- var result = []; |
- sortedKeys(this.cookies_).forEach(function(domain) { |
- if (!filter || domain.indexOf(filter) != -1) { |
- result.push(domain); |
- } |
- }); |
- return result; |
- } |
- |
- this.getCookies = function(domain) { |
- return this.cookies_[domain]; |
- }; |
-} |
- |
- |
-var cache = new CookieCache(); |
- |
- |
-function removeAllForFilter() { |
- var filter = select("#filter").value; |
- var timer = new Timer(); |
- cache.getDomains(filter).forEach(function(domain) { |
- removeCookiesForDomain(domain); |
- }); |
-} |
- |
-function removeAll() { |
- var all_cookies = []; |
- cache.getDomains().forEach(function(domain) { |
- cache.getCookies(domain).forEach(function(cookie) { |
- all_cookies.push(cookie); |
- }); |
- }); |
- cache.reset(); |
- var count = all_cookies.length; |
- var timer = new Timer(); |
- for (var i = 0; i < count; i++) { |
- removeCookie(all_cookies[i]); |
- } |
- timer.reset(); |
- chrome.cookies.getAll({}, function(cookies) { |
- for (var i in cookies) { |
- cache.add(cookies[i]); |
- removeCookie(cookies[i]); |
- } |
- }); |
-} |
- |
-function removeCookie(cookie) { |
- var url = "http" + (cookie.secure ? "s" : "") + "://" + cookie.domain + |
- cookie.path; |
- chrome.cookies.remove({"url": url, "name": cookie.name}); |
-} |
- |
-function removeCookiesForDomain(domain) { |
- var timer = new Timer(); |
- cache.getCookies(domain).forEach(function(cookie) { |
- removeCookie(cookie); |
- }); |
-} |
- |
-function resetTable() { |
- var table = select("#cookies"); |
- while (table.rows.length > 1) { |
- table.deleteRow(table.rows.length - 1); |
- } |
-} |
- |
-var reload_scheduled = false; |
- |
-function scheduleReloadCookieTable() { |
- if (!reload_scheduled) { |
- reload_scheduled = true; |
- setTimeout(reloadCookieTable, 250); |
- } |
-} |
- |
-function reloadCookieTable() { |
- reload_scheduled = false; |
- |
- var filter = select("#filter").value; |
- |
- var domains = cache.getDomains(filter); |
- |
- select("#filter_count").innerText = domains.length; |
- select("#total_count").innerText = cache.getDomains().length; |
- |
- select("#delete_all_button").innerHTML = ""; |
- if (domains.length) { |
- var button = document.createElement("button"); |
- button.onclick = removeAllForFilter; |
- button.innerText = "delete all " + domains.length; |
- select("#delete_all_button").appendChild(button); |
- } |
- |
- resetTable(); |
- var table = select("#cookies"); |
- |
- domains.forEach(function(domain) { |
- var cookies = cache.getCookies(domain); |
- var row = table.insertRow(-1); |
- row.insertCell(-1).innerText = domain; |
- var cell = row.insertCell(-1); |
- cell.innerText = cookies.length; |
- cell.setAttribute("class", "cookie_count"); |
- |
- var button = document.createElement("button"); |
- button.innerText = "delete"; |
- button.onclick = (function(dom){ |
- return function() { |
- removeCookiesForDomain(dom); |
- }; |
- }(domain)); |
- var cell = row.insertCell(-1); |
- cell.appendChild(button); |
- cell.setAttribute("class", "button"); |
- }); |
-} |
- |
-function focusFilter() { |
- select("#filter").focus(); |
-} |
- |
-function resetFilter() { |
- var filter = select("#filter"); |
- filter.focus(); |
- if (filter.value.length > 0) { |
- filter.value = ""; |
- reloadCookieTable(); |
- } |
-} |
- |
-var ESCAPE_KEY = 27; |
-window.onkeydown = function(event) { |
- if (event.keyCode == ESCAPE_KEY) { |
- resetFilter(); |
- } |
-} |
- |
-function listener(info) { |
- cache.remove(info.cookie); |
- if (!info.removed) { |
- cache.add(info.cookie); |
- } |
- scheduleReloadCookieTable(); |
-} |
- |
-function startListening() { |
- chrome.cookies.onChanged.addListener(listener); |
-} |
- |
-function stopListening() { |
- chrome.cookies.onChanged.removeListener(listener); |
-} |
- |
-function onload() { |
- focusFilter(); |
- var timer = new Timer(); |
- chrome.cookies.getAll({}, function(cookies) { |
- startListening(); |
- start = new Date(); |
- for (var i in cookies) { |
- cache.add(cookies[i]); |
- } |
- timer.reset(); |
- reloadCookieTable(); |
- }); |
-} |
- |
- |
-</script> |
</head> |
-<body onload="onload()" onclick="focusFilter()"> |
+<body> |
<h2>Cookies! ... Nom Nom Nom...</h2> |
-<button onclick="removeAll()">DELETE ALL!</button> |
+<button id="remove_button">DELETE ALL!</button> |
<div id="filter_div"> |
-Filter: <input id="filter" type="text" oninput="reloadCookieTable()"> |
-<button onclick="resetFilter()">x</button> |
+ Filter: <input id="filter" type="text"> |
+ <button>x</button> |
</div> |
-<br> |
+<br /> |
<div id="summary_div"> |
-Showing <span id="filter_count"></span> of <span id="total_count"></span> cookie domains. |
-<span id="delete_all_button"></span> |
+ Showing <span id="filter_count"></span> of <span id="total_count"></span> cookie domains. |
+ <span id="delete_all_button"></span> |
</div> |
-<br> |
+<br /> |
<table id="cookies"> |
-<tr class="header"> |
-<th>Name</th> |
-<th>#Cookies</th> |
-</tr> |
+ <tr class="header"> |
+ <th>Name</th> |
+ <th>#Cookies</th> |
+ </tr> |
</table> |
</body> |