FlashFire Start
This commit is contained in:
commit
4ab4b8d480
7 changed files with 554 additions and 0 deletions
252
Action.ai
Normal file
252
Action.ai
Normal file
File diff suppressed because one or more lines are too long
BIN
Action.png
Normal file
BIN
Action.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
55
Info.plist
Normal file
55
Info.plist
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>Author</key>
|
||||
<string>Mr. Gecko's Media</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>FlashFire</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.MrGeckosMedia.FlashFire</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>0.1</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>0.1</string>
|
||||
<key>Chrome</key>
|
||||
<dict>
|
||||
<key>Global Page</key>
|
||||
<string>global.html</string>
|
||||
</dict>
|
||||
<key>Content</key>
|
||||
<dict>
|
||||
<key>Scripts</key>
|
||||
<dict>
|
||||
<key>Start</key>
|
||||
<array>
|
||||
<string>flashfire.js</string>
|
||||
</array>
|
||||
</dict>
|
||||
<key>Stylesheets</key>
|
||||
<array>
|
||||
<string>flashfire.css</string>
|
||||
</array>
|
||||
</dict>
|
||||
<key>Description</key>
|
||||
<string>Blocks Flash</string>
|
||||
<key>ExtensionInfoDictionaryVersion</key>
|
||||
<string>1.0</string>
|
||||
<key>Permissions</key>
|
||||
<dict>
|
||||
<key>Website Access</key>
|
||||
<dict>
|
||||
<key>Include Secure Pages</key>
|
||||
<true/>
|
||||
<key>Level</key>
|
||||
<string>All</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>Update Manifest URL</key>
|
||||
<string>http://mrgeckosmedia.com/FlashFire.plist</string>
|
||||
<key>Website</key>
|
||||
<string>http://mrgeckosmedia.com/</string>
|
||||
</dict>
|
||||
</plist>
|
||||
12
Settings.plist
Normal file
12
Settings.plist
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<array>
|
||||
<dict>
|
||||
<key>DefaultValue</key>
|
||||
<string></string>
|
||||
<key>Key</key>
|
||||
<string>whitelist</string>
|
||||
</dict>
|
||||
</array>
|
||||
</plist>
|
||||
100
flashfire.css
Normal file
100
flashfire.css
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
.flashfireBlocked {
|
||||
background:-webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(255, 255, 255, 0.15)), to(rgba(0, 0, 0, 0.15))) !important;
|
||||
border:1px solid rgba(0, 0, 0, 0.5) !important;
|
||||
display: table !important;
|
||||
-webkit-user-select: none !important;
|
||||
font-family:"Lucida Grande", "Helvetica Neue", Helvetica, sans-serif !important;
|
||||
}
|
||||
|
||||
.flashfireBlocked:active {
|
||||
background:-webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(0, 0, 0, 0.15)), to(rgba(255, 255, 255, 0.15))) !important;
|
||||
}
|
||||
|
||||
.flashfireBlocked .container {
|
||||
position: relative !important;
|
||||
width: inherit !important;
|
||||
height: inherit !important;
|
||||
margin: 0px !important;
|
||||
}
|
||||
|
||||
.flashfireBlocked .vText {
|
||||
display: table-cell !important;
|
||||
vertical-align: middle !important;
|
||||
width: inherit !important;
|
||||
height: inherit !important;
|
||||
}
|
||||
.flashfireBlocked .hText {
|
||||
float: left !important;
|
||||
position: relative !important;
|
||||
left: 50% !important;
|
||||
height: auto !important;
|
||||
width: auto;
|
||||
}
|
||||
.flashfireBlocked .textContainer {
|
||||
float: left !important;
|
||||
position: relative !important;
|
||||
left: -50% !important;
|
||||
width: auto !important;
|
||||
height: auto !important;
|
||||
}
|
||||
.flashfireBlocked .textContainer.rotate {
|
||||
left: -90% !important;
|
||||
-webkit-transform: rotate(-90deg);
|
||||
}
|
||||
.flashfireBlocked .textContainer .text {
|
||||
border-radius: 4.0px !important;
|
||||
border: 3px solid rgba(0, 0, 0, 0.3) !important;
|
||||
font-size: 20px !important;
|
||||
width: auto !important;
|
||||
color: rgba(0, 0, 0, 0.3) !important;
|
||||
font-weight: bold !important;
|
||||
padding: 14px 5px 7px 5px !important;
|
||||
-webkit-user-select: none !important;
|
||||
cursor: default !important;
|
||||
background: none !important;
|
||||
position: relative !important;
|
||||
height: auto !important;
|
||||
line-height: 0 !important;
|
||||
}
|
||||
.flashfireBlocked .textContainer.mini .text {
|
||||
border-radius: 4.0px !important;
|
||||
font-size: 8px !important;
|
||||
border: 1px solid rgba(0, 0, 0, 0.3) !important;
|
||||
padding: 6px 3px 4px 3px !important;
|
||||
}
|
||||
.flashfireBlocked .textContainer .textInset {
|
||||
border: 0px !important;
|
||||
font-size: 20px !important;
|
||||
width: auto !important;
|
||||
color: rgba(255, 255, 255, 0.45) !important;
|
||||
font-weight: bold !important;
|
||||
padding: 16px 7px 10px 8px !important;
|
||||
-webkit-user-select: none !important;
|
||||
cursor: default !important;
|
||||
background: none !important;
|
||||
height: auto !important;
|
||||
line-height: 0 !important;
|
||||
position: absolute !important;
|
||||
top: 1px !important;
|
||||
right: 1px !important;
|
||||
}
|
||||
.flashfireBlocked .textContainer.mini .textInset {
|
||||
font-size: 8px !important;
|
||||
padding: 6px 3px 10px 8px !important;
|
||||
}
|
||||
|
||||
.flashfireBlocked .action {
|
||||
position: absolute !important;
|
||||
left: 10px !important;
|
||||
top: 10px !important;
|
||||
width: 14px !important;
|
||||
height: 14px !important;
|
||||
background: url("action.png") no-repeat !important;
|
||||
opacity: 0.25 !important;
|
||||
-webkit-transition-property: opacity;
|
||||
-webkit-transition-duration: 0.5s;
|
||||
z-index: 2 !important;
|
||||
}
|
||||
.flashfireBlocked .action:hover {
|
||||
opacity: 0.5 !important;
|
||||
}
|
||||
118
flashfire.js
Normal file
118
flashfire.js
Normal file
|
|
@ -0,0 +1,118 @@
|
|||
document.addEventListener("beforeload", handleBeforeLoadEvent, true);
|
||||
var elementsBlocked = new Array();
|
||||
|
||||
function handleBeforeLoadEvent(event) {
|
||||
const element = event.target;
|
||||
if (element instanceof HTMLEmbedElement || element instanceof HTMLObjectElement) {
|
||||
if (element.allowedToLoad)
|
||||
return;
|
||||
|
||||
if (element instanceof HTMLEmbedElement) {
|
||||
var source = element.getAttribute("src");
|
||||
if (!source.match("swf"))
|
||||
return;
|
||||
} else if (element instanceof HTMLObjectElement) {
|
||||
var foundFile;
|
||||
var elementNodes = element.childNodes;
|
||||
for (i=0; i<elementNodes.length; i++) {
|
||||
if (elementNodes[i].nodeName=="PARAM" && elementNodes[i].name.match("movie")) {
|
||||
foundFile = elementNodes[i].value.match("swf");
|
||||
if (!foundFile) {
|
||||
var type = element.getAttribute("type");
|
||||
if (type!=null && (!type.match("flash") && !type.match("shockwave") && !type.match("futuresplash")))
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//console.log(safari.self.tab.canLoad(event, {name: "getSettings", data: ""}));
|
||||
|
||||
event.preventDefault();
|
||||
|
||||
blockElement(element);
|
||||
}
|
||||
}
|
||||
|
||||
function unblockElement(event) {
|
||||
var element = event.target;
|
||||
while (element.className!="flashfireBlocked")
|
||||
element = element.parentNode;
|
||||
|
||||
var elementID = element.getAttribute("elementID");
|
||||
|
||||
var blockedElement = elementsBlocked[elementID];
|
||||
blockedElement.allowedToLoad = true;
|
||||
|
||||
element.parentNode.replaceChild(blockedElement, element);
|
||||
|
||||
event.stopPropagation();
|
||||
event.preventDefault();
|
||||
}
|
||||
|
||||
function blockElement(element) {
|
||||
if (element.getAttribute("elementID")!=null)
|
||||
return;
|
||||
var elementID = elementsBlocked.length;
|
||||
element.setAttribute("elementID", elementID);
|
||||
elementsBlocked[elementID] = element;
|
||||
|
||||
var text = "Flash";
|
||||
|
||||
var flashfireBlockedDiv = document.createElement("div");
|
||||
flashfireBlockedDiv.setAttribute("elementID", elementID);
|
||||
flashfireBlockedDiv.style = element.style;
|
||||
flashfireBlockedDiv.style.width = element.offsetWidth + "px";
|
||||
flashfireBlockedDiv.style.height = element.offsetHeight + "px";
|
||||
flashfireBlockedDiv.className = "flashfireBlocked";
|
||||
flashfireBlockedDiv.onclick = unblockElement;
|
||||
|
||||
var flashfireContainerDiv = document.createElement("div");
|
||||
flashfireContainerDiv.className = "container";
|
||||
flashfireBlockedDiv.appendChild(flashfireContainerDiv);
|
||||
|
||||
var flashfireVDiv = document.createElement("div");
|
||||
flashfireVDiv.className = "vText";
|
||||
flashfireContainerDiv.appendChild(flashfireVDiv);
|
||||
var flashfireHDiv = document.createElement("div");
|
||||
flashfireHDiv.className = "hText";
|
||||
flashfireVDiv.appendChild(flashfireHDiv);
|
||||
|
||||
var flashfireTextContainerDiv = document.createElement("div");
|
||||
flashfireTextContainerDiv.className = "textContainer";
|
||||
flashfireHDiv.appendChild(flashfireTextContainerDiv);
|
||||
|
||||
var flashfireTextInsetDiv = document.createElement("div");
|
||||
flashfireTextInsetDiv.className = "textInset";
|
||||
flashfireTextInsetDiv.innerHTML = text;
|
||||
flashfireTextContainerDiv.appendChild(flashfireTextInsetDiv);
|
||||
var flashfireTextDiv = document.createElement("div");
|
||||
flashfireTextDiv.className = "text";
|
||||
flashfireTextDiv.innerHTML = text;
|
||||
flashfireTextContainerDiv.appendChild(flashfireTextDiv);
|
||||
|
||||
var flashfireActionDiv = document.createElement("div");
|
||||
flashfireActionDiv.className = "action";
|
||||
flashfireContainerDiv.appendChild(flashfireActionDiv);
|
||||
|
||||
setTimeout(function(){element.parentNode.replaceChild(flashfireBlockedDiv, element);}, 5);
|
||||
var changeSize = function() {
|
||||
if (flashfireBlockedDiv.offsetWidth>0 && flashfireTextDiv.offsetWidth>0 && flashfireBlockedDiv.offsetHeight>0 && flashfireTextDiv.offsetHeight>0) {
|
||||
if ((flashfireBlockedDiv.offsetWidth - 4) < flashfireTextDiv.offsetWidth || (flashfireBlockedDiv.offsetHeight - 4) < flashfireTextDiv.offsetHeight) {
|
||||
flashfireTextContainerDiv.className += " mini";
|
||||
}
|
||||
|
||||
if ((flashfireBlockedDiv.offsetWidth - 4) < flashfireTextDiv.offsetWidth) {
|
||||
flashfireTextContainerDiv.className += " rotate";
|
||||
flashfireHDiv.style.width = 17;
|
||||
}
|
||||
if ((flashfireBlockedDiv.offsetWidth - 2) <= flashfireHDiv.offsetWidth || (flashfireBlockedDiv.offsetHeight - 17) <= flashfireTextDiv.offsetHeight) {
|
||||
flashfireHDiv.style.width = "inherit";
|
||||
flashfireTextContainerDiv.style.display = "none";
|
||||
}
|
||||
} else {
|
||||
setTimeout(changeSize, 100);
|
||||
}
|
||||
};
|
||||
changeSize();
|
||||
}
|
||||
17
global.html
Normal file
17
global.html
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
<!DOCTYPE HTML>
|
||||
<script>
|
||||
safari.application.addEventListener("message", handleMessage, false);
|
||||
|
||||
function handleMessage(theEvent) {
|
||||
if (theEvent.name=="canLoad") {
|
||||
var message = theEvent.message;
|
||||
console.log(message);
|
||||
if (message.name=="getSettings") {
|
||||
console.log("Get Settings");
|
||||
var data = message.data;
|
||||
theEvent.message = safari.extension.settings.bob;
|
||||
}
|
||||
}
|
||||
}
|
||||
safari.application.addEventListener("message", handleMessage, false);
|
||||
</script>
|
||||
Loading…
Add table
Reference in a new issue