Index: chrome/common/extensions/docs/server2/templates/intros/events.html |
diff --git a/chrome/common/extensions/docs/server2/templates/intros/events.html b/chrome/common/extensions/docs/server2/templates/intros/events.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..6ae68db51e2f3924ae90f52c167e031d09560d6c |
--- /dev/null |
+++ b/chrome/common/extensions/docs/server2/templates/intros/events.html |
@@ -0,0 +1,156 @@ |
+<p> |
+An <code>Event</code> is an object |
+that allows you to be notified |
+when something interesting happens. |
+Here's an example of using the |
+<code>chrome.tabs.onCreated</code> event |
+to be notified whenever there's a new tab: |
+</p> |
+ |
+<pre> |
+chrome.tabs.onCreated.<b>addListener(function(</b>tab<b>) {</b> |
+ appendToLog('tabs.onCreated --' |
+ + ' window: ' + tab.windowId |
+ + ' tab: ' + tab.id |
+ + ' index: ' + tab.index |
+ + ' url: ' + tab.url); |
+<b>});</b> |
+</pre> |
+ |
+<p> |
+As the example shows, |
+you register for notification using <code>addListener()</code>. |
+The argument to <code>addListener()</code> |
+is always a function that you define to handle the event, |
+but the parameters to the function depend on |
+which event you're handling. |
+Checking the documentation for |
+<a href="tabs.html#event-onCreated"><code>chrome.tabs.onCreated</code></a>, |
+you can see that the function has a single parameter: |
+a <a href="tabs.html#type-tabs.Tab">Tab</a> object |
+that has details about the newly created tab. |
+</p> |
+ |
+ |
+<div class="doc-family extensions"> |
+<h2 id="declarative">Declarative Event Handlers</h2> |
+ |
+<p> |
+The declarative event handlers provide a means to define rules consisting of |
+declarative conditions and actions. Conditions are evaluated in the browser |
+rather than the JavaScript engine which reduces roundtrip latencies and allows |
+for very high efficiency. |
+</p> |
+ |
+<p>Declarative event handlers are used for example in the <a |
+ href="declarativeWebRequest.html">Declarative Web Request API</a> and possibly |
+further extension APIs in the future. This page describes the underlying |
+concepts of all declarative event handlers. |
+</p> |
+ |
+<h3 id="rules">Rules</h3> |
+ |
+<p>The simplest possible rule consists of one or more conditions and one or more |
+actions:</p> |
+<pre> |
+var rule = { |
+ conditions: [ /* my conditions */ ], |
+ actions: [ /* my actions */ ] |
+}; |
+</pre> |
+ |
+<p>If any of the conditions is fulfilled, all actions are executed.</p> |
+ |
+<p>In addition to conditions and actions you may give each rule an identifier, |
+which simplifies unregistering previously registered rules, and a priority to |
+define precedences among rules. Priorities are only considered if rules conflict |
+each other or need to be executed in a specific order.</p> |
+ |
+<pre> |
+var rule = { |
+ id: "my rule", // optional, will be generated if not set. |
+ priority: 100, // optional, defaults to 100. |
+ conditions: [ /* my conditions */ ], |
+ actions: [ /* my actions */ ] |
+}; |
+</pre> |
+ |
+<h3 id="eventobjects">Event objects</h3> |
+ |
+<p> |
+<a href="events.html">Event objects</a> may support rules. These event objects |
+don't call a callback function when events happer but test whether any |
+registered rule has at least one fulfilled condition and execute the actions |
+associated with this rule. Event objects supporting the declarative API have |
+three relevant methods: <a href="#method-addRules"><code>addRules()</code></a>, |
+<a href="#method-removeRules"><code>removeRules()</code></a>, and |
+<a href="#method-getRules"><code>getRules()</code></a>. |
+</p> |
+ |
+<h3 id="addingrules">Adding rules</h3> |
+ |
+<p> |
+To add rules call the <code>addRules()</code> function of the event object. It |
+takes an array of rule instances as its first parameter and a callback function |
+that is called on completion. |
+</p> |
+ |
+<pre> |
+var rule_list = [rule1, rule2, ...]; |
+function addRules(rule_list, function callback(details) {...}); |
+</pre> |
+ |
+<p> |
+If the rules were inserted successfully, the <code>details</code> parameter |
+contains an array of inserted rules appearing in the same order as in the passed |
+<code>rule_list</code> where the optional parameters <code>id</code> and |
+<code>priority</code> were filled with the generated values. If any rule is |
+invalid, e.g., because it contained an invalid condition or action, none of the |
+rules are added and the <a |
+ href="extension.html#property-lastError">lastError</a> variable is set when |
+the callback function is called. Each rule in <code>rule_list</code> must |
+contain a unique identifier that is not currently used by another rule or an |
+empty identifier. |
+</p> |
+ |
+<h3 id="removingrules">Removing rules</h3> |
+ |
+<p> |
+To remove rules call the <code>removeRules()</code> function. It accepts an |
+optional array of rule identifiers as its first parameter and a callback |
+function as its second parameter. |
+</p> |
+ |
+<pre> |
+var rule_ids = ["id1", "id2", ...]; |
+function removeRules(rule_ids, function callback() {...}); |
+</pre> |
+ |
+<p> |
+If <code>rule_ids</code> is an array of identifiers, all rules having |
+identifiers listed in the array are removed. If <code>rule_ids</code> lists an |
+identifier, that is unknown, this identifier is silently ignored. If |
+<code>rule_ids</code> is <code>undefined</code>, all registered rules of this |
+extension are removed. The <code>callback()</code> function is called when the |
+rules were removed. |
+</p> |
+ |
+<h3 id="retrievingrules">Retrieving rules</h3> |
+ |
+<p> |
+To retrieve a list of currently registered rules, call the |
+<code>getRules()</code> function. It accepts an optional array of rule |
+identifiers with the same semantics as <code>removeRules</code> and a callback |
+function. |
+<p> |
+ |
+<pre> |
+var rule_ids = ["id1", "id2", ...]; |
+function getRules(rule_ids, function callback(details) {...}); |
+</pre> |
+ |
+<p> |
+The <code>details</code> parameter passed to the <code>calback()</code> function |
+refers to an array of rules including filled optional parameters. |
+</p> |
+</div> |