| <!-- |
| The fuzzer/res/fuzzer.js file must be included before this file. |
| |
| This in an HTML Import-able file that contains the definition |
| of the following elements: |
| |
| <fuzzer-collapse-file-sk> |
| |
| This element will poll /json/list |
| |
| To use this file import it: |
| |
| <link href="/res/imp/fuzzer-collapse-file-sk.html" rel="import" /> |
| |
| Usage: |
| |
| <fuzzer-collapse-file-sk></fuzzer-collapse-file-sk> |
| |
| Properties: |
| file - The FileDetails object. Expected to have the following attributes: |
| fileName: String, |
| count: Number, |
| byFunction: Array of FunctionDetail objects. See fuzzer-collapse-function-sk.html for schema. |
| |
| expand: String, which should be "true" if the element and any children should start expanded. |
| |
| Methods: |
| setFile(file) - Programmatically set the FileDetails object. |
| |
| Events: |
| None. |
| --> |
| <link rel="import" href="/res/common/imp/details-summary.html"> |
| <link rel="import" href="/res/imp/bower_components/iron-collapse/iron-collapse.html"> |
| <link rel="import" href="/res/imp/bower_components/iron-icons/iron-icons.html"> |
| <link rel="import" href="fuzzer-collapse-function-sk.html" /> |
| <dom-module id="fuzzer-collapse-file-sk"> |
| <template> |
| <style> |
| #file { |
| padding: 20px; |
| margin: 10px; |
| border-radius: 10px; |
| background-color: #F5F5F5; |
| color: #000000; |
| display:block; |
| } |
| |
| .func { |
| padding: 20px; |
| border-radius: 10px; |
| background-color: #E5E5E5; |
| color: #000000; |
| display:block; |
| } |
| |
| h3 { |
| display:inline; |
| margin-top: 0px; |
| } |
| |
| ul { |
| list-style-type: none; |
| } |
| </style> |
| <details-sk id="file" open="{{expand}}"> |
| <summary-sk> |
| <h3> |
| <a href$="{{_getDetailsLink(category, file)}}">{{file.fileName}}</a> |
| -- {{file.count}} crash-causing fuzzes |
| </h3> |
| </summary-sk> |
| <template is="dom-if" if="[[expand]]"> |
| <template is="dom-repeat" items="{{file.byFunction}}" as="func" sort="_byCount"> |
| <fuzzer-collapse-function-sk |
| class="func-group" |
| func="{{func}}" |
| details-base="{{_getDetailsLink(category, file)}}" |
| expand="[[expand]]" ></fuzzer-collapse-function-sk> |
| </template> |
| </template> |
| </details-sk> |
| </template> |
| <script> |
| Polymer({ |
| is: 'fuzzer-collapse-file-sk', |
| |
| properties: { |
| file: { //expected to be provided |
| type: Object, |
| value: function() { |
| return {}; |
| }, |
| }, |
| category: { |
| type: String, |
| value: "", |
| }, |
| // We can use one-way [[]] bindings to initialize all of the details-sk, |
| // but keep their open states untangled. |
| expand: { |
| type: Boolean, |
| value: false, |
| }, |
| }, |
| |
| setFile: function(file) { |
| this.file = file; |
| }, |
| |
| _byCount: function(a, b) { |
| // Higher counts come first |
| return b.count - a.count; |
| }, |
| |
| _getDetailsLink: function(category, file, func) { |
| if (!file) { |
| return "#"; |
| } |
| var base = fuzzer.getLinkToDetails("/category/"+category, "file", file.fileName); |
| if (func) { |
| base = fuzzer.getLinkToDetails(base, "func", func.functionName); |
| } |
| return base; |
| } |
| }); |
| </script> |
| </dom-module> |