aboutsummaryrefslogtreecommitdiffstats
path: root/tests/unit_tests
AgeCommit message (Collapse)Author
2018-09-14Move and fix test for featureRyan Perry-Nguyen
2018-09-14dont queries for %S replacementRyan Perry-Nguyen
2017-11-09Stub DomUtils.consumeKeyup to fix handler stack testsmrmr1993
2017-11-01Rename Rect.rectOverlaps to Rect.intersectsStrict, clarify the commentmrmr1993
2017-11-01Rename Rect.contains to Rect.intersects, add an explanitory commentmrmr1993
2017-10-29Guard against undefined DomUtils, instead of stubbing in testsmrmr1993
2017-10-28Remove invokeCommandString, call NormalModeCommands directlymrmr1993
2017-10-27Include LinkHints, Vomnibar and Marks commands in normal mode filemrmr1993
2017-10-27Split focusInput, move the main part into the normal mode filemrmr1993
2017-10-27Add tests to check that foreground commands are implementedmrmr1993
2017-09-29Add stub to fix unit testsmrmr1993
2017-09-18Recognise (FF) internal URLs.Stephen Blott
Recognise URLs like: - moz-extension://c66906b4-3785-4a60-97bc-094a6366017e/pages/options.html Fixes #2657.
2017-05-01FF - Fix updates from the exclusions popupmrmr1993
This stops |Exclusions| from holding a reference to the |value| parameter passed to |Settings.set|. In Firefox, this object is garbage collected when the owning context (the exclusions popup) is closed. The fix for all such cases in the future is to switch to using |Settings.get|, which implicitly does |JSON.parse JSON.stringify value| and thus returns an object in the same context as |Settings|. We could fix this generally by doing this for the |Settings.performPostUpdateHook| call in |Settings.set| instead. However, I'm not convinced that it warrants the overhead of a |JSON.parse| for every |Settings.set| call.
2017-02-08Remove stub for deprecated onActiveChangedmrmr1993
2017-02-08Remove stub for deprecated tabs.onSelectionChangedmrmr1993
2016-10-23Better line parsing (add tests).Stephen Blott
2016-10-17Better line parsing.Stephen Blott
1. Explicitly remove comments. 2. A trailing backslash means the current line continues on the next line. E.g. a \ b \ c is a single line `a b c`. This helps alleviate the fact that configuration lines can be very long, whereas the *Custom key mappings* input is quite narrow. TODO: We should use the same line parser in the custom-search-engines input.
2016-10-08Refactor (and fix) key-parsing regexp.Stephen Blott
Fixes #2299. Also, separate this regexp out into its constituent parts, because it is becoming too different to read.
2016-10-02More key-sequance parser tests.Stephen Blott
2016-10-02Merge pull request #2284 from smblott-github/silent-releasesStephen Blott
Enable silent/patch releases.
2016-10-02Add tests for compareVersions().Stephen Blott
2016-10-02Better regexp (to match legacy behaviour for '<c->>'.Stephen Blott
2016-10-02Rename normalizeKey to parseKeySequence.Stephen Blott
The new name better describes which the function does.
2016-10-02Rework key-sequence parsing.Stephen Blott
This reworks the parsing of key sequences like `<c-a-Z>x`: Advantages over the status quo: - Parses key sequences in one only place (previously two), - Removes two hideous regular expression. - Admits multi-modifier bindings (like `<c-a-Z>`). - Adds more (and better) tests. - (And it should be easier to maintain.) Replaces #2210 (this also simplifies key parsing substantially).
2016-09-25Space rotates hints (to make hidden hints visible).Stephen Blott
It is common for link-hint markers to be close togother, and overlapping. Here, `<Space>` rotates hint markers such that hidden markers become visible. For filtered hints we additionally require a modifier (because `<space>` on its own is already a token separator). The calculation of overlapping hints is quite expensive: O(n^2) in the best case and O(n^3) in the worst cast. The worst case is extraordinarily unlikely to arise in practice.
2016-04-18Cache content_scripts/vimium.css in chrome.storage.local.Stephen Blott
Previously, we had two different approaches. This seems like a simpler approach. We simply cache the Vimium CSS in chrome.storage.local (in the background page) and fetch it from there (in UI components). There is also a minor change in the we no longer cache the CSS in memory. This seems to be the right thing to do. Caching the CSS in memory consumes a small amount of memory. However, it can only speed up the fastest loads. It cannot speed up the first load -- which is likely the one that matters most. So caching the CSS in memory seems to make little sense.
2016-03-30Rename handlerStack constants.Stephen Blott
Problems: - The meanings of some of the Mode/handlerStack constant names is far from obvious. - The same thing is named different things in different places. This changes various constant names such that: - the names used in the handler stack and in the modes are the same. - ditto vis-a-vis DomUtils. Also, break out the core of the handler stacks' `bubbleEvent` method into a switch statements. This makes it more obvious that the cases are mutually exclusive.
2016-03-28Use image data for icons.Stephen Blott
This uses image data (instead of a path) for the page icon. It also only builds 19x19 and 38x38 icons, as per the chrome.browserAction.setIcon() documentation. This appears to fix a memory leak related to a recent Chrome regression (versions 49+). Fixes #2055.
2016-03-27Add test for extractQuery().Stephen Blott
2016-03-27Add test for escapeRegexSpecialCharacters().Stephen Blott
2016-03-27Add test for invokeCommandString().Stephen Blott
2016-03-26Add test for badly-formed exclusion regexp.Stephen Blott
2016-03-26Multiple minor tweaks.Stephen Blott
Some of this code is showing its age, so these are just a number of minor tweaks (to keep things clear, consistent and concise). Also, add a couple of tests (while we're at it).
2016-03-18Add Utils.makeIdempotent.Stephen Blott
The intention is to use this to clean up some of the initialisation sequences in the front end.
2016-03-17Tweaks for #2053.Stephen Blott
2016-03-17Simplify domReady handling.Stephen Blott
2016-03-17Move isEnabledForUrl to Frame.port.Stephen Blott
2016-03-05Key bindings; fix tests...Stephen Blott
... and fix two bugs: - not suppressing keyup event after keyChar matched in keydown. - we cannot check the passKeys keyChar in keyup because the key state has changed; so we track what the next keyup response should be.
2016-03-04Do not use standalone @.Stephen Blott
The styles guide says not to use standalone `@`. So this changes the occurrences I could find (with sed) to `this`. Occurrences within files with major outstanding PRs are omitted.
2016-02-21fix a crash of unit testsgdh1995
2016-02-16Use `for own ... of` instead of `for ... of`mrmr1993
2016-02-09BgUtils; move tabRecency to bg_tiles.coffee.Stephen Blott
Certain background-page utilities are actually shared, and are therefore best placed in place that reflects that. Here, tabRecency is moved to the new gb_utils.coffee in preparation for implementing a go-to-previous-tab command. In particular, it is no longer appropriate that tabRecency be embedded within the completion code. logMessage() from main.coffee is also a candidate for moving to bg_utils.coffee.
2016-01-31Add a basic log page; tweaks.Stephen Blott
This tweaks @mrmr1993's logging ideas discussed in #1629: - Do not generate log entries from the logging page itself. - Use the logger for *all* logging (including from `commands.coffee`, and from `bgLog`). @mrmr1993's original idea is 91fb337c9d92f6291ef42c55c4d29ca35b710203.
2015-09-10Don't decode javascript URIs on 46.0.2467.2 and latermrmr1993
The fix for Chromium issue 483000 landed in this version, so it is no longer necessary for #1611
2015-06-25Merge branch 'hud-iframe-input-with-store-all-settings'Stephen Blott
2015-06-20Add test that every option has a default value.Stephen Blott
This prevents issues like #1731 and is an (better) alternative to #1732.
2015-06-17Fix non-default front-end settings.Stephen Blott
(@mrmr1993: This is yet another approach to the Settings problem.) With the new Settings implemetation, settings which have a non-default value and which are not in synced storage (that is, they have not been changed since synced storage was introduced) are not currently accessible to content scripts. This commit makes such settings accessible via chrome.storage.local. Important: - There's a change to the established settings data model here. Previously, settings with default values were not stored; here, they are. This eliminates a considerable amount logic from Settings, but means that migrations will be required if default values are changed in future. (Other than type changes, have we ever changed a default value?) - There's also a change (bug fix?) to the behaviour when an affected setting is reset to its default value. Previously, the change would *not* have been synced (whereas all other changes are). Here, such changes *are* synced. The previous behaviour was inconsistent with the syncing behaviour of all other options changes. Note: - This isn't particularly well tested. It's being committed mainly just for consideration of the approach, initially.
2015-06-01Refactor and eliminate Sync object.Stephen Blott
2015-06-01Re-work unified settings.Stephen Blott
This is a minor re-working of #1705 from @mrmr1993. The main changes are: - Simplify initialisation logic. - Always initialise Settings immediately and automatically (ie. don't initialise Settings separately and manually in the background, content scripts, options and tests). - Get rid of addEventListener (it's only being used for on "load"). - Add Settings.use() in its place.
2015-05-29Make Settings explicitly use a cachemrmr1993
The Settings object used by the background page now uses 1 of 3 caches, depending on the context it is available in: * localStorage - in the background page * a copy of localStorage - in non-background extension pages (options.html, popup.html, etc.) * an empty object - in all other pages (where localStorage doesn't point to the extension's localStorage object). For any extension page which is *not* the background page, a copy of localStorage is used instead of true localStorage: * Once localStorage is updated by one background page, the others can only see the updated copy. - Pages with an updated cache can't tell which changes are new, and so don't know which postUpdateHooks to run. * By copying localStorage's contents into a new object, extension pages can still access settings synchronously. - This is especially important to options.html and popup.html; they will not work without it.