FlashFire Start

This commit is contained in:
GRMrGecko 2010-07-10 17:44:22 -05:00
commit 4ab4b8d480
7 changed files with 554 additions and 0 deletions

252
Action.ai Normal file

File diff suppressed because one or more lines are too long

BIN
Action.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

55
Info.plist Normal file
View 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
View 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
View 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
View 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
View 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>