Index: chrome/common/extensions/docs/extensions/event_pages.html |
diff --git a/chrome/common/extensions/docs/extensions/event_pages.html b/chrome/common/extensions/docs/extensions/event_pages.html |
index 3a67b66ad052d4eac8c7f9c4dd6dd579c8ad1bc4..724a34101ccbde5100f4d5fc65f816ff4c31129c 100644 |
--- a/chrome/common/extensions/docs/extensions/event_pages.html |
+++ b/chrome/common/extensions/docs/extensions/event_pages.html |
@@ -200,6 +200,10 @@ |
<a href="#lifetime">Lifetime</a> |
<ol> |
</ol> |
+ </li><li> |
+ <a href="#transition">Convert background page to event page</a> |
+ <ol> |
+ </ol> |
</li> |
</ol> |
</div> |
@@ -264,6 +268,44 @@ event is dispatched. The event page has a few more seconds to handle this |
event before it is forcibly unloaded. Note that once the event is dispatched, |
new activity will not keep the event page open. |
</p> |
+<h2 id="transition">Convert background page to event page</h2> |
+<p> |
+Follow this checklist to convert your extension's |
+(persistent) background page to an event page. |
+</p><ol> |
+ <li>Add <code>"persistent": false</code> to your manifest as shown above. |
+ </li><li>Register to receive any events your extension is interested in |
+ each time the event page is loaded. The event page will be loaded once |
+ for each new version of your extension. After that it will only be |
+ loaded to deliver events. |
+ </li><li>If you need to do some initialization when your extension is |
+ installed or upgraded, listen to the |
+ <code><a href="runtime.html#event-onInstalled">chrome.runtime.onInstalled</a></code> |
+ event. |
+ </li><li>Listen to the |
+ <code><a href="runtime.html#event-onSuspend">chrome.runtime.onSuspend</a></code> |
+ event if you need to do last second cleanup before your event page |
+ is shut down. However, we recommend persisting periodically instead. |
+ That way if your extension crashes without receiving |
+ <code>onSuspend</code>, no data will typically be lost. |
+ </li><li>If you need to keep runtime state in memory throughout a browser |
+ session, use the <a href="storage.html">storage API</a> or |
+ IndexedDB. Since the event page does not stay loaded for long, you |
+ can no longer rely on global variables for runtime state. |
+ </li><li>If your extension uses <code>window.setTimeout()</code> or |
+ <code>window.setInterval()</code>, switch to using the |
+ <a href="alarms.html">alarms API</a> instead. DOM-based timers won't |
+ be honored if the event page shuts down. |
+ </li><li>If your extension uses, |
+ <code><a href="extension.html#method-getBackgroundPage">chrome.extension.getBackgroundPage()</a></code>, |
+ switch to |
+ <code><a href="runtime.html#method-getBackgroundPage">chrome.runtime.getBackgroundPage()</a></code> |
+ instead. |
+ </li><li>If you're using <a href="messaging.html">message passing</a>, be sure |
+ to close unused message ports. The event page will not shut down until all |
+ message ports are closed. |
+</li></ol> |
+<p></p> |
</div> |
<!-- API PAGE --> |
<!-- /apiPage --> |