From b8252e54b1cbeeb0e7fcc4ff368e49cc7cb56dbf Mon Sep 17 00:00:00 2001 From: "kam (from the studio)" Date: Wed, 18 May 2022 20:58:45 +0200 Subject: [PATCH] first commit --- .DS_Store | Bin 0 -> 6148 bytes background.js | 36 ++++++++++++++++++++++++++++++++++ images/icon_128.png | Bin 0 -> 2507 bytes images/icon_16.png | Bin 0 -> 342 bytes images/icon_32.png | Bin 0 -> 610 bytes images/icon_48.png | Bin 0 -> 889 bytes manifest.json | 29 ++++++++++++++++++++++++++++ popup.css | 33 +++++++++++++++++++++++++++++++ popup.html | 15 +++++++++++++++ popup.js | 46 ++++++++++++++++++++++++++++++++++++++++++++ test.html | 20 +++++++++++++++++++ 11 files changed, 179 insertions(+) create mode 100644 .DS_Store create mode 100644 background.js create mode 100644 images/icon_128.png create mode 100644 images/icon_16.png create mode 100644 images/icon_32.png create mode 100644 images/icon_48.png create mode 100644 manifest.json create mode 100644 popup.css create mode 100644 popup.html create mode 100644 popup.js create mode 100644 test.html diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..3b2dbf82ed6962e959f49ee682a42f0d1b8b3555 GIT binary patch literal 6148 zcmeHK-EPw`6h7X{mJC(&0%_yUH%MGmsMUZXA*85`i`^jw!3Cf#X-XSN?WjqqpexD^ zFR?uVufhxPAUptk{sAp5Ag&N%KGN}bY@g4Tza(}{M65qcxHgH5D{%rN)vELG+fL5_`BSAUgUP%PjQ~5McL_mW*eK0OIzEX?|XjJe-V!5JS?Mf zR`jFkGgW&OmE+jPkEP6h#8Lbt9nOzhS06}GMyVK1H91X&NO}G=6^Wepl-@V)Bz25C*n=g93PMhD_zq4HW-tP78{lnwQ+jonT<@-~;W@6auv|X|I z9nKKc6nPU)MJB}v?TXXXS_x?OQt3q{X^pXCin`8h7un}^_9;hJj-53JX8`WXlVKlL z7&|q_7;{Z1Tbbp{3I|nZ7f1p79($KB(3;&+odQmQKT|;M4;-#Auvi(?TL%h#1pqeC ztPQdHQBWLiF|b$}L=TJ^D$r1wy<#v!M?1H9fyK(8p%b&04`yd(_J+dr>=>WxbYg)) zS2_ip0(Av8O|_-Y|A)W6|JO;b<`i%W{8tLF#zA<{$CB*Xy0$oV)^hkUT$#$N3~CAr idmQUP9mRWaZRq1F00tH-gJ^-d9|0|cE1Uv { + chrome.storage.sync.set({ selected, categories }); + console.log( + "The default selected categories are:", + selected.map((slug) => categories[slug].title).join(", ") + ); +}); diff --git a/images/icon_128.png b/images/icon_128.png new file mode 100644 index 0000000000000000000000000000000000000000..6b7ecb005da2cbd261c216f395c34f940da874db GIT binary patch literal 2507 zcmV;+2{iVJP)UTt2dht0`TJeug}hZHU&+hr=Vx?`BeWk=NK(kj z>XSbY;D*u&D37bp9Faz$a+5-C3dstYdzPm{?p9@rI3&TcqF>=(>F>$ws*IP2NMJiY zMc7JzPckfx!5~tbq>vQtQus%bA~q3wk)T_O-{loXi2Ox@ZYw?-!aErBOYz$>Lr-G_ zcIBpMm$F>S6z;|@f+Il~{rAu$L&pO}TKFy6r4%1>gAQU4-}*X|p+m9380{R$@hz;g zYqXr`^6h1c7Q*(PU7R*mbjUJ;qh5lG>0pCpfluL)!C-*X(^H(BoWK~f7XH4JDsOLZ z3(50*{YiOwdBOAZ^Wt}&$qPA$c=}mw00zr}9fO9ULN6~bF&qw&B*{YAN@xU>hld9| zK0Ypt!vi@S7=a3dh9mt#>GP|rt9hEH^QPfFN2AfaFtnzdgA4)o5DXere({ETQTlt# zX0v(WeR^vI1`Q~`eA}}un}-U^Mz7$yE)b9r4A6k`udlD?udlE3w$Pv4i^SGc>oa~&);K7VixM-MX|k6Y#L_oV@EFhWBZI2hY! zkav4~JMTI-H#duCRoCB2Ck73W0ouaTJ+`^6uM3~mQIkO3I1LKrlRL$5Z6{s+XV3`v z?CSc2!+0QpxUg*R`;McyAb}Wpf1iE($P(6tvTos^DVRc7z^MGcabN@!h%mxJMYsO} z4w?f40kY9P20f9F5eJ4TEE%f`)3>hPp|D3J?jk0zAX5~A10PZO`@^~t4i=?2kg=!$ zy%^zB!x2MO{o_C{kST5+gTBKN28AhVk|=H*+kHF4@j!waq>7tz8Z=@Dr^OYzKn*Wo z6gP~nUk4Y)h>T#brTTY@n?={JgLNq~fXTM9zw9u81eO$UzkFSOpJ81VL&XsA*G0Ay zL%6+}^%}FnVxs|wVP?|t@v$O9iHRi-@ z@$Gj9)6wV!ETIcIUVUzOfCQGxXKr3pzB^dA%zLziI$rk%ss>=~Uqmh{@&S{{1OnDg zeYFW-mdU{>-Ly`+|A>3Oe*J124CYui18WapV42S^a7|8Oh5h>VYZ0WLot-Tz@#yGi zA^gtYegFP_@oxgy3*bWpp4MP_mckl#|EvZXLdw>y!a)=!mDZhJlnbd2jFJTzVJOTB&d7C>EJmmD7vHY ziC}8pg(awTQmgK?vp}-mE=@TD-88DuPbn28hi+^KWNa_U3JV#&#oV}(#=tGvs}VH6^LNZ~j1E70QayYl$5D1 z!yQZ%mnpwgn}G6Uu((ZJpa{2#`&$0+W$Q1jGaW)mnd&N{6u1o?Z!alLV0q9GgF$+M zF07Xe3DMh6IQO$|?zdM2J-~8Un89F-1@wsC{v3P6dK1|9G2?deLWJAJ-)$><*P1}< z-T>jAdl3!7^!L48Gvfeji{o)85j!|Csn7*##&(I~rXek!Xd~kF4MWrIQ5KBr>>`^ewzl7r351kW#nA{H;6V8qET{E%kw9C> z*c{BAxP8hHj<8xjzDpSN^s$S`9+5cUD`jK3w;Fj<^KNO*AA(9A?L8%(WQ!u&GrpE89^0hCUGBO8Ul@j z!rzsj+nGyLXem^7Dcp;PTj2$8q&zcv|AkQbE@ACD?IQL}W(XkKKZFU|RnZ}e)5)DC z;1-_pxq}`E>uiLMV9;<6q2-bxz;2!bXY&Ug64p_tbL$gCZ?H=;I9$mS8no~U+NB_u zGC{}R`u8yCcXu&GN89?kjM1-VAw`eeeI3T=wjrd5ir))X5-TfYWk$s}fWdNKn+)wz zIE4c_lS2F*Y}hflyY(Hy9#wo@m2rrOQ&_>QXy?n(_K*zA!5fyTbzM2XXRm88Si0Gy zkkgg8QUvFOb1e5$d|rM2hZfTX1K0(P;Gfl}S;?Rx=AHkSS3W6kmG4w|tChWr{{b3t V*2Z{^oc{m-002ovPDHLkV1j$6nlJzW literal 0 HcmV?d00001 diff --git a/images/icon_16.png b/images/icon_16.png new file mode 100644 index 0000000000000000000000000000000000000000..08cde15e473181af556f81f33fd3902568b53dc9 GIT binary patch literal 342 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP>``W z$lZxy-8q?;Kn_c~qpu?a!^VE@KZ&eB{%cPc$B+ufrNPm>hYfhPv?&OjNlCqAlqs3Q z6QtHEz_BoZE$+?DS+iG#ZkbyW|M7JV-vLSI)HOO&mz_K65wbzE0oedHfDK>+xPlJugr!i1DJPfCj-%a2a4)=r3nzsY60;VD+|O|5oabw;-}N8jW85g zgS7@HVx9P?;E?XQz#imLm_ir%QZQsf3?0bTGoO-n6R?-2Ci*PIs&^=&rGX+=bec|^ z4r=sk0oPb@V!xrk-ri%k+mQ=(T~nH-wB2qgiXzIgthKqoeL^**_)`wOa@}_{AWbB# zZP=W2&>RD_-ya!Q@o|QXEtj(*UCt|OnyCAy2Y-)jK*~+vED#4kA?r632#A>Qe1?wz zaNuo~tC*6+{GOl~ZO}N_8a`Tt$iQRhQc)CS1NR9k%d(FaM}jK}8$Pq)cDt#jR{Nkv zvKBP$c;5y=%2f<``+b4-PUEZFSM-(s|1rwnj+Rz@jxnl{<2fE>0X(12axSn3c?=}4 zTBvBjk<1WzMHUD$45cA60*ZL*Pzo5wa%_sIATZ1d8W3zqx2{PI#GPZgH4`)F6}b+h w!kj?t5z`C^QifI!Hl46=Z61+7R{44U3s|69!XDHTq5uE@07*qoM6N<$g6SRrtN;K2 literal 0 HcmV?d00001 diff --git a/images/icon_48.png b/images/icon_48.png new file mode 100644 index 0000000000000000000000000000000000000000..72707845b8dc0e1ba7a1c288e0f52b370294237c GIT binary patch literal 889 zcmV-<1BU#GP)vM1A*2)V_i7tvlOMyXg9M5LN-ZkiMw`*p4Dj37lkl0swMV6S4qDY@k zCmovO@z{(__BEk=45-Kw=WzX8z#ESBQM#1RY|4iSnE*zlobrk+VY7tt9q_UxoDfRU zkO4Voz#K8}0&7Cz1x1!L`6-a;e7%rx1}qsmui)9fUMRoY>~~o9h{72@bEZsRu*+M# z5V7HdR5k{jd(t%3+wJz>SewnJIU|i_y|Es})${mwSw3sTYB z0+DV!SZKa!R0>i$GhXpUOnvfpyO9KQekZf-lTncEgEsV$a=l);rbfwx0?kwhyw^{w zNSj%fiBofj#j|lUc}(M|a!F{gp%NdGs$0a@A^)7uXZkeeZIEk1_}se>DKS=l;}@E^ zZwT?=^^#V#9OTL{UbR1PWMGUMLenMfZqx_T+ z@Ulbsiab!{DDKX&CPEf>K|+o*4N5Md%Ip0CfJMZ&HL1s-jUi(eICgo#1&1^4CmBKX z|B4AGM;P>a#e|v083}zXWs;!EcffU@y5x%~5Q;1pA2UcvGhKS8M6)VhQ-F|hp~!NV zFj4V{7DUlA-A=i|FQzIkE9UShBRhKjyUnKkta|N_R=P7hzW*kspdjHdt$NdE3n}d- P00000NkvXXu0mjf6rhre literal 0 HcmV?d00001 diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..b09a6e8 --- /dev/null +++ b/manifest.json @@ -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" + } +} \ No newline at end of file diff --git a/popup.css b/popup.css new file mode 100644 index 0000000..6230bdb --- /dev/null +++ b/popup.css @@ -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; +} \ No newline at end of file diff --git a/popup.html b/popup.html new file mode 100644 index 0000000..0038405 --- /dev/null +++ b/popup.html @@ -0,0 +1,15 @@ + + + + + + + +

Parse Policies

+ +
+

Selected categories

+
    +
    + + diff --git a/popup.js b/popup.js new file mode 100644 index 0000000..30a5229 --- /dev/null +++ b/popup.js @@ -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); + }); + } +} diff --git a/test.html b/test.html new file mode 100644 index 0000000..f263d74 --- /dev/null +++ b/test.html @@ -0,0 +1,20 @@ + + + + + + + Document + + +

    + 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. +

    + +

    Location tempor eheh ahah

    + +

    Usage of data

    + +