diff options
| author | Stephen Blott | 2015-02-08 15:30:04 +0000 |
|---|---|---|
| committer | Stephen Blott | 2015-02-08 15:30:04 +0000 |
| commit | 11609b918485ee4c3a659bee9dc0c420fb04ddcc (patch) | |
| tree | 00c646a5b60908c2cc44010c455b15e9eda3ecb1 /content_scripts | |
| parent | 7b451aaca8d8c84aab77ac262753c6239b466791 (diff) | |
| download | vimium-11609b918485ee4c3a659bee9dc0c420fb04ddcc.tar.bz2 | |
Proper find-mode history for incognito mode.
Approach:
- We never save the find mode history from an incognito tab in the
settings, instead they are saved in the tabMapInfo for each
currently-active incognito tab.
- When a new incognito tab (or page, after navigation) starts, we
scan the tabMapInfo looking for the find-mode history of any active
tab.
In this way, the history is shared between incognito tabs, but discarded
once the last incognito tab closes.
Diffstat (limited to 'content_scripts')
| -rw-r--r-- | content_scripts/vimium_frontend.coffee | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index b9737ffd..3d40e307 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -123,6 +123,12 @@ window.initializeModes = -> new InsertMode permanent: true # +# Called if we learn that this frame is in incognito mode. +# +goIncognito = -> + FindModeHistory.goIncognito() + +# # Complete initialization work that sould be done prior to DOMReady. # initializePreDomReady = -> @@ -197,6 +203,7 @@ window.initializeWhenEnabled = -> setState = (request) -> isEnabledForUrl = request.enabled passKeys = request.passKeys + goIncognito() if request.incognito and not isIncognitoMode isIncognitoMode = request.incognito initializeWhenEnabled() if isEnabledForUrl handlerStack.bubbleEvent "registerStateChange", @@ -556,7 +563,7 @@ FindModeHistory = # This update path is only used to initialize @rawQueryList. Thereafter, we use updateFindModeHistory to # track the history. settings.postUpdateHooks.findModeRawQueryList = (args...) -> FindModeHistory.postUpdateHook args... - (rawQueryList) -> @rawQueryList ||= rawQueryList + (rawQueryList) -> @rawQueryList = rawQueryList unless @rawQueryList? # This is called when we receive an updateSettings message from the background page. It is called # synchronously with the update from another tab. Therefore, we know that only the most-recent query can @@ -577,6 +584,11 @@ FindModeHistory = @updateRawQueryList query settings.set "findModeRawQueryList", @rawQueryList + goIncognito: -> + # In incognito mode, we try to fetch the query history from another incognito tab. See #1465. + chrome.runtime.sendMessage { handler: "getIncognitoRawQueryList" }, (response) => + @rawQueryList = response if response + # should be called whenever rawQuery is modified. updateFindModeQuery = -> # the query can be treated differently (e.g. as a plain string versus regex depending on the presence of |
