<feed xmlns='http://www.w3.org/2005/Atom'>
<title>vimium/tests/unit_tests, branch 1.52</title>
<subtitle>The hacker's browser.</subtitle>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/fork/vimium/'/>
<entry>
<title>Merge branch 'hud-iframe-input-with-store-all-settings'</title>
<updated>2015-06-25T04:28:01+00:00</updated>
<author>
<name>Stephen Blott</name>
</author>
<published>2015-06-25T04:28:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/fork/vimium/commit/?id=cb42acfc59c10df4c0fd56f068c83c7509d5a237'/>
<id>cb42acfc59c10df4c0fd56f068c83c7509d5a237</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add test that every option has a default value.</title>
<updated>2015-06-20T06:00:24+00:00</updated>
<author>
<name>Stephen Blott</name>
</author>
<published>2015-06-20T05:15:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/fork/vimium/commit/?id=1e671e28fd1f348b17ee16351c1a0b03f9d15e4f'/>
<id>1e671e28fd1f348b17ee16351c1a0b03f9d15e4f</id>
<content type='text'>
This prevents issues like #1731 and is an (better) alternative to #1732.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This prevents issues like #1731 and is an (better) alternative to #1732.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix non-default front-end settings.</title>
<updated>2015-06-17T04:53:01+00:00</updated>
<author>
<name>Stephen Blott</name>
</author>
<published>2015-06-17T04:08:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/fork/vimium/commit/?id=8ff1aef751a533c17e683207dae1eb165b210f92'/>
<id>8ff1aef751a533c17e683207dae1eb165b210f92</id>
<content type='text'>
(@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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
(@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.
</pre>
</div>
</content>
</entry>
<entry>
<title>Refactor and eliminate Sync object.</title>
<updated>2015-06-01T10:12:03+00:00</updated>
<author>
<name>Stephen Blott</name>
</author>
<published>2015-06-01T09:53:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/fork/vimium/commit/?id=5f0400ebac5867df74225b987ea1238bdaeb40b2'/>
<id>5f0400ebac5867df74225b987ea1238bdaeb40b2</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Re-work unified settings.</title>
<updated>2015-06-01T06:56:02+00:00</updated>
<author>
<name>Stephen Blott</name>
</author>
<published>2015-06-01T06:04:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/fork/vimium/commit/?id=c62ffa33ad5230b89f44cb8f3268e6a4e48afd52'/>
<id>c62ffa33ad5230b89f44cb8f3268e6a4e48afd52</id>
<content type='text'>
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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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.
</pre>
</div>
</content>
</entry>
<entry>
<title>Make Settings explicitly use a cache</title>
<updated>2015-05-29T11:06:00+00:00</updated>
<author>
<name>mrmr1993</name>
</author>
<published>2015-04-27T19:44:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/fork/vimium/commit/?id=7ff17b8a6f63b0f46fac2be27c2a2f7d82c8d458'/>
<id>7ff17b8a6f63b0f46fac2be27c2a2f7d82c8d458</id>
<content type='text'>
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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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.
</pre>
</div>
</content>
</entry>
<entry>
<title>Move settings.coffee from background_scripts/ to lib/</title>
<updated>2015-05-29T11:06:00+00:00</updated>
<author>
<name>mrmr1993</name>
</author>
<published>2015-04-27T19:08:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/fork/vimium/commit/?id=0c12810c4c49ade77a1c8a8b3172857e19eb01f0'/>
<id>0c12810c4c49ade77a1c8a8b3172857e19eb01f0</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Only perform settings migration in the background page</title>
<updated>2015-05-29T11:06:00+00:00</updated>
<author>
<name>mrmr1993</name>
</author>
<published>2015-04-27T18:58:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/fork/vimium/commit/?id=bfe304932b13eb1bfe65662490d3d6b830eefec7'/>
<id>bfe304932b13eb1bfe65662490d3d6b830eefec7</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Move registration of postUpdateHooks to the corresponding source files</title>
<updated>2015-05-29T11:06:00+00:00</updated>
<author>
<name>mrmr1993</name>
</author>
<published>2015-04-27T18:29:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/fork/vimium/commit/?id=d7a0daf5fa2c0a3302a8fc6b9fa0744cfa17ab42'/>
<id>d7a0daf5fa2c0a3302a8fc6b9fa0744cfa17ab42</id>
<content type='text'>
This completely decouples settings.coffee from all other background
source files, so that it can (eventually) also be used in the frontend.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This completely decouples settings.coffee from all other background
source files, so that it can (eventually) also be used in the frontend.
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove all direct calls to Sync, stop exporting it</title>
<updated>2015-05-29T11:06:00+00:00</updated>
<author>
<name>mrmr1993</name>
</author>
<published>2015-04-27T16:07:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/fork/vimium/commit/?id=31873e39772c538cab418d03c244b4cac1addba0'/>
<id>31873e39772c538cab418d03c244b4cac1addba0</id>
<content type='text'>
This stops Sync from being referred to from anywhere except
settings.coffee and settings_test.coffee.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This stops Sync from being referred to from anywhere except
settings.coffee and settings_test.coffee.
</pre>
</div>
</content>
</entry>
</feed>
