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

Side by Side Diff: chrome/browser/resources/plugins.html

Issue 2811037: Group plugins in about:plugins and show update link for out-of-date ones. (Closed) Base URL: git://codf21.jail.google.com/chromium.git
Patch Set: Fix some HTML issues. Created 10 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 unified diff | Download patch
« no previous file with comments | « chrome/browser/plugin_updater_unittest.cc ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 <!DOCTYPE HTML> 1 <!DOCTYPE HTML>
2 <html i18n-values="dir:textdirection;"> 2 <html i18n-values="dir:textdirection;">
3 <head> 3 <head>
4 <meta charset="utf-8"> 4 <meta charset="utf-8">
5 <title i18n-content="pluginsTitle"></title> 5 <title i18n-content="pluginsTitle"></title>
6 <style> 6 <style>
7 7
8 body { 8 body {
9 margin: 10px; 9 margin: 10px;
10 min-width: 47em; 10 min-width: 47em;
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 padding-top: 0.8em; 155 padding-top: 0.8em;
156 width: 100%; 156 width: 100%;
157 } 157 }
158 158
159 html[dir=rtl] .tmi-mode { 159 html[dir=rtl] .tmi-mode {
160 padding-right: 10px; 160 padding-right: 10px;
161 padding-left: 0; 161 padding-left: 0;
162 } 162 }
163 163
164 .plugin-disabled > td { 164 .plugin-disabled > td {
165 background: url('gray.png') 0px 0px; 165 background-color: #f0f0f0;
166 color: #a0a0a0; 166 color: #a0a0a0;
167 padding-bottom: 4px; 167 padding-bottom: 4px;
168 padding-top: 5px; 168 padding-top: 5px;
169 } 169 }
170 170
171 .plugin-enabled > td { 171 .plugin-enabled > td {
172 padding-bottom: 4px; 172 padding-bottom: 4px;
173 padding-top: 5px; 173 padding-top: 5px;
174 } 174 }
175 175
176 .plugin-file-disabled {
177 background-color: #f0f0f0;
178 color: #a0a0a0;
179 padding-top: 5px;
180 padding-bottom: 5px;
181 }
182
183 .plugin-file-enabled {
184 padding-top: 5px;
185 padding-bottom: 5px;
186 }
187
176 .plugin { 188 .plugin {
177 border-bottom: 1px solid #cdcdcd; 189 border-bottom: 1px solid #cdcdcd;
178 } 190 }
179 191
192 .critical {
193 color: red;
194 }
195
180 /* Indent the text related to each plug-in. */ 196 /* Indent the text related to each plug-in. */
181 .plugin-text { 197 .plugin-text {
182 padding-left: 5px; 198 padding-left: 5px;
183 } 199 }
184 200
185 html[dir=rtl] .plugin-text { 201 html[dir=rtl] .plugin-text {
186 padding-right: 5px; 202 padding-right: 5px;
187 padding-left: 0; 203 padding-left: 0;
188 } 204 }
189 205
190 .plugin-name { 206 .plugin-name {
191 font-weight: bold; 207 font-weight: bold;
192 } 208 }
193 209
194 .no-plugins { 210 .no-plugins {
195 margin: 6em 0 0; 211 margin: 6em 0 0;
196 text-align: center; 212 text-align: center;
197 font-size: 1.2em; 213 font-size: 1.2em;
198 } 214 }
199 215
200 /* Use tables for layout, so eliminate extra spacing. */ 216 /* Use tables for layout, so eliminate extra spacing. */
201 .plugin-details table { 217 .plugin-details table {
202 -webkit-border-horizontal-spacing: 0; 218 -webkit-border-horizontal-spacing: 0;
203 -webkit-border-vertical-spacing: 0; 219 -webkit-border-vertical-spacing: 0;
204 } 220 }
205 221
222 .plugin-details {
223 -webkit-padding-start: 1em;
224 }
225
206 /* Separate the inital line, Description, Location, and MIME Types lines. */ 226 /* Separate the inital line, Description, Location, and MIME Types lines. */
207 .plugin-details > div { 227 .plugin-details > div {
208 padding-top: 0.1em 228 padding-top: 0.1em
209 } 229 }
210 230
211 /* Align rows of tables along the top. */ 231 /* Align rows of tables along the top. */
212 .plugin-details tr { 232 .plugin-details tr {
213 vertical-align: top; 233 vertical-align: top;
214 } 234 }
215 235
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
263 </style> 283 </style>
264 <script> 284 <script>
265 285
266 /** 286 /**
267 * This variable structure is here to document the structure that the template 287 * This variable structure is here to document the structure that the template
268 * expects to correctly populate the page. 288 * expects to correctly populate the page.
269 */ 289 */
270 var pluginDataFormat = { 290 var pluginDataFormat = {
271 'plugins': [ 291 'plugins': [
272 { 292 {
273 'path': '/blahblah/blahblah/MyCrappyPlugin.plugin', 293 'name': 'Group Name',
274 'name': 'MyCrappyPlugin', 294 'description': 'description',
275 'version': '1.2.3', 295 'version': 'version',
276 'description': 'My crappy plugin', 296 'update_url': 'http://update/',
277 'mimeTypes': [ 297 'critical': true,
278 { 'description': 'Foo Media', 298 'enabled': true,
279 'fileExtensions': [ 'foo' ], 299 'plugin_files': [
280 'mimeType': 'application/x-my-foo' }, 300 {
281 { 'description': 'Bar Stuff', 301 'path': '/blahblah/blahblah/MyCrappyPlugin.plugin',
282 'fileExtensions': [ 'bar','baz' ], 302 'name': 'MyCrappyPlugin',
283 'mimeType': 'application/my-bar' } 303 'version': '1.2.3',
284 ], 304 'description': 'My crappy plugin',
285 'enabled': true 305 'mimeTypes': [
286 }, 306 { 'description': 'Foo Media',
287 { 307 'fileExtensions': [ 'foo' ],
288 'path': '/foobar/baz/YourGreatPlugin.plugin', 308 'mimeType': 'application/x-my-foo' },
289 'name': 'YourGreatPlugin', 309 { 'description': 'Bar Stuff',
290 'version': '4.5', 310 'fileExtensions': [ 'bar','baz' ],
291 'description': 'Your great plugin', 311 'mimeType': 'application/my-bar' }
292 'mimeTypes': [ 312 ],
293 { 'description': 'Baz Stuff', 313 'enabled': true
294 'fileExtensions': [ 'baz' ], 314 },
295 'mimeType': 'application/x-your-baz' } 315 {
296 ], 316 'path': '/foobar/baz/YourGreatPlugin.plugin',
297 'enabled': false 317 'name': 'YourGreatPlugin',
318 'version': '4.5',
319 'description': 'Your great plugin',
320 'mimeTypes': [
321 { 'description': 'Baz Stuff',
322 'fileExtensions': [ 'baz' ],
323 'mimeType': 'application/x-your-baz' }
324 ],
325 'enabled': false
326 }
327 ]
298 } 328 }
299 ] 329 ]
300 }; 330 };
301 331
302 /** 332 /**
303 * Takes the |pluginsData| input argument which represents data about the 333 * Takes the |pluginsData| input argument which represents data about the
304 * currently installed/running plugins and populates the html jstemplate with 334 * currently installed/running plugins and populates the html jstemplate with
305 * that data. It expects an object structure like the above. 335 * that data. It expects an object structure like the above.
306 * @param {Object} pluginsData Detailed info about installed plugins 336 * @param {Object} pluginsData Detailed info about installed plugins
307 */ 337 */
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
368 document.getElementById('expand').style.display = 398 document.getElementById('expand').style.display =
369 tmiModeExpanded ? 'none' : 'inline'; 399 tmiModeExpanded ? 'none' : 'inline';
370 bodyContainer.style.visibility = 'visible'; 400 bodyContainer.style.visibility = 'visible';
371 body.className = tmiModeExpanded ? 401 body.className = tmiModeExpanded ?
372 'showTmiModeInitial' : 'hideTmiModeInitial'; 402 'showTmiModeInitial' : 'hideTmiModeInitial';
373 } 403 }
374 404
375 /** 405 /**
376 * Handles a 'enable' or 'disable' button getting clicked. 406 * Handles a 'enable' or 'disable' button getting clicked.
377 */ 407 */
378 function handleEnablePlugin(node, enable) { 408 function handleEnablePlugin(node, enable, isGroup) {
379 // Tell the C++ PluginsDOMHandler to enable/disable the plugin. 409 // Tell the C++ PluginsDOMHandler to enable/disable the plugin.
380 chrome.send('enablePlugin', [node.pluginPath, String(enable)]); 410 chrome.send('enablePlugin', [String(node.path), String(enable),
411 String(isGroup)]);
381 requestPluginsData(); 412 requestPluginsData();
382 } 413 }
383 414
384 // Keeps track of whether details have been made visible (expanded) or not. 415 // Keeps track of whether details have been made visible (expanded) or not.
385 var tmiModeExpanded = false; 416 var tmiModeExpanded = false;
386 417
387 /* 418 /*
388 * Toggles visibility of details. 419 * Toggles visibility of details.
389 */ 420 */
390 function toggleTmiMode() { 421 function toggleTmiMode() {
391 tmiModeExpanded = !tmiModeExpanded; 422 tmiModeExpanded = !tmiModeExpanded;
392 423
393 document.getElementById('collapse').style.display = 424 document.getElementById('collapse').style.display =
394 tmiModeExpanded ? 'inline' : 'none'; 425 tmiModeExpanded ? 'inline' : 'none';
395 document.getElementById('expand').style.display = 426 document.getElementById('expand').style.display =
396 tmiModeExpanded ? 'none' : 'inline'; 427 tmiModeExpanded ? 'none' : 'inline';
397 428
398 document.body.className = 429 document.body.className =
399 tmiModeExpanded ? 'showTmiMode' : 'hideTmiMode'; 430 tmiModeExpanded ? 'showTmiMode' : 'hideTmiMode';
400 } 431 }
401 432
402 /** 433 /**
403 * Determines whether a plugin's version should be displayed. 434 * Determines whether a plugin's version should be displayed.
404 */ 435 */
405 function shouldDisplayPluginVersion(plugin) { 436 function shouldDisplayPluginVersion(plugin) {
406 return !!plugin.version; 437 return !!plugin.version && plugin.version != '0';
407 } 438 }
408 439
409 /** 440 /**
410 * Determines whether a plugin's description should be displayed. 441 * Determines whether a plugin's description should be displayed.
411 */ 442 */
412 function shouldDisplayPluginDescription(plugin) { 443 function shouldDisplayPluginDescription(plugin) {
413 // Only display the description if it's not blank and if it's not just the 444 // Only display the description if it's not blank and if it's not just the
414 // name, version, or combination thereof. 445 // name, version, or combination thereof.
415 return plugin.description && 446 return plugin.description &&
416 plugin.description != plugin.name && 447 plugin.description != plugin.name &&
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
473 504
474 <div jsdisplay="plugins.length > 0"> 505 <div jsdisplay="plugins.length > 0">
475 <div class="plugin" jsselect="plugins"> 506 <div class="plugin" jsselect="plugins">
476 <table width="100%" cellpadding="2" cellspacing="0"> 507 <table width="100%" cellpadding="2" cellspacing="0">
477 <tr jsvalues= 508 <tr jsvalues=
478 ".className:enabled ? 'plugin-enabled' : 'plugin-disabled'"> 509 ".className:enabled ? 'plugin-enabled' : 'plugin-disabled'">
479 <td valign="top"> 510 <td valign="top">
480 <div class="plugin-text"> 511 <div class="plugin-text">
481 <div> 512 <div>
482 <span class="plugin-name" dir="ltr" 513 <span class="plugin-name" dir="ltr"
483 jscontent="name">PLUGIN NAME</span> 514 jscontent="name">NAME</span>
515 <span jsdisplay="plugin_files.length > 1"
516 jscontent="'(' + plugin_files.length +' files)'">(x)</span>
484 <span jsdisplay="shouldDisplayPluginVersion($this)"> 517 <span jsdisplay="shouldDisplayPluginVersion($this)">
485 - <span i18n-content="pluginVersion">VERSION</span> 518 - <span i18n-content="pluginVersion">VERSION</span>
486 <span dir="ltr" jscontent="version">x.x.x.x</span> 519 <span jsvalues=".className:critical? 'critical': ''"
520 dir="ltr" jscontent="version">x.x.x.x</span>
487 </span> 521 </span>
522 <a jsdisplay="critical" jsvalues=".href:update_url"
523 i18n-content="pluginDownload">DOWNLOAD UPDATE</a>
488 <span jsdisplay="!enabled" 524 <span jsdisplay="!enabled"
489 i18n-content="pluginDisabled">(DISABLED)</span> 525 i18n-content="pluginDisabled">(DISABLED)</span>
526 <div jsdisplay="shouldDisplayPluginDescription($this)">
527 <span dir="ltr" jsvalues=".innerHTML:description">
528 </div>
490 </div> 529 </div>
491 <div class="plugin-details"> 530 <div jsselect="plugin_files" class="plugin-details">
492 <div><table><tr jsdisplay="shouldDisplayPluginDescription($this)">
493 <td class="plugin-details-label"
494 i18n-content="pluginDescription">DESCRIPTION:</td>
495 <td><span dir="ltr" jsvalues=".innerHTML:description"></td>
496 </tr></table></div>
497 <div><table><tr>
498 <td class="plugin-details-label"
499 i18n-content="pluginPath">PATH:</td>
500 <td><span dir="ltr" jscontent="path"></span></td>
501 </tr></table></div>
502 <div class="showInTmiMode"> 531 <div class="showInTmiMode">
503 <table><tr jsdisplay="mimeTypes.length > 0"> 532 <div jsvalues=
504 <td class="plugin-details-label" 533 ".className:enabled ? 'plugin-file-enabled' : 'plugin-file-dis abled'">
505 i18n-content="pluginMimeTypes">MIME_TYPES:</td> 534 <div><table><tr>
506 <td><table width="100%" class="mime-types"> 535 <td class="plugin-details-label"
507 <tr class="header"> 536 i18n-content="pluginName">NAME:</td>
508 <td i18n-content="pluginMimeTypesMimeType" 537 <td><span dir="ltr" jscontent="name">NAME</span></td>
509 >MIME type</td> 538 </tr></table></div>
510 <td i18n-content="pluginMimeTypesDescription" 539 <div><table><tr jsdisplay="shouldDisplayPluginDescription($thi s)">
511 >DESCRIPTION</td> 540 <td class="plugin-details-label"
512 <td i18n-content="pluginMimeTypesFileExtensions" 541 i18n-content="pluginDescription">DESCRIPTION:</td>
513 >FILE_EXTENSIONS</td> 542 <td><span dir="ltr" jsvalues=".innerHTML:description"></td>
514 </tr> 543 </tr></table></div>
515 <tr jsselect="mimeTypes"> 544 <div><table><tr>
516 <td><span dir="ltr" 545 <td class="plugin-details-label"
517 jscontent="mimeType"></span></td> 546 i18n-content="pluginVersion">VERSION:</td>
518 <td><span dir="ltr" 547 <td><span dir="ltr" jscontent="version">x.x.x.x</span></td>
519 jsvalues=".innerHTML:description"></span></td> 548 </tr></table></div>
520 <td><table jsdisplay="fileExtensions.length > 0" 549 <div><table><tr>
521 class="hlisting"> 550 <td class="plugin-details-label"
522 <tr><td jsselect="fileExtensions"> 551 i18n-content="pluginPriority">PRIORITY:</td>
523 <span dir="ltr" jscontent="'.' + $this"> 552 <td><span dir="ltr" jscontent="priority">x</span></td>
524 </td></tr> 553 </tr></table></div>
525 </table></td> 554 <div><table><tr>
526 </tr> 555 <td class="plugin-details-label"
527 </table></td> 556 i18n-content="pluginPath">PATH:</td>
528 </tr></table> 557 <td><span dir="ltr" jscontent="path"></span></td>
558 </tr></table></div>
559 <div><table><tr>
560 <td class="plugin-details-label">&nbsp;</td>
561 <td>
562 <span jsdisplay="!enabled"
563 i18n-content="pluginDisabled">(DISABLED)</span>
564 <span>
565 <a
566 jsvalues=".path:path"
567 jsdisplay="enabled"
568 onclick="handleEnablePlugin(this, false, false)"
569 href="javascript:void(0);"
570 i18n-content="disable"
571 >DISABLE</a>
572 <a
573 jsvalues=".path:path"
574 jsdisplay="!enabled"
575 onclick="handleEnablePlugin(this, true, false)"
576 href="javascript:void(0);"
577 i18n-content="enable"
578 >ENABLE</a>
579 </span>
580 </td>
581 </tr></table></div>
582 <table><tr jsdisplay="mimeTypes.length > 0">
583 <td class="plugin-details-label"
584 i18n-content="pluginMimeTypes">MIME_TYPES:</td>
585 <td><table width="100%" class="mime-types">
586 <tr class="header">
587 <td i18n-content="pluginMimeTypesMimeType"
588 >MIME type</td>
589 <td i18n-content="pluginMimeTypesDescription"
590 >DESCRIPTION</td>
591 <td i18n-content="pluginMimeTypesFileExtensions"
592 >FILE_EXTENSIONS</td>
593 </tr>
594 <tr jsselect="mimeTypes">
595 <td><span dir="ltr"
596 jscontent="mimeType"></span></td>
597 <td><span dir="ltr"
598 jsvalues=".innerHTML:description"></span></td>
599 <td><table jsdisplay="fileExtensions.length > 0"
600 class="hlisting">
601 <tr><td jsselect="fileExtensions">
602 <span dir="ltr" jscontent="'.' + $this">
603 </td></tr>
604 </table></td>
605 </tr>
606 </table></td>
607 </tr></table>
608 </div>
529 </div> 609 </div>
530 </div> 610 </div>
531 </div> 611 </div>
532
533 <div class="plugin-actions"> 612 <div class="plugin-actions">
534 <span> 613 <span>
535 <a 614 <a
536 jsvalues=".pluginPath:path" 615 jsvalues=".path:name"
537 jsdisplay="enabled" 616 jsdisplay="enabled"
538 onclick="handleEnablePlugin(this, false)" 617 onclick="handleEnablePlugin(this, false, true)"
539 href="javascript:void();" 618 href="javascript:void(0);"
540 i18n-content="disable" 619 i18n-content="disable"
541 >DISABLE</a> 620 >DISABLE</a>
542 <a 621 <a
543 jsvalues=".pluginPath:path" 622 jsvalues=".path:name"
544 jsdisplay="!enabled" 623 jsdisplay="!enabled"
545 onclick="handleEnablePlugin(this, true)" 624 onclick="handleEnablePlugin(this, true, true)"
546 href="javascript:void();" 625 href="javascript:void(0);"
547 i18n-content="enable" 626 i18n-content="enable"
548 >ENABLE</a> 627 >ENABLE</a>
549 </span> 628 </span>
550 </div> 629 </div>
551 </td> 630 </td>
552 </tr> 631 </tr>
553 </table> 632 </table>
554 </div> 633 </div>
555 </div> 634 </div>
556 </div> 635 </div>
557 </div> 636 </div>
558 </div> 637 </div>
559 </body> 638 </body>
560 </html> 639 </html>
OLDNEW
« no previous file with comments | « chrome/browser/plugin_updater_unittest.cc ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698