summaryrefslogtreecommitdiffstats
path: root/chrome/common/extensions/docs
diff options
context:
space:
mode:
authorrafaelw@chromium.org <rafaelw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-07-22 18:02:19 +0000
committerrafaelw@chromium.org <rafaelw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-07-22 18:02:19 +0000
commit605fede7a976ee0859f1b7d19066553edef6d192 (patch)
treece704846eba86719418843a3c325de0bf3fd94a4 /chrome/common/extensions/docs
parent020292294ce9964899728b076b28a6f3cd93c626 (diff)
downloadchromium_src-605fede7a976ee0859f1b7d19066553edef6d192.zip
chromium_src-605fede7a976ee0859f1b7d19066553edef6d192.tar.gz
chromium_src-605fede7a976ee0859f1b7d19066553edef6d192.tar.bz2
Fix line endings doc files.
TBR Review URL: http://codereview.chromium.org/155927 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21288 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/common/extensions/docs')
-rwxr-xr-xchrome/common/extensions/docs/js/api_page_generator.js288
-rwxr-xr-xchrome/common/extensions/docs/reference/bookmarks.html62
-rwxr-xr-xchrome/common/extensions/docs/reference/bookmarks_overview.html242
-rwxr-xr-xchrome/common/extensions/docs/reference/tabs.html64
-rwxr-xr-xchrome/common/extensions/docs/reference/tabs_overview.html22
5 files changed, 339 insertions, 339 deletions
diff --git a/chrome/common/extensions/docs/js/api_page_generator.js b/chrome/common/extensions/docs/js/api_page_generator.js
index d8593db..3aa87bf 100755
--- a/chrome/common/extensions/docs/js/api_page_generator.js
+++ b/chrome/common/extensions/docs/js/api_page_generator.js
@@ -1,144 +1,144 @@
-/**
- * @fileoverview This file is the controller for generating one api reference
- * page of the extension documentation.
- *
- * It expects:
- *
- * - To be called from a "shell" page whose "base" name matches an api module
- * name. For instance ../bookmarks.html -> chrome.bookmarks.
- *
- * - To have available via XHR (relative path):
- * 1) API_TEMPLATE which is the main template for the api pages.
- * 2) A file located at SCHEMA_PATH + |apiName| + SCHEMA_EXTENSION
- * which is shared with the extension system and defines the methods and
- * events contained in one api.
- * 3) An |apiName| + OVERVIEW_EXTENSION file which contains static authored
- * content that is inserted into the "overview" slot in the API_TEMPLATE.
- *
- * The "shell" page may have a renderering already contained within it so that
- * the docs can be indexed.
- *
- * TODO(rafaelw): XHR support for IE.
- * TODO(rafaelw): JSON support for non-chrome 3.x clients.
- */
-
-var API_TEMPLATE = "../template/api_template.html";
-var SCHEMA_PATH = "../../api/";
-var SCHEMA_EXTENSION = ".json";
-var OVERVIEW_EXTENSION = "_overview.html";
-var REQUEST_TIMEOUT = 2000;
-
-Array.prototype.each = function(f) {
- for (var i = 0; i < this.length; i++) {
- f(this[i], i);
- }
-}
-
-window.onload = function() {
- // Determine api module being rendered. Expect ".../<apiName>.html"
- var pathParts = document.location.href.split(/\/|\./);
- var apiName = pathParts[pathParts.length - 2];
- var apiOverviewName = apiName + OVERVIEW_EXTENSION;
- var apiSchemaName = SCHEMA_PATH + apiName + SCHEMA_EXTENSION;
-
- // Fetch the api template and insert into the <body>.
- fetchContent(API_TEMPLATE, function(templateContent) {
- document.getElementsByTagName("body")[0].innerHTML = templateContent;
-
- // Fetch the overview and insert into the "overview" <div>.
- fetchContent(apiOverviewName, function(overviewContent) {
- document.getElementById("overview").innerHTML = overviewContent;
-
- // Now the page is composed with the authored content, we fetch the schema
- // and populate the templates.
- fetchContent(apiSchemaName, renderTemplate);
- });
- });
-}
-
-/**
- * Fetches |url| and returns it's text contents from the xhr.responseText in
- * onSuccess(content)
- */
-function fetchContent(url, onSuccess) {
- var xhr = new XMLHttpRequest();
- var abortTimerId = window.setTimeout(function() {
- xhr.abort();
- console.log("XHR Timed out");
- }, REQUEST_TIMEOUT);
-
- function handleError(error) {
- window.clearTimeout(abortTimerId);
- console.error("XHR Failed: " + error);
- }
-
- try {
- xhr.onreadystatechange = function(){
- if (xhr.readyState == 4) {
- if (xhr.responseText) {
- window.clearTimeout(abortTimerId);
- onSuccess(xhr.responseText);
- } else {
- handleError("responseText empty.");
- }
- }
- }
-
- xhr.onerror = handleError;
-
- xhr.open("GET", url, true);
- xhr.send(null);
- } catch(e) {
- console.log("ex: " + e);
- console.error("exception: " + e);
- handleError();
- }
-}
-
-/**
- * Parses the content in |module| to json, adds any additional required values,
- * renders to html via JSTemplate, and unhides the <body>.
- * This uses the root <html> element (the entire document) as the template.
- */
-function renderTemplate(module) {
- var apiDefinition = JSON.parse(module);
- preprocessApi(apiDefinition);
-
- // Render to template
- var input = new JsEvalContext(apiDefinition);
- var output = document.getElementsByTagName("html")[0];
- jstProcess(input, output);
-
- // Show.
- document.getElementsByTagName("body")[0].className = "";
-}
-
-/**
- * Augment the |schema| with additional values that are required by the
- * template.
- */
-function preprocessApi(schema) {
- schema.functions.each(function(f) {
- f.fullName = schema.namespace + "." + f.name;
- if (f.callbackParameters) {
- f.callbackSignature = generateSignatureString(f.callbackParameters);
- }
- });
-
- schema.events.each(function(e) {
- e.callSignature = generateSignatureString(e.parameters);
- });
-}
-
-/**
- * Generates a simple string representation of the signature of a function
- * whose |parameters| are json schemas.
- */
-function generateSignatureString(parameters) {
- var retval = [];
- parameters.each(function(param, i) {
- retval.push(param.type + " " + (param.type ? param.type : param["$ref"]));
- });
-
- return retval.join(", ");
-}
+/**
+ * @fileoverview This file is the controller for generating one api reference
+ * page of the extension documentation.
+ *
+ * It expects:
+ *
+ * - To be called from a "shell" page whose "base" name matches an api module
+ * name. For instance ../bookmarks.html -> chrome.bookmarks.
+ *
+ * - To have available via XHR (relative path):
+ * 1) API_TEMPLATE which is the main template for the api pages.
+ * 2) A file located at SCHEMA_PATH + |apiName| + SCHEMA_EXTENSION
+ * which is shared with the extension system and defines the methods and
+ * events contained in one api.
+ * 3) An |apiName| + OVERVIEW_EXTENSION file which contains static authored
+ * content that is inserted into the "overview" slot in the API_TEMPLATE.
+ *
+ * The "shell" page may have a renderering already contained within it so that
+ * the docs can be indexed.
+ *
+ * TODO(rafaelw): XHR support for IE.
+ * TODO(rafaelw): JSON support for non-chrome 3.x clients.
+ */
+
+var API_TEMPLATE = "../template/api_template.html";
+var SCHEMA_PATH = "../../api/";
+var SCHEMA_EXTENSION = ".json";
+var OVERVIEW_EXTENSION = "_overview.html";
+var REQUEST_TIMEOUT = 2000;
+
+Array.prototype.each = function(f) {
+ for (var i = 0; i < this.length; i++) {
+ f(this[i], i);
+ }
+}
+
+window.onload = function() {
+ // Determine api module being rendered. Expect ".../<apiName>.html"
+ var pathParts = document.location.href.split(/\/|\./);
+ var apiName = pathParts[pathParts.length - 2];
+ var apiOverviewName = apiName + OVERVIEW_EXTENSION;
+ var apiSchemaName = SCHEMA_PATH + apiName + SCHEMA_EXTENSION;
+
+ // Fetch the api template and insert into the <body>.
+ fetchContent(API_TEMPLATE, function(templateContent) {
+ document.getElementsByTagName("body")[0].innerHTML = templateContent;
+
+ // Fetch the overview and insert into the "overview" <div>.
+ fetchContent(apiOverviewName, function(overviewContent) {
+ document.getElementById("overview").innerHTML = overviewContent;
+
+ // Now the page is composed with the authored content, we fetch the schema
+ // and populate the templates.
+ fetchContent(apiSchemaName, renderTemplate);
+ });
+ });
+}
+
+/**
+ * Fetches |url| and returns it's text contents from the xhr.responseText in
+ * onSuccess(content)
+ */
+function fetchContent(url, onSuccess) {
+ var xhr = new XMLHttpRequest();
+ var abortTimerId = window.setTimeout(function() {
+ xhr.abort();
+ console.log("XHR Timed out");
+ }, REQUEST_TIMEOUT);
+
+ function handleError(error) {
+ window.clearTimeout(abortTimerId);
+ console.error("XHR Failed: " + error);
+ }
+
+ try {
+ xhr.onreadystatechange = function(){
+ if (xhr.readyState == 4) {
+ if (xhr.responseText) {
+ window.clearTimeout(abortTimerId);
+ onSuccess(xhr.responseText);
+ } else {
+ handleError("responseText empty.");
+ }
+ }
+ }
+
+ xhr.onerror = handleError;
+
+ xhr.open("GET", url, true);
+ xhr.send(null);
+ } catch(e) {
+ console.log("ex: " + e);
+ console.error("exception: " + e);
+ handleError();
+ }
+}
+
+/**
+ * Parses the content in |module| to json, adds any additional required values,
+ * renders to html via JSTemplate, and unhides the <body>.
+ * This uses the root <html> element (the entire document) as the template.
+ */
+function renderTemplate(module) {
+ var apiDefinition = JSON.parse(module);
+ preprocessApi(apiDefinition);
+
+ // Render to template
+ var input = new JsEvalContext(apiDefinition);
+ var output = document.getElementsByTagName("html")[0];
+ jstProcess(input, output);
+
+ // Show.
+ document.getElementsByTagName("body")[0].className = "";
+}
+
+/**
+ * Augment the |schema| with additional values that are required by the
+ * template.
+ */
+function preprocessApi(schema) {
+ schema.functions.each(function(f) {
+ f.fullName = schema.namespace + "." + f.name;
+ if (f.callbackParameters) {
+ f.callbackSignature = generateSignatureString(f.callbackParameters);
+ }
+ });
+
+ schema.events.each(function(e) {
+ e.callSignature = generateSignatureString(e.parameters);
+ });
+}
+
+/**
+ * Generates a simple string representation of the signature of a function
+ * whose |parameters| are json schemas.
+ */
+function generateSignatureString(parameters) {
+ var retval = [];
+ parameters.each(function(param, i) {
+ retval.push(param.type + " " + (param.type ? param.type : param["$ref"]));
+ });
+
+ return retval.join(", ");
+}
diff --git a/chrome/common/extensions/docs/reference/bookmarks.html b/chrome/common/extensions/docs/reference/bookmarks.html
index 082493d..092ef1f 100755
--- a/chrome/common/extensions/docs/reference/bookmarks.html
+++ b/chrome/common/extensions/docs/reference/bookmarks.html
@@ -1,32 +1,32 @@
-<!DOCTYPE html>
-<!-- This page is a placeholder for generated extensions api doc. Note:
- 1) The <head> information in this page is significant, should be uniform
- across api docs and should be edited only with knowledge of the
- templating mechanism.
- 2) The <body> tag *must* retain id="body"
- 3) All <body>.innerHTML is genereated as an rendering step. If viewed in a
- browser, it will be re-generated from the template, json schema and
- authored overview content.
- 4) The <body>.innerHTML is also generated by an offline step so that this
- page may easily be indexed by search engines.
-
- TODO(rafaelw): Abstract this into a "pageshell" that becomes the single
- version of page template shell and the "instance" pages (bookmarks.html,
- etc...) can be generated with a build step.
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
- <!-- <head> data is significant and loads the needed libraries and styles -->
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <title jscontent="namespace">chrome.apiname</title>
- <link href="../css/ApiRefStyles.css" rel="stylesheet" type="text/css">
- <script type="text/javascript"
- src="../../../../third_party/jstemplate/jstemplate_compiled.js">
- </script>
- <script type="text/javascript" src="../js/api_page_generator.js"></script>
- </head>
- <!-- <body> content is completely generated. Do not edit, as it will be
- and rewritten. -->
- <body class="hidden">
- </body>
+<!DOCTYPE html>
+<!-- This page is a placeholder for generated extensions api doc. Note:
+ 1) The <head> information in this page is significant, should be uniform
+ across api docs and should be edited only with knowledge of the
+ templating mechanism.
+ 2) The <body> tag *must* retain id="body"
+ 3) All <body>.innerHTML is genereated as an rendering step. If viewed in a
+ browser, it will be re-generated from the template, json schema and
+ authored overview content.
+ 4) The <body>.innerHTML is also generated by an offline step so that this
+ page may easily be indexed by search engines.
+
+ TODO(rafaelw): Abstract this into a "pageshell" that becomes the single
+ version of page template shell and the "instance" pages (bookmarks.html,
+ etc...) can be generated with a build step.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <!-- <head> data is significant and loads the needed libraries and styles -->
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title jscontent="namespace">chrome.apiname</title>
+ <link href="../css/ApiRefStyles.css" rel="stylesheet" type="text/css">
+ <script type="text/javascript"
+ src="../../../../third_party/jstemplate/jstemplate_compiled.js">
+ </script>
+ <script type="text/javascript" src="../js/api_page_generator.js"></script>
+ </head>
+ <!-- <body> content is completely generated. Do not edit, as it will be
+ and rewritten. -->
+ <body class="hidden">
+ </body>
</html> \ No newline at end of file
diff --git a/chrome/common/extensions/docs/reference/bookmarks_overview.html b/chrome/common/extensions/docs/reference/bookmarks_overview.html
index b93be64..3cd3686 100755
--- a/chrome/common/extensions/docs/reference/bookmarks_overview.html
+++ b/chrome/common/extensions/docs/reference/bookmarks_overview.html
@@ -1,121 +1,121 @@
-<!-- BEGIN AUTHORED CONTENT -->
-<p id="classSummary">
-Use the <code>chrome.bookmarks</code> API to create, organize, and otherwise manipulate bookmarks.
-</p>
-
-<h2 id="description">Description</h2>
-
-<p>
-[PENDING: intro goes here...]
-</p>
-
-<p>
-<em>Bookmark objects</em> are an important part of the <code>chrome.bookmarks</code> API.
-Each bookmark object represents either a URL or a group of bookmarks, as you can see in the following figure.
-</p>
-
-<img
- alt="2 kinds of bookmark objects"
- width="415"
- height="123"
- src="https://sites.google.com/a/google.com/kathys-drafts/Chrome/chrome-extensions-drafts/api-mock-doc/chrome-bookmarks-final-mock/bookmarks.png"></a>
-
-
-<h3 id="overview-properties">Properties</h3>
-
-<p>Objects that represent bookmarks can have the following properties:
-</p>
-
-<dl>
-<dt> <code>id</code> </dt>
-<dd> An integer ID that's unique for each bookmark.
- Don't save this ID in persistent storage;
- the ID for a particular bookmark might change the next time the browser is started.
- </dd>
-
-<dt> <code>title</code> </dt>
-<dd> The name of the bookmark.
- This is the user-visible string that describes the URL or group.
- </dd>
-
-<dt> <code>parentId </code>
- <em>(omitted for the root group)</em>
- </dt>
-<dd> The ID of the group that this bookmark is in. </dd>
-
-<dt> <code>index</code>
- <em>(optional; omitted for the root group)</em>
- </dt>
-<dd> The 0-based integer position of the bookmark within its group. </dd>
-
-<dt> <code>url</code>
- <em>(omitted for groups)</em>
- </dt>
-<dd> The URL of the page that the bookmark points to. </dd>
-</dl>
-
-<h3 id="overview-examples">Examples</h3>
-
-<p>
-The following code creates a bookmark group with the title "Chromium bookmarks".
-The last argument defines a function to be executed after the folder is created.
-</p>
-
-<pre>
-chrome.bookmarks.create({'parentId': bookmarkBar.id,
- 'title': 'Chromium bookmarks'},
- function(newFolder) {...});
-</pre>
-
-<p>
-The next snippet creates a bookmark pointing to the Chromium developer doc.
-Since nothing too bad will happen if creating the bookmark fails,
-this snippet doesn't bother to define a callback function.
-</p>
-
-<pre>
-chrome.bookmarks.create({'parentId': chromiumBookmarks.id,
- 'title': 'dev doc',
- 'url': 'http://dev.chromium.org'});
-</pre>
-
-<p>
-Say you have bookmark hierarchy that looks like this:</p>
-
-<ul>
- <li>Bookmarks</li>
- <ul>
- <li>Google</li>
- <ul>
- <li>Apps</li>
- <ul>
- <li>...</li>
- <li>...</li>
- <li>...</li>
- </ul>
- <li>Google homepage</li>
- </ul>
- <li>Example</li>
- </ul>
-</ul>
-
-<p>
-Here's how those bookmarks might be represented with bookmark objects:</p>
-
-<img
- alt="a hierarchy of bookmarks"
- src="https://sites.google.com/a/google.com/kathys-drafts/Chrome/chrome-extensions-drafts/api-mock-doc/chrome-bookmarks-final-mock/bookmark-hierarchy.png">
-
-<p>
-Here's some code you could use to create that hierarchy:</p>
-
-<pre class="example">
-...code goes here...
-</pre>
-
-
-<div class="exampleLink">
-<a href="http://www.google.com/url?q=http%3A%2F%2Fexample.com&amp;sa=D&amp;sntz=1&amp;usg=AFrqEzd0oeJ1qGwYPoKuq1dTesEchMDLIQ">Full source code</a> |
-<a href="http://www.google.com/url?q=http%3A%2F%2Fexample.com&amp;sa=D&amp;sntz=1&amp;usg=AFrqEzd0oeJ1qGwYPoKuq1dTesEchMDLIQ">Install extension</a>
-</div> <!-- END exampleLink -->
-<!-- END AUTHORED CONTENT -->
+<!-- BEGIN AUTHORED CONTENT -->
+<p id="classSummary">
+Use the <code>chrome.bookmarks</code> API to create, organize, and otherwise manipulate bookmarks.
+</p>
+
+<h2 id="description">Description</h2>
+
+<p>
+[PENDING: intro goes here...]
+</p>
+
+<p>
+<em>Bookmark objects</em> are an important part of the <code>chrome.bookmarks</code> API.
+Each bookmark object represents either a URL or a group of bookmarks, as you can see in the following figure.
+</p>
+
+<img
+ alt="2 kinds of bookmark objects"
+ width="415"
+ height="123"
+ src="https://sites.google.com/a/google.com/kathys-drafts/Chrome/chrome-extensions-drafts/api-mock-doc/chrome-bookmarks-final-mock/bookmarks.png"></a>
+
+
+<h3 id="overview-properties">Properties</h3>
+
+<p>Objects that represent bookmarks can have the following properties:
+</p>
+
+<dl>
+<dt> <code>id</code> </dt>
+<dd> An integer ID that's unique for each bookmark.
+ Don't save this ID in persistent storage;
+ the ID for a particular bookmark might change the next time the browser is started.
+ </dd>
+
+<dt> <code>title</code> </dt>
+<dd> The name of the bookmark.
+ This is the user-visible string that describes the URL or group.
+ </dd>
+
+<dt> <code>parentId </code>
+ <em>(omitted for the root group)</em>
+ </dt>
+<dd> The ID of the group that this bookmark is in. </dd>
+
+<dt> <code>index</code>
+ <em>(optional; omitted for the root group)</em>
+ </dt>
+<dd> The 0-based integer position of the bookmark within its group. </dd>
+
+<dt> <code>url</code>
+ <em>(omitted for groups)</em>
+ </dt>
+<dd> The URL of the page that the bookmark points to. </dd>
+</dl>
+
+<h3 id="overview-examples">Examples</h3>
+
+<p>
+The following code creates a bookmark group with the title "Chromium bookmarks".
+The last argument defines a function to be executed after the folder is created.
+</p>
+
+<pre>
+chrome.bookmarks.create({'parentId': bookmarkBar.id,
+ 'title': 'Chromium bookmarks'},
+ function(newFolder) {...});
+</pre>
+
+<p>
+The next snippet creates a bookmark pointing to the Chromium developer doc.
+Since nothing too bad will happen if creating the bookmark fails,
+this snippet doesn't bother to define a callback function.
+</p>
+
+<pre>
+chrome.bookmarks.create({'parentId': chromiumBookmarks.id,
+ 'title': 'dev doc',
+ 'url': 'http://dev.chromium.org'});
+</pre>
+
+<p>
+Say you have bookmark hierarchy that looks like this:</p>
+
+<ul>
+ <li>Bookmarks</li>
+ <ul>
+ <li>Google</li>
+ <ul>
+ <li>Apps</li>
+ <ul>
+ <li>...</li>
+ <li>...</li>
+ <li>...</li>
+ </ul>
+ <li>Google homepage</li>
+ </ul>
+ <li>Example</li>
+ </ul>
+</ul>
+
+<p>
+Here's how those bookmarks might be represented with bookmark objects:</p>
+
+<img
+ alt="a hierarchy of bookmarks"
+ src="https://sites.google.com/a/google.com/kathys-drafts/Chrome/chrome-extensions-drafts/api-mock-doc/chrome-bookmarks-final-mock/bookmark-hierarchy.png">
+
+<p>
+Here's some code you could use to create that hierarchy:</p>
+
+<pre class="example">
+...code goes here...
+</pre>
+
+
+<div class="exampleLink">
+<a href="http://www.google.com/url?q=http%3A%2F%2Fexample.com&amp;sa=D&amp;sntz=1&amp;usg=AFrqEzd0oeJ1qGwYPoKuq1dTesEchMDLIQ">Full source code</a> |
+<a href="http://www.google.com/url?q=http%3A%2F%2Fexample.com&amp;sa=D&amp;sntz=1&amp;usg=AFrqEzd0oeJ1qGwYPoKuq1dTesEchMDLIQ">Install extension</a>
+</div> <!-- END exampleLink -->
+<!-- END AUTHORED CONTENT -->
diff --git a/chrome/common/extensions/docs/reference/tabs.html b/chrome/common/extensions/docs/reference/tabs.html
index 71dc7e3..a2f8a82 100755
--- a/chrome/common/extensions/docs/reference/tabs.html
+++ b/chrome/common/extensions/docs/reference/tabs.html
@@ -1,33 +1,33 @@
-<!DOCTYPE html>
-<!-- This page is a placeholder for generated extensions api doc. Note:
- 1) The <head> information in this page is significant, should be uniform
- across api docs and should be edited only with knowledge of the
- templating mechanism.
- 2) The <body> tag *must* retain id="body"
- 3) All <body>.innerHTML is genereated as an rendering step. If viewed in a
- browser, it will be re-generated from the template, json schema and
- authored overview content.
- 4) The <body>.innerHTML is also generated by an offline step so that this
- page may easily be indexed by search engines.
-
- TODO(rafaelw): Abstract this into a "pageshell" that becomes the single
- version of page template shell and the "instance" pages (bookmarks.html,
- etc...) can be generated with a build step.
--->
-<!-- <html> must retain id="template -->
-<html xmlns="http://www.w3.org/1999/xhtml">
- <!-- <head> data is significant and loads the needed libraries and styles -->
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <title jscontent="namespace">chrome.apiname</title>
- <link href="../css/ApiRefStyles.css" rel="stylesheet" type="text/css">
- <script type="text/javascript"
- src="../../../../third_party/jstemplate/jstemplate_compiled.js">
- </script>
- <script type="text/javascript" src="../js/api_page_generator.js"></script>
- </head>
- <!-- <body> content is completely generated. Do not edit, as it will be
- and rewritten. -->
- <body class="hidden">
- </body>
+<!DOCTYPE html>
+<!-- This page is a placeholder for generated extensions api doc. Note:
+ 1) The <head> information in this page is significant, should be uniform
+ across api docs and should be edited only with knowledge of the
+ templating mechanism.
+ 2) The <body> tag *must* retain id="body"
+ 3) All <body>.innerHTML is genereated as an rendering step. If viewed in a
+ browser, it will be re-generated from the template, json schema and
+ authored overview content.
+ 4) The <body>.innerHTML is also generated by an offline step so that this
+ page may easily be indexed by search engines.
+
+ TODO(rafaelw): Abstract this into a "pageshell" that becomes the single
+ version of page template shell and the "instance" pages (bookmarks.html,
+ etc...) can be generated with a build step.
+-->
+<!-- <html> must retain id="template -->
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <!-- <head> data is significant and loads the needed libraries and styles -->
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title jscontent="namespace">chrome.apiname</title>
+ <link href="../css/ApiRefStyles.css" rel="stylesheet" type="text/css">
+ <script type="text/javascript"
+ src="../../../../third_party/jstemplate/jstemplate_compiled.js">
+ </script>
+ <script type="text/javascript" src="../js/api_page_generator.js"></script>
+ </head>
+ <!-- <body> content is completely generated. Do not edit, as it will be
+ and rewritten. -->
+ <body class="hidden">
+ </body>
</html> \ No newline at end of file
diff --git a/chrome/common/extensions/docs/reference/tabs_overview.html b/chrome/common/extensions/docs/reference/tabs_overview.html
index 15d6e15..de647ae 100755
--- a/chrome/common/extensions/docs/reference/tabs_overview.html
+++ b/chrome/common/extensions/docs/reference/tabs_overview.html
@@ -1,11 +1,11 @@
-<!-- BEGIN AUTHORED CONTENT -->
-<p id="classSummary">
-Use the <code>chrome.tabs</code> API to create, organize, and otherwise manipulate bookmarks.
-</p>
-
-<h2 id="description">Description</h2>
-
-<p>
-[PENDING: intro goes here...]
-</p>
-<!-- END AUTHORED CONTENT -->
+<!-- BEGIN AUTHORED CONTENT -->
+<p id="classSummary">
+Use the <code>chrome.tabs</code> API to create, organize, and otherwise manipulate bookmarks.
+</p>
+
+<h2 id="description">Description</h2>
+
+<p>
+[PENDING: intro goes here...]
+</p>
+<!-- END AUTHORED CONTENT -->