| <div id="pageData-name" class="pageData">BrowsingData API</div> |
| |
| <!-- BEGIN AUTHORED CONTENT --> |
| <p id="classSummary"> |
| Use the <code>chrome.browsingData</code> module to remove browsing data from a |
| user's local profile. |
| </p> |
| |
| <h2 id="manifest">Manifest</h2> |
| |
| <p> |
| You must declare the "browsingData" permission in the |
| <a href="manifest.html">extension manifest</a> to use this API. |
| </p> |
| |
| <pre>{ |
| "name": "My extension", |
| ... |
| <b>"permissions": [ |
| "browsingData", |
| ]</b>, |
| ... |
| }</pre> |
| |
| <h2 id="usage">Usage</h2> |
| |
| <p> |
| The simplest use-case for this API is a a time-based mechanism for clearing a |
| user's browsing data. Your code should provide a timestamp which indicates the |
| historical date after which the user's browsing data should be removed. This |
| timestamp is formatted as the number of milliseconds since the Unix epoch |
| (which can be retrieved from a JavaScript <code>Date</code> object via the |
| <code>getTime</code> method). |
| </p> |
| |
| <p> |
| For example, to clear all of a user's browsing data from the last week, you |
| might write code as follows: |
| </p> |
| |
| <pre>var callback = function () { |
| // Do something clever here once data has been removed. |
| }; |
| |
| var millisecondsPerWeek = 1000 * 60 * 60 * 24 * 7; |
| var oneWeekAgo = (new Date()).getTime() - millisecondsPerWeek; |
| chrome.browsingData.remove({ |
| "since": oneWeekAgo |
| }, { |
| "appcache": true, |
| "cache": true, |
| "cookies": true, |
| "downloads": true, |
| "fileSystems": true, |
| "formData": true, |
| "history": true, |
| "indexedDB": true, |
| "localStorage": true, |
| "pluginData": true, |
| "passwords": true, |
| "webSQL": true |
| }, callback);</pre> |
| |
| <p> |
| The <code>chrome.browsingData.remove</code> method allows you to remove |
| various types of browsing data with a single call, and will be much faster |
| than calling multiple more specific methods. If, however, you only want to |
| clear one specific type of browsing data (cookies, for example), the more |
| granular methods offer a readable alternative to a call filled with JSON. |
| </p> |
| |
| <pre>var callback = function () { |
| // Do something clever here once data has been removed. |
| }; |
| |
| var millisecondsPerWeek = 1000 * 60 * 60 * 24 * 7; |
| var oneWeekAgo = (new Date()).getTime() - millisecondsPerWeek; |
| chrome.browsingData.removeCookies({ |
| "since": oneWeekAgo |
| }, callback);</pre> |
| |
| <p class="caution"> |
| <strong>Important</strong>: Removing browsing data involves a good deal of |
| heavy lifting in the background, and can take <em>tens of seconds</em> to |
| complete, depending on a user's profile. You should use the callback mechanism |
| to keep your users up to date on the removal's status. |
| </p> |
| |
| <h2 id="origin_types">Origin Types</h2> |
| |
| <p> |
| Adding an <code>originType</code> property to the API's options object allows |
| you to specify which types of origins ought to be effected. Currently, origins |
| are divided into three categories: |
| </p> |
| <ul> |
| <li> |
| <code>unprotectedWeb</code> covers the general case of websites that users |
| visit without taking any special action. If you don't specify an |
| <code>originType</code>, the API defaults to removing data from unprotected |
| web origins. |
| </li> |
| <li> |
| <code>protectedWeb</code> covers those web origins that have been installed |
| as hosted applications. Installing <a href="https://chrome.google.com/webstore/detail/aknpkdffaafgjchaibgeefbgmgeghloj"> |
| Angry Birds</a>, for example, protects the origin |
| <code>http://chrome.angrybirds.com</code>, and removes it from the |
| <code>unprotectedWeb</code> category. Please do be careful when triggering |
| deletion of data for these origins: make sure your users know what they're |
| getting, as this will irrevocably remove their game data. No one wants to |
| knock tiny pig houses over more often than necessary. |
| </li> |
| <li> |
| <code>extension</code> covers origins under the |
| <code>chrome-extensions:</code> scheme. Removing extension data is, again, |
| something you should be very careful about. |
| </li> |
| </ul> |
| <p> |
| We could adjust the previous example to remove only data from protected |
| websites as follows: |
| </p> |
| <pre>var callback = function () { |
| // Do something clever here once data has been removed. |
| }; |
| |
| var millisecondsPerWeek = 1000 * 60 * 60 * 24 * 7; |
| var oneWeekAgo = (new Date()).getTime() - millisecondsPerWeek; |
| chrome.browsingData.remove({ |
| "since": oneWeekAgo, |
| <b>"originType": { |
| "protectedWeb": true |
| }</b> |
| }, { |
| "appcache": true, |
| "cache": true, |
| "cookies": true, |
| "downloads": true, |
| "fileSystems": true, |
| "formData": true, |
| "history": true, |
| "indexedDB": true, |
| "localStorage": true, |
| "pluginData": true, |
| "passwords": true, |
| "webSQL": true |
| }, callback);</pre> |
| |
| <p class="caution"> |
| <strong>Seriously</strong>: Be careful with <code>protectedWeb</code> and |
| <code>extension</code>. These are destructive operations that your users |
| will write angry email about if they're not well-informed about what to |
| expect when your extension removes data on their behalf. |
| </p> |
| |
| <h2 id="samples">Examples</h2> |
| <p> |
| Samples for the <code>browsingData</code> API are available |
| <a href="http://code.google.com/chrome/extensions/trunk/samples.html#chrome.browsingData">on the samples page</a>. |
| </p> |
| |
| <!-- END AUTHORED CONTENT --> |