FlashFire Start
This commit is contained in:
		
						commit
						4ab4b8d480
					
				
							
								
								
									
										
											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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user