aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Blott2015-05-08 11:31:05 +0100
committerStephen Blott2015-05-08 11:31:05 +0100
commit44378220093ee5bd873b553f5be556921c778663 (patch)
treee1a25809f3edb9975f0c47aad3a30f777e045604
parent3e890adbbf7b6a9671b42536b6ee6221389b9443 (diff)
downloadvimium-44378220093ee5bd873b553f5be556921c778663.tar.bz2
Search completion; clear (not replace) the cache.
-rw-r--r--lib/utils.coffee11
-rw-r--r--pages/vomnibar.coffee5
2 files changed, 14 insertions, 2 deletions
diff --git a/lib/utils.coffee b/lib/utils.coffee
index 354d82f6..1c24a40f 100644
--- a/lib/utils.coffee
+++ b/lib/utils.coffee
@@ -236,6 +236,17 @@ class SimpleCache
else
null
+ clear: ->
+ @rotate()
+ @rotate()
+
+ # Because of the timer, we can't just let these caches go out of scope and have the garbage collector
+ # harvest them. Whenever they may fall out of use, we need to remove the timer. @rotate() can be used to
+ # restart the cache.
+ suspend: ->
+ clearTimeout @timer if @timer?
+ @timer = null
+
# Set value, and return that value. If value is null, then delete key.
set: (key, value = null) ->
if value?
diff --git a/pages/vomnibar.coffee b/pages/vomnibar.coffee
index de1e6452..76e276a1 100644
--- a/pages/vomnibar.coffee
+++ b/pages/vomnibar.coffee
@@ -210,6 +210,7 @@ class BackgroundCompleter
constructor: (@name) ->
@port = chrome.runtime.connect name: "completions"
@messageId = null
+ @cache ?= new SimpleCache 1000 * 60 * 5
@reset()
@port.onMessage.addListener (msg) =>
@@ -259,8 +260,8 @@ class BackgroundCompleter
@port.postMessage name: @name, handler: "refresh"
reset: ->
- # We only cache results for the duration of a single vomnibar activation.
- @cache = new SimpleCache 1000 * 60 * 5
+ # We only cache results for the duration of a single vomnibar activation, so clear the cache now.
+ @cache.clear()
@mostRecentQuery = null
cancel: ->