Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(306)

Unified Diff: chrome/common/extensions/docs/server2/templates/private/declarativeWebRequest_intro.html

Issue 10700118: Extensions Docs Server: First doc conversions (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Added all APIs Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/common/extensions/docs/server2/templates/private/declarativeWebRequest_intro.html
diff --git a/chrome/common/extensions/docs/server2/templates/private/declarativeWebRequest_intro.html b/chrome/common/extensions/docs/server2/templates/private/declarativeWebRequest_intro.html
new file mode 100644
index 0000000000000000000000000000000000000000..2ba2f9b0a07e07e03388154b86ea76b0bfe2ae47
--- /dev/null
+++ b/chrome/common/extensions/docs/server2/templates/private/declarativeWebRequest_intro.html
@@ -0,0 +1,107 @@
+<!-- BEGIN AUTHORED CONTENT -->
+<h2 id="notes">Notes</h2>
+<p>
+Use the <code>chrome.declarativeWebRequest</code> module to intercept, block, or
+modify requests in-flight. It is significantly faster than the <a
+ href="webRequest.html"><code>chrome.webRequest</code> API</a> because you can
+register rules that are evaluated in the browser rather than the
+JavaScript engine which reduces roundtrip latencies and allows for very high
+efficiency.
+</p>
+<h2 id="manifest">Manifest</h2>
+<p>
+You must declare the "declarative" and the "declarativeWebRequest" permission in
+the <a href="manifest.html">extension manifest</a> to use this API,
+along with <a href="manifest.html#permissions">host permissions</a> for any
+hosts whose network requests you want to access.
+</p>
+<pre>{
+ "name": "My extension",
+ ...
+<b> "permissions": [
+ "declarative",
+ "declarativeWebRequest",
+ "*://*.google.com"
+ ]</b>,
+ ...
+}</pre>
+<h2 id="rules">Rules</h2>
+<p>
+The Declarative Web Request API follows the concepts of the <a
+ href="events.html#declarative">Declarative API</a>. You can register rules to
+the <code>chrome.declarativeWebRequest.onRequest</code> event object.
+</p>
+<p>
+The Declarative Web Request API supports a single type of match criteria, the
+<code>RequestMatcher</code>. The <code>RequestMatcher</code> matches network
+requests if and only if all listed criteria are met. The following
+<code>RequestMatcher</code> would match a network request when the user enters
+"http://www.example.com" in the URL bar:
+</p>
+<pre>
+var matcher = new chrome.declarativeWebRequest.RequestMatcher({
+ url: { hostSuffix: 'example.com', schemes: ['http'] },
+ resourceType: 'main_frame'
+ });
+</pre>
+<p>
+Requests to "https://www.example.com" would be rejected by the
+<code>RequestMatcher</code> due to the scheme. Also all requests for an embedded
+iframe would be rejected due to the <code>resourceType</code>.
+</p>
+<p class="note">
+<strong>Note:</strong> All conditions and actions are created via a constructor
+as shown in the example above.
+<p>
+<p>
+In order to cancel all requests to "example.com", you can define a rule as
+follows:
+</p>
+<pre>
+var rule = {
+ conditions: [
+ new chrome.declarativeWebRequest.RequestMatcher({
+ url: { hostSuffix: 'example.com' } })
+ ],
+ actions: [
+ new chrome.declarativeWebRequest.CancelRequest()
+ ]};
+</pre>
+<p>
+In order to cancel all requests to "example.com" and "foobar.com", you can add a
+second condition, as each condition is sufficient to trigger all specified
+actions:
+</p>
+<pre>
+var rule2 = {
+ conditions: [
+ new chrome.declarativeWebRequest.RequestMatcher({
+ url: { hostSuffix: 'example.com' } }),
+ new chrome.declarativeWebRequest.RequestMatcher({
+ url: { hostSuffix: 'foobar.com' } })
+ ],
+ actions: [
+ new chrome.declarativeWebRequest.CancelRequest()
+ ]};
+</pre>
+<p>
+Register rules as follows:
+</p>
+<pre>
+chrome.declarativeWebRequest.onRequest.addRules([rule2]);
+</pre>
+<p class="note">
+<strong>Note:</strong> You should always register or unregister rules in bulk rather than
+individually because each of these operations recreates internal data
+structures. This re-creation is computationally expensive but facilitates a
+very fast URL matching algorithm for hundreds of thousands of URLs.
+</p>
+<h2 id="TODO">Todo</h2>
+<ul>
+ <li>Explain precedences, once we can ignore rules based on their priority
+ (e.g. how can I cancel all requests except for a specific whitelist?)
+ <li>Explain when conditions can be evaluated, when actions can be executed,
+ and when rules can be executed (e.g. you cannot cancel a request when you
+ have received the response already)
+</ul>
+<!-- END AUTHORED CONTENT -->

Powered by Google App Engine
This is Rietveld 408576698