| <!-- |
| This in an HTML Import-able file that contains the definition |
| of the following elements: |
| |
| <fuzzer-widget-sk> |
| |
| This element occasionally polls the fuzzer, displaying the number of bad fuzzes. |
| |
| To use this file import it: |
| |
| <link href="/res/imp/fuzzer-widget-sk.html" rel="import" /> |
| |
| Usage: |
| |
| <fuzzer-widget-sk reload="60"></fuzzer-widget-sk> |
| |
| Properties: |
| // input |
| reload: Number, How often (in seconds) to reload the fuzzer status. |
| --> |
| |
| <link rel="import" href="/res/common/imp/styles-sk.html"> |
| <link rel="import" href="/res/common/imp/timer-sk.html"> |
| |
| |
| <dom-module id="fuzzer-widget-sk"> |
| <template> |
| <style include="styles-sk"> |
| a { |
| color: var(--status-sk-main-text-color); |
| text-decoration: none; |
| text-transform: none; |
| } |
| a:hover { |
| text-decoration: underline; |
| } |
| .table { |
| width: 100%; |
| } |
| .td { |
| padding: 5px; |
| } |
| .value { |
| background-color: var(--status-sk-icon-color); |
| border-radius: 3px; |
| padding: 4px; |
| margin: 5px; |
| } |
| .report { |
| font-size: 0.85em; |
| } |
| </style> |
| |
| <timer-sk period="[[reload]]" on-trigger="_reload"></timer-sk> |
| |
| <template is="dom-if" if="[[_results.wasSucessful]]"> |
| <div class="table"> |
| <a href="https://fuzzer.skia.org" target="_blank" class="tr"> |
| <div class="td">High Priority</div> |
| <div class="td number"><span class="value">[[_results.high]]</span></div> |
| </a> |
| <a href="https://fuzzer.skia.org" target="_blank" class="tr"> |
| <div class="td">Medium Priority</div> |
| <div class="td number"><span class="value">[[_results.medium]]</span></div> |
| </a> |
| <a href$="[[_makeReportURL()]]" target="_blank" rel="noopener" class="tr report"> |
| Coverage Report |
| </a> |
| </div> |
| </template> |
| <template is="dom-if" if="[[!_results.wasSucessful]]"> |
| <div>Login to view fuzz counts</div> |
| </template> |
| |
| </template> |
| <script> |
| Polymer({ |
| is:'fuzzer-widget-sk', |
| |
| properties: { |
| // input |
| reload: { |
| type: Number, |
| value: 60, |
| }, |
| |
| _results: { |
| type: Object, |
| } |
| }, |
| |
| ready: function() { |
| this._reload(); |
| }, |
| |
| _makeReportURL: function() { |
| // Get the analysis from yesterday |
| var yesterday = new Date(new Date().getTime() - 24 * 60 * 60 * 1000); |
| // add 1 because in JS months are 0 indexed. |
| var month = (yesterday.getMonth() + 1); |
| if (month <= 9) { |
| month = "0" + month; |
| } |
| var day = yesterday.getDate(); |
| if (day <= 9) { |
| day = "0" + day; |
| } |
| var datestr = "" + yesterday.getFullYear() + month + day; |
| return "https://storage.googleapis.com/oss-fuzz-coverage/skia/reports/" + datestr + |
| "/linux/src/skia/report.html"; |
| }, |
| |
| _reload: function() { |
| console.log("Loading Fuzzer data..."); |
| sk.get("https://fuzzer.skia.org/json/fuzz-summary", true) |
| .then(JSON.parse) |
| .then(function(arr){ |
| let high = 0; |
| let medium = 0; |
| for (let f of arr) { |
| if (f.status === "stable") { |
| high += f.highPriorityCount; |
| medium += f.mediumPriorityCount; |
| } else { |
| high += f.highPriorityCount; |
| } |
| } |
| this._results = { |
| wasSucessful: true, |
| high: high, |
| medium: medium, |
| }; |
| }.bind(this)) |
| .catch(function(){ |
| this._results = {wasSucessful: false}; |
| }.bind(this)); |
| }, |
| |
| }); |
| </script> |
| </dom-module> |