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

Side by Side Diff: chrome/common/extensions/docs/npapi.html

Issue 10642015: Basic setup for generating app docs (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 <!DOCTYPE html><!-- This page is a placeholder for generated extensions api doc. Note:
2 1) The <head> information in this page is significant, should be uniform
3 across api docs and should be edited only with knowledge of the
4 templating mechanism.
5 3) All <body>.innerHTML is genereated as an rendering step. If viewed in a
6 browser, it will be re-generated from the template, json schema and
7 authored overview content.
8 4) The <body>.innerHTML is also generated by an offline step so that this
9 page may easily be indexed by search engines.
10 --><html xmlns="http://www.w3.org/1999/xhtml"><head>
11 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
12 <link href="css/ApiRefStyles.css" rel="stylesheet" type="text/css">
13 <link href="css/print.css" rel="stylesheet" type="text/css" media="print">
14 <script type="text/javascript" src="../../../third_party/jstemplate/jstempla te_compiled.js">
15 </script>
16 <script type="text/javascript" src="../../../../third_party/json_minify/mini fy-sans-regexp.js">
17 </script>
18 <script type="text/javascript" src="js/api_page_generator.js"></script>
19 <script type="text/javascript" src="js/bootstrap.js"></script>
20 <script type="text/javascript" src="js/sidebar.js"></script>
21 <title>NPAPI Plugins - Google Chrome Extensions - Google Code</title></head>
22 <body> <div id="devModeWarning" class="displayModeWarning">
23 You are viewing extension docs in chrome via the 'file:' scheme: are you exp ecting to see local changes when you refresh? You'll need run chrome with --allo w-file-access-from-files.
24 </div>
25 <div id="branchWarning" class="displayModeWarning">
26 <span>WARNING: This is the <span id="branchName">BETA</span> documentation.
27 It may not work with the stable release of Chrome.</span>
28 <select id="branchChooser">
29 <option>Choose a different version...
30 </option><option value="">Stable
31 </option><option value="beta">Beta
32 </option><option value="dev">Dev
33 </option><option value="trunk">Trunk
34 </option></select>
35 </div>
36 <div id="unofficialWarning" class="displayModeWarning">
37 <span>WARNING: This is unofficial documentation. It may not work with the
38 current release of Chrome.</span>
39 <button id="goToOfficialDocs">Go to the official docs</button>
40 </div>
41 <div id="gc-container" class="labs">
42 <!-- SUBTEMPLATES: DO NOT MOVE FROM THIS LOCATION -->
43 <!-- In particular, sub-templates that recurse, must be used by allowing
44 jstemplate to make a copy of the template in this section which
45 are not operated on by way of the jsskip="true" -->
46 <!-- /SUBTEMPLATES -->
47 <a id="top"></a>
48 <div id="skipto">
49 <a href="#gc-pagecontent">Skip to page content</a>
50 <a href="#gc-toc">Skip to main navigation</a>
51 </div>
52 <!-- API HEADER -->
53 <table id="header" width="100%" cellspacing="0" border="0">
54 <tbody><tr>
55 <td valign="middle"><a href="http://code.google.com/"><img src="images/c ode_labs_logo.gif" height="43" width="161" alt="Google Code Labs" style="border: 0; margin:0;"></a></td>
56 <td valign="middle" width="100%" style="padding-left:0.6em;">
57 <form action="http://www.google.com/cse" id="cse" style="margin-top:0. 5em">
58 <div id="gsc-search-box">
59 <input type="hidden" name="cx" value="002967670403910741006:61_cvz fqtno">
60 <input type="hidden" name="ie" value="UTF-8">
61 <input type="text" name="q" value="" size="55">
62 <input class="gsc-search-button" type="submit" name="sa" value="Se arch">
63 <br>
64 <span class="greytext">e.g. "page action" or "tabs"</span>
65 </div>
66 </form>
67 <script type="text/javascript" src="https://www.google.com/jsapi"></sc ript>
68 <script type="text/javascript">google.load("elements", "1", {packages: "transliteration"});</script>
69 <script type="text/javascript" src="https://www.google.com/coop/cse/t1 3n?form=cse&amp;t13n_langs=en"></script>
70 <script type="text/javascript" src="https://www.google.com/coop/cse/br and?form=cse&amp;lang=en"></script>
71 </td>
72 </tr>
73 </tbody></table>
74 <div id="codesiteContent" class="">
75 <a id="gc-topnav-anchor"></a>
76 <div id="gc-topnav">
77 <h1>Google Chrome Extensions (<a href="http://code.google.com/labs/">Lab s</a>)</h1>
78 <ul id="home" class="gc-topnav-tabs">
79 <li id="home_link">
80 <a href="index.html" title="Google Chrome Extensions home page">Home </a>
81 </li>
82 <li id="docs_link">
83 <a href="docs.html" title="Official Google Chrome Extensions documen tation">Docs</a>
84 </li>
85 <li id="faq_link">
86 <a href="faq.html" title="Answers to frequently asked questions abou t Google Chrome Extensions">FAQ</a>
87 </li>
88 <li id="samples_link">
89 <a href="samples.html" title="Sample extensions (with source code)"> Samples</a>
90 </li>
91 <li id="group_link">
92 <a href="http://groups.google.com/a/chromium.org/group/chromium-exte nsions" title="Google Chrome Extensions developer forum">Group</a>
93 </li>
94 <li id="so_link">
95 <a href="http://stackoverflow.com/questions/tagged/google-chrome-ext ension" title="[google-chrome-extension] tag on Stack Overflow">Questions?</a>
96 </li>
97 </ul>
98 </div> <!-- end gc-topnav -->
99 <div class="g-section g-tpl-170">
100 <!-- SIDENAV -->
101 <div class="g-unit g-first" id="gc-toc">
102 <ul>
103 <li><a href="getstarted.html">Getting Started</a></li>
104 <li><a href="overview.html">Overview</a></li>
105 <li><a href="whats_new.html">What's New?</a></li>
106 <li><h2><a href="devguide.html">Developer's Guide</a></h2>
107 <ul>
108 <li>Browser UI
109 <ul>
110 <li><a href="browserAction.html">Browser Actions</a></li>
111 <li><a href="contextMenus.html">Context Menus</a></li>
112 <li><a href="notifications.html">Desktop Notifications</a></li >
113 <li><a href="omnibox.html">Omnibox</a></li>
114 <li><a href="options.html">Options Pages</a></li>
115 <li><a href="override.html">Override Pages</a></li>
116 <li><a href="pageAction.html">Page Actions</a></li>
117 </ul>
118 </li>
119 <li>Browser Interaction
120 <ul>
121 <li><a href="bookmarks.html">Bookmarks</a></li>
122 <li><a href="cookies.html">Cookies</a></li>
123 <li><a href="devtools.html">Developer Tools</a></li>
124 <li><a href="events.html">Events</a></li>
125 <li><a href="history.html">History</a></li>
126 <li><a href="management.html">Management</a></li>
127 <li><a href="tabs.html">Tabs</a></li>
128 <li><a href="windows.html">Windows</a></li>
129 </ul>
130 </li>
131 <li>Implementation
132 <ul>
133 <li><a href="a11y.html">Accessibility</a></li>
134 <li><a href="background_pages.html">Background Pages</a></li>
135 <li><a href="content_scripts.html">Content Scripts</a></li>
136 <li><a href="xhr.html">Cross-Origin XHR</a></li>
137 <li><a href="i18n.html">Internationalization</a></li>
138 <li><a href="messaging.html">Message Passing</a></li>
139 <li><a href="permissions.html">Optional Permissions</a></li>
140 <li class="leftNavSelected">NPAPI Plugins</li>
141 </ul>
142 </li>
143 <li>Finishing
144 <ul>
145 <li><a href="hosting.html">Hosting</a></li>
146 <li><a href="external_extensions.html">Other Deployment Option s</a></li>
147 </ul>
148 </li>
149 </ul>
150 </li>
151 <li><h2><a href="apps.html">Packaged Apps</a></h2></li>
152 <li><h2><a href="tutorials.html">Tutorials</a></h2>
153 <ul>
154 <li><a href="tut_debugging.html">Debugging</a></li>
155 <li><a href="tut_analytics.html">Google Analytics</a></li>
156 <li><a href="tut_oauth.html">OAuth</a></li>
157 </ul>
158 </li>
159 <li><h2>Reference</h2>
160 <ul>
161 <li>Formats
162 <ul>
163 <li><a href="manifest.html">Manifest Files</a></li>
164 <li><a href="match_patterns.html">Match Patterns</a></li>
165 </ul>
166 </li>
167 <li><a href="permission_warnings.html">Permission Warnings</a></li >
168 <li><a href="api_index.html">chrome.* APIs</a></li>
169 <li><a href="api_other.html">Other APIs</a></li>
170 </ul>
171 </li>
172 <li><h2><a href="samples.html">Samples</a></h2></li>
173 <div class="line"> </div>
174 <li><h2>More</h2>
175 <ul>
176 <li><a href="http://code.google.com/chrome/webstore/docs/index.htm l">Chrome Web Store</a></li>
177 <li><a href="http://code.google.com/chrome/apps/docs/developers_gu ide.html">Hosted Apps</a></li>
178 <li><a href="themes.html">Themes</a></li>
179 </ul>
180 </li>
181 </ul>
182 </div>
183 <script>
184 initToggles();
185 </script>
186 <div class="g-unit" id="gc-pagecontent">
187 <div id="pageTitle">
188 <h1 class="page_title">NPAPI Plugins</h1>
189 </div>
190 <!-- TABLE OF CONTENTS -->
191 <!-- /TABLE OF CONTENTS -->
192 <!-- Standard content lead-in for experimental API pages -->
193 <!-- STATIC CONTENT PLACEHOLDER -->
194 <div id="static"><div id="pageData-name" class="pageData">NPAPI Plugins< /div>
195 <p>
196 Leveraging HTML and JavaScript
197 makes developing new extensions really easy,
198 but what if you have existing legacy or proprietary code
199 that you want to reuse in your extension?
200 You can bundle an NPAPI plugin with your extension,
201 allowing you to call into native binary code from JavaScript.
202 </p>
203 <h2>Warning</h2>
204 <p align="center"><b>NPAPI is a really big hammer that should only be used when no other approach will work.</b>
205 </p><p>Code running in an NPAPI plugin has the full permissions of the current u ser and is not sandboxed or shielded from malicious input by Google Chrome in an y way. You should be especially cautious when processing input from untrusted so urces, such as when working with <a href="content_scripts.html#security-consider ations">content scripts</a> or XMLHttpRequest.
206 </p><p>Because of the additional security risks NPAPI poses to users, extensions that use it will require manual review before being accepted in the
207 <a href="https://chrome.google.com/webstore">Chrome Web Store</a>.</p>
208 <h2>Details</h2>
209 <p>
210 How to develop an NPAPI plugin is outside the scope of this document.
211 See <a href="https://developer.mozilla.org/en/Plugins">Mozilla's
212 NPAPI plugin reference</a> for information on how to do that.
213 </p>
214 <p>
215 Once you have an NPAPI plugin,
216 follow these steps to get your extension using it.
217 </p>
218 <ol>
219 <li>
220 Add a section to your extension's <code>manifest.json</code>
221 that describes where to find the plugin,
222 along with other properties about it:
223 <pre>{
224 "name": "My extension",
225 ...
226 <b>"plugins": [
227 { "path": "content_plugin.dll", "public": true },
228 { "path": "extension_plugin.dll" }
229 ]</b>,
230 ...
231 }</pre>
232 <p>
233 The "path" property specifies the path to your plugin,
234 relative to the manifest file.
235 The "public" property specifies whether
236 your plugin can be accessed by regular web pages;
237 the default is false,
238 meaning only your extension can load the plugin.
239 </p>
240 </li>
241 <li>
242 Create an HTML file that loads your plugin by mime-type.
243 Assuming your mime-type is "application/x-my-extension":
244 <pre>&lt;embed type="application/x-my-extension" id="pluginId"&gt;
245 &lt;script&gt;
246 var plugin = document.getElementById("pluginId");
247 var result = plugin.myPluginMethod(); // call a method in your plugin
248 console.log("my plugin returned: " + result);
249 &lt;/script&gt;</pre>
250 <p>
251 This can be inside a background page
252 or any other HTML page used by your extension.
253 If your plugin is "public",
254 you can even use a content script to programmatically
255 insert your plugin into a web page.
256 </p>
257 </li>
258 </ol>
259 <h2 id="security-considerations">Security considerations</h2>
260 <p>
261 Including an NPAPI plugin in your extension is dangerous because plugins
262 have unrestricted access to the local machine. If your plugin contains
263 a vulnerability, an attacker might be able to exploit that vulnerability
264 to install malicious software on the user's machine. Instead, avoid
265 including an NPAPI plugin whenever possible.
266 </p>
267 <p>
268 Marking your NPAPI plugin "public" increase the attack surface of your
269 extension because the plugin is exposed directly to web content, making
270 it easier for a malicious web site to manipulate your plugin. Instead,
271 avoid making your NPAPI plugin public whenever possible.
272 </p>
273 </div>
274 <!-- API PAGE -->
275 <!-- /apiPage -->
276 </div> <!-- /gc-pagecontent -->
277 </div> <!-- /g-section -->
278 </div> <!-- /codesiteContent -->
279 <div id="gc-footer" --="">
280 <div class="text">
281 <p>
282 Except as otherwise <a href="http://code.google.com/policies.html#restrictions ">noted</a>,
283 the content of this page is licensed under the <a rel="license" href="http://c reativecommons.org/licenses/by/3.0/">Creative Commons
284 Attribution 3.0 License</a>, and code samples are licensed under the
285 <a rel="license" href="http://code.google.com/google_bsd_license.html">BSD Lic ense</a>.
286 </p>
287 <p>
288 ©2011 Google
289 </p>
290 <!-- begin analytics -->
291 <script src="https://www.google-analytics.com/urchin.js" type="text/javascript"> </script>
292 <script src="https://www.google-analytics.com/ga.js" type="text/javascript"></sc ript>
293 <script type="text/javascript">
294 // chrome doc tracking
295 try {
296 var engdocs = _gat._getTracker("YT-10763712-2");
297 engdocs._trackPageview();
298 } catch(err) {}
299 // code.google.com site-wide tracking
300 try {
301 _uacct="UA-18071-1";
302 _uanchor=1;
303 _uff=0;
304 urchinTracker();
305 }
306 catch(e) {/* urchinTracker not available. */}
307 </script>
308 <!-- end analytics -->
309 </div>
310 </div> <!-- /gc-footer -->
311 </div> <!-- /gc-container -->
312 </body></html>
OLDNEW
« no previous file with comments | « chrome/common/extensions/docs/notifications.html ('k') | chrome/common/extensions/docs/omnibox.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698