Forked from
Thomas Rientjes / decentraleyes
291 commits behind, 19 commits ahead of the upstream repository.
-
Thomas Rientjes authoredThomas Rientjes authored
popup.js 8.38 KiB
/**
* Main Popup Page
* Belongs to Decentraleyes.
*
* @author Thomas Rientjes
* @since 2016-08-09
* @license MPL 2.0
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/.
*/
'use strict';
/**
* Initializations
*/
document.addEventListener('DOMContentLoaded', function () {
let i18nElements, saveButtonElement, blockMissingElement, domainWhitelistElement;
i18nElements = document.querySelectorAll('[data-i18n-content]');
i18nElements.forEach(function (i18nElement) {
let i18nMessageName = i18nElement.getAttribute('data-i18n-content');
i18nElement.innerHTML = chrome.i18n.getMessage(i18nMessageName);
});
chrome.storage.local.get('amountInjected', function (items) {
let amountInjected = items.amountInjected || 0;
document.getElementById('injection-counter').innerHTML = amountInjected;
chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) {
chrome.runtime.getBackgroundPage(function (backgroundPage) {
let injections, injectionOverview;
injections = backgroundPage.stateManager.tabs[tabs[0].id].injections;
injectionOverview = {};
for (let injection in injections) {
let injectionSource, libraryName;
injection = injections[injection];
injectionSource = injection.source;
injectionOverview[injectionSource] = injectionOverview[injectionSource] || [];
injectionOverview[injectionSource].push({
'path': injection.path,
'version': injection.version,
'source': injection.source
});
}
let listElement = document.createElement('ul');
listElement.setAttribute('class', 'list');
for (let injectionSource in injectionOverview) {
let cdn, listItemElement, badgeElement, badgeTextNode, cdnName, cdnNameTextNode, subListElement;
cdn = injectionOverview[injectionSource];
listItemElement = document.createElement('li');
listItemElement.setAttribute('class', 'list-item');
badgeElement = document.createElement('span');
badgeElement.setAttribute('class', 'badge');
badgeTextNode = document.createTextNode(cdn.length);
badgeElement.appendChild(badgeTextNode);
switch (injectionSource) {
case 'ajax.googleapis.com':
cdnName = 'Google Hosted Libraries';
break;
case 'ajax.aspnetcdn.com':
cdnName = 'Microsoft Ajax CDN';
break;
case 'ajax.microsoft.com':
cdnName = 'Microsoft Ajax CDN [Deprecated]';
break;
case 'cdnjs.cloudflare.com':
cdnName = 'CDNJS (Cloudflare)';
break;
case 'code.jquery.com':
cdnName = 'jQuery CDN (MaxCDN)';
break;
case 'cdn.jsdelivr.net':
cdnName = 'jsDelivr (MaxCDN)';
break;
case 'yastatic.net':
cdnName = 'Yandex CDN';
break;
case 'yandex.st':
cdnName = 'Yandex CDN [Deprecated]';
break;
case 'libs.baidu.com':
cdnName = 'Baidu CDN';
break;
case 'lib.sinaapp.com':
cdnName = 'Sina Public Resources';
break;
case 'upcdn.b0.upaiyun.com':
cdnName = 'UpYun Library';
break;
}
cdnNameTextNode = document.createTextNode(cdnName);
listItemElement.appendChild(badgeElement);
listItemElement.appendChild(cdnNameTextNode);
listElement.appendChild(listItemElement);
subListElement = document.createElement('ul');
subListElement.setAttribute('class', 'sub-list');
listElement.appendChild(subListElement);
cdn.forEach(function (injection) {
let subListItemElement, resourcePathDetails, resourceFilename, resourceName,
resourceNameTextNode, sideNoteElement, sideNoteTextNode;
subListItemElement = document.createElement('li');
subListItemElement.setAttribute('class', 'sub-list-item');
resourcePathDetails = injection.path.split('/');
resourceFilename = resourcePathDetails[resourcePathDetails.length - 1];
switch (resourceFilename) {
case 'angular.min.js.dec':
resourceName = 'AngularJS';
break;
case 'backbone-min.js.dec':
resourceName = 'Backbone.js';
break;
case 'dojo.js.dec':
resourceName = 'Dojo';
break;
case 'ember.min.js.dec':
resourceName = 'Ember.js';
break;
case 'ext-core.js.dec':
resourceName = 'Ext Core';
break;
case 'jquery.min.js.dec':
resourceName = 'jQuery';
break;
case 'jquery-ui.min.js.dec':
resourceName = 'jQuery UI';
break;
case 'modernizr.min.js.dec':
resourceName = 'Modernizr';
break;
case 'mootools-yui-compressed.js.dec':
resourceName = 'MooTools';
break;
case 'prototype.js.dec':
resourceName = 'Prototype';
break;
case 'scriptaculous.js.dec':
resourceName = 'Scriptaculous';
break;
case 'swfobject.js.dec':
resourceName = 'SWFObject';
break;
case 'underscore-min.js.dec':
resourceName = 'Underscore.js';
break;
case 'webfont.js.dec':
resourceName = 'Web Font Loader';
break;
}
resourceNameTextNode = document.createTextNode('- ' + resourceName);
subListItemElement.appendChild(resourceNameTextNode);
sideNoteElement = document.createElement('span');
sideNoteElement.setAttribute('class', 'side-note');
sideNoteTextNode = document.createTextNode(' v' + injection.version);
sideNoteElement.appendChild(sideNoteTextNode);
subListItemElement.appendChild(sideNoteElement);
subListElement.appendChild(subListItemElement);
});
}
if (Object.keys(injectionOverview).length > 0) {
let popupContentElement = document.getElementById('popup-content');
let injectionCounterElement = document.getElementById('injection-counter');
popupContentElement.insertBefore(listElement, injectionCounterElement);
}
});
});
});
document.getElementById('options-button').addEventListener('click', function () {
chrome.runtime.openOptionsPage();
});
});