first commit
commit
b8252e54b1
@ -0,0 +1,36 @@
|
|||||||
|
let categories = {
|
||||||
|
collect: {
|
||||||
|
title: "Collection of Data",
|
||||||
|
keywords: ["data", "collect"],
|
||||||
|
},
|
||||||
|
third: {
|
||||||
|
title: "Usage of Data",
|
||||||
|
keywords: ["share", "third", "companies", "party"],
|
||||||
|
},
|
||||||
|
location: {
|
||||||
|
title: "Location",
|
||||||
|
keywords: ["location", "position", "coordinate"],
|
||||||
|
},
|
||||||
|
permission: {
|
||||||
|
title: "Permission and Consent",
|
||||||
|
keywords: ["permission", "consent"],
|
||||||
|
},
|
||||||
|
upload: {
|
||||||
|
title: "Uploaded Contents",
|
||||||
|
keywords: ["upload", "content"],
|
||||||
|
},
|
||||||
|
suspension: {
|
||||||
|
title: "Suspension of the account",
|
||||||
|
keywords: ["suspension", "termination", "ban", "suspend", "disable", "account", "breached"],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
let selected = ["collect", "third", "location"];
|
||||||
|
|
||||||
|
chrome.runtime.onInstalled.addListener(() => {
|
||||||
|
chrome.storage.sync.set({ selected, categories });
|
||||||
|
console.log(
|
||||||
|
"The default selected categories are:",
|
||||||
|
selected.map((slug) => categories[slug].title).join(", ")
|
||||||
|
);
|
||||||
|
});
|
Binary file not shown.
After Width: | Height: | Size: 2.4 KiB |
Binary file not shown.
After Width: | Height: | Size: 342 B |
Binary file not shown.
After Width: | Height: | Size: 610 B |
Binary file not shown.
After Width: | Height: | Size: 889 B |
@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
"name": "Parse Policies",
|
||||||
|
"description": "An extension to parse privacy policies",
|
||||||
|
"version": "0.1",
|
||||||
|
"manifest_version": 3,
|
||||||
|
"background": {
|
||||||
|
"service_worker": "background.js"
|
||||||
|
},
|
||||||
|
"permissions": [
|
||||||
|
"storage",
|
||||||
|
"activeTab",
|
||||||
|
"scripting"
|
||||||
|
],
|
||||||
|
"action": {
|
||||||
|
"default_popup": "popup.html",
|
||||||
|
"default_icon": {
|
||||||
|
"16": "/images/icon_16.png",
|
||||||
|
"32": "/images/icon_32.png",
|
||||||
|
"48": "/images/icon_48.png",
|
||||||
|
"128": "/images/icon_128.png"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"icons": {
|
||||||
|
"16": "/images/icon_16.png",
|
||||||
|
"32": "/images/icon_32.png",
|
||||||
|
"48": "/images/icon_48.png",
|
||||||
|
"128": "/images/icon_128.png"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,33 @@
|
|||||||
|
body {
|
||||||
|
width: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
height: 30px;
|
||||||
|
width: 30px;
|
||||||
|
outline: none;
|
||||||
|
border-radius: 2px;
|
||||||
|
cursor: pointer;
|
||||||
|
border: 1px solid currentColor;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
button:active {
|
||||||
|
background-color: currentColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
button.current {
|
||||||
|
box-shadow: 0 0 0 2px white,
|
||||||
|
0 0 0 4px black;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1, h2 {
|
||||||
|
font-size: 1rem;
|
||||||
|
margin: 8px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
list-style: none;
|
||||||
|
}
|
@ -0,0 +1,15 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<link rel="stylesheet" href="popup.css" />
|
||||||
|
<script src="popup.js" defer></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Parse Policies</h1>
|
||||||
|
<button id="activate"></button>
|
||||||
|
<div>
|
||||||
|
<h2>Selected categories</h2>
|
||||||
|
<ul id="selected-list"></ul>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,46 @@
|
|||||||
|
// Sync the selected categories in the popup
|
||||||
|
|
||||||
|
chrome.storage.sync.get(["categories", "selected"], (result) => {
|
||||||
|
let categories = result.categories;
|
||||||
|
let selected = result.selected;
|
||||||
|
listCategories(categories, selected);
|
||||||
|
});
|
||||||
|
|
||||||
|
const listCategories = function (categories, selected) {
|
||||||
|
let selectedList = document.getElementById("selected-list");
|
||||||
|
for (const category of selected) {
|
||||||
|
item = document.createElement("li");
|
||||||
|
item.innerHTML = categories[category].title;
|
||||||
|
selectedList.appendChild(item);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const activate = document.getElementById("activate");
|
||||||
|
activate.addEventListener("click", async () => {
|
||||||
|
let [tab] = await chrome.tabs.query({ active: true, currentWindow: true });
|
||||||
|
|
||||||
|
chrome.scripting.executeScript({
|
||||||
|
target: { tabId: tab.id },
|
||||||
|
function: highlightSelected,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
function highlightSelected() {
|
||||||
|
chrome.storage.sync.get(["categories", "selected"], (result) => {
|
||||||
|
for (category of result.selected) {
|
||||||
|
result.categories[category].keywords.forEach((keyword) => {
|
||||||
|
let findings = contains("*", keyword);
|
||||||
|
if (findings.length) {
|
||||||
|
console.log(findings);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
function contains(selector, text) {
|
||||||
|
var elements = document.querySelectorAll(selector);
|
||||||
|
return Array.prototype.filter.call(elements, function (element) {
|
||||||
|
return RegExp(text).test(element.textContent);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Document</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
Tempor dolore voluptate aute velit. Anim laboris deserunt ut Lorem sunt. Occaecat
|
||||||
|
consectetur ex proident culpa consectetur aliqua minim nulla consequat amet enim. Ipsum
|
||||||
|
excepteur fugiat reprehenderit laboris sint.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>Location tempor eheh ahah</p>
|
||||||
|
|
||||||
|
<p>Usage of data</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
Reference in New Issue