Commit Graph

76 Commits

Author SHA1 Message Date
tophf
78c56352cb Cache compiled regexps 2017-04-18 12:46:24 +03:00
tophf
2ef87e003d Remove webSqlStorage cruft as Stylus never used it 2017-04-18 12:46:23 +03:00
tophf
ac4a420e2b ESLint: customize the rules; fix the issues 2017-04-18 12:46:23 +03:00
tophf
8bcd7f60c5 Restore implicit handleUpdate in saveStyle 2017-04-18 12:46:22 +03:00
tophf
b1c19bdf3d Import styles: show report with Undo button 2017-04-18 12:46:22 +03:00
tophf
d53db2d45c Refactor & speed up styleSectionsEqual 2017-04-18 12:43:30 +03:00
tophf
80130797ce Refactor contextMenus and commands 2017-04-18 12:43:30 +03:00
tophf
95e2263c10 Autocleanup cached filters when over 10k items (a few MB)
Precaution for the [rare but possible] case of users running Stylus for a very long time without restarting the browser.
2017-04-18 12:43:30 +03:00
tophf
2f4da37fdb Refactor and speed up popup & manager
Popup:
* Enforce 200-800px range for the popup width option

Manage:
* faster search via cachedStyles.byId
* faster restoration of search results on history nav
* style name is clickable and opens the editor
* animated highlight of style element on update/add/save
* expandable extra applies-to targets
* remember scroll position on normal history navigation
* boz-sizing in #header, also in editor
* applies-to targets use structured markup
* get*Tab*, enableStyle and deleteStyle are promisified
2017-04-18 12:43:29 +03:00
tophf
9fd067c6e3 Switch editor to add style mode when id=nonexistentstyle 2017-04-18 12:43:29 +03:00
tophf
8c7f7b81f8 Don't recreate editors after save 2017-04-18 12:43:29 +03:00
tophf
f256f558dc IndexedDB getAll to read all styles in one op
Available since Chrome 48, FF44 (or FF27+ using dom.indexedDB.experimental flag)
2017-04-18 12:43:28 +03:00
tophf
f4e689721a Improve style caching, cache requests too, add code:false mode
Previously, when a cache was invalidated and every tab/iframe issued a getStyles request, we previous needlessly accessed IndexedDB for each of these requests. It happened because 1) the global cachedStyles was created only at the end of the async DB-reading, 2) and each style record is retrieved asynchronously so the single threaded JS engine interleaved all these operations. It could easily span a few seconds when many tabs are open and you have like 100 styles.

Now, in getStyles: all requests issued while cachedStyles is being populated are queued and invoked at the end.

Now, in filterStyles: all requests are cached using the request's options combined in a string as a key. It also helps on each navigation because we monitor page loading process at different stages: before, when committed, history traversal, requesting applicable styles by a content script. Icon badge update also may issue a copy of the just issued request by one of the navigation listeners.

Now, the caches are invalidated smartly: style add/update/delete/toggle only purges filtering cache, and modifies style cache in-place without re-reading the entire IndexedDB.

Now, code:false mode for manage page that only needs style meta. It reduces the transferred message size 10-100 times thus reducing the overhead caused by to internal JSON-fication in the extensions API.

Also fast&direct getStylesSafe for own pages; code cosmetics
2017-04-18 12:43:28 +03:00
tophf
764cd1b6de Use the synced show-badge preference on startup 2017-03-19 01:57:19 +03:00
tophf
34cd025487 Use Object.assign instead of shallowMerge 2017-03-16 13:32:12 +03:00
tophf
913df00f35 Don't notify normal tabs if style contents hasn't changed 2017-03-16 13:32:12 +03:00
tophf
e807d41eb7 Refactor manage::codeIsEqual -> storage::styleSectionsEqual 2017-03-16 13:32:12 +03:00
tophf
38006847f7 Don't apply styles until import is finished 2017-03-16 13:32:12 +03:00
Jeremy Schomery
4f83aa1239 possible fix for https://github.com/schomery/stylish-chrome/issues/43#issuecomment-286142529 2017-03-13 19:18:00 +03:30
Jeremy Schomery
974aaee823 popup width is now adjustable 2017-03-06 23:47:32 +03:30
Jeremy Schomery
218cd46670 updating 'turn all styles off' in the right click context menu when prefs are loaded 2017-02-23 11:07:25 +03:30
Jeremy Schomery
6738095f24 change automatic update interval to zero 2017-02-23 10:14:52 +03:30
narcolepticinsomniac
d2f364c609 Default disabled badge changed to hex for color-picker compatibility 2017-02-14 17:42:27 -05:00
Jeremy Schomery
d6ec816ea9 adding options UI (fixes #22, #24) 2017-02-14 19:05:53 +03:30
narcolepticinsomniac
289af9ad17 Update to work with backup 2017-01-30 14:14:18 -05:00
Jeremy Schomery
5623bca182 #1 follow up 2017-01-13 12:23:17 +03:30
Jeremy Schomery
c1ab447130 Removing sending info to Google Analytics 2017-01-11 15:34:44 +03:30
Jeremy Schomery
9582c65a84 import styles from Stylish extension 2017-01-11 15:25:38 +03:30
Jason
8b79d0f94b Use Object.freeze in a backwards compatible way 2016-04-04 19:02:20 -05:00
Jason
5fb21f2816 Add opt-out for analytics and make it ping once per day 2016-03-23 21:38:15 -05:00
Jason
380bfc6ed7 Bring back caching styles in memory 2016-03-19 18:27:28 -05:00
Jason
ca8324ab67 Duh 2016-03-19 17:15:33 -05:00
Jason
fa97a94494 Various performance improvements 2016-03-19 16:58:01 -05:00
Jason
7015eb1dc8 Handle saving styles with undefined applies tos #167 2016-03-16 21:44:17 -05:00
Jason
2973cac28f Switch to IndexedDB #167 2016-03-06 20:27:17 -06:00
Jason
a01bdf7b5a chrome.extension.onMessage -> chrome.runtime.onMessage 2016-01-30 18:06:04 -06:00
Jason
2c1987f91a Fake chrome.storage.sync for Firefox support #166 2016-01-30 17:59:45 -06:00
Jason
d957cd1b3b chrome.extension.sendMessage -> chrome.runtime.sendMessage 2016-01-30 17:08:10 -06:00
tophf
d971bbda8a Remove unneeded "Pref" word from prefs methods 2015-10-15 00:34:47 +03:00
tophf
1f961b0993 Deprecate localStorage, refactor prefs 2015-10-15 00:34:46 +03:00
tophf
965ea073c9 Sync localStorage prefs 2015-10-05 09:07:56 +03:00
tophf
21a138029d Fix database upgrade routine 2015-08-28 19:45:15 +03:00
tophf
0ead2ef259 Editor: paste from Mozilla format; export in styled popup 2015-08-24 08:16:22 +03:00
tophf
78fea74a0e Editor: update CSSLint report ASAP once an issue is fixed 2015-08-03 19:34:47 +03:00
tophf
ae8683873a fixes for Chrome 31 2015-08-01 15:11:32 +03:00
tophf
fa6b0f4477 prefs: handle object type 2015-07-04 06:39:39 +03:00
tophf
b5df8802a0 Editor: CSS-beautifier 2015-07-04 06:39:39 +03:00
tophf
ac88689533 Editor: set OS-dependent default keymap consistently 2015-06-10 12:58:01 +03:00
tophf
3429db0ee1 Editor: correctly determine when to save the window size 2015-06-04 15:22:05 +03:00
tophf
539be4ce43 Code review & cosmetics 2015-05-05 23:42:38 +03:00