| LEFT | RIGHT |
| 1 /* | 1 /* |
| 2 * This file is part of Adblock Plus <http://adblockplus.org/>, | 2 * This file is part of Adblock Plus <http://adblockplus.org/>, |
| 3 * Copyright (C) 2006-2013 Eyeo GmbH | 3 * Copyright (C) 2006-2013 Eyeo GmbH |
| 4 * | 4 * |
| 5 * Adblock Plus is free software: you can redistribute it and/or modify | 5 * Adblock Plus is free software: you can redistribute it and/or modify |
| 6 * it under the terms of the GNU General Public License version 3 as | 6 * it under the terms of the GNU General Public License version 3 as |
| 7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
| 8 * | 8 * |
| 9 * Adblock Plus is distributed in the hope that it will be useful, | 9 * Adblock Plus is distributed in the hope that it will be useful, |
| 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| (...skipping 609 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 620 | 620 |
| 621 ext.backgroundPage = { | 621 ext.backgroundPage = { |
| 622 getWindow: function() | 622 getWindow: function() |
| 623 { | 623 { |
| 624 return safari.extension.globalPage.contentWindow; | 624 return safari.extension.globalPage.contentWindow; |
| 625 } | 625 } |
| 626 }; | 626 }; |
| 627 | 627 |
| 628 ext.onMessage = new BackgroundMessageEventTarget(); | 628 ext.onMessage = new BackgroundMessageEventTarget(); |
| 629 | 629 |
| 630 var contextMenu = []; | 630 var contextMenuItems = []; |
| 631 var isContextMenuHidden = false; | 631 var isContextMenuHidden = true; |
| 632 ext.contextMenus = { | 632 ext.contextMenus = { |
| 633 addMenuItem: function(title, contexts, onclick) | 633 addMenuItem: function(title, contexts, onclick) |
| 634 { | 634 { |
| 635 contextMenu.push({ | 635 contextMenuItems.push({ |
| 636 id: "block-element", | 636 id: String(contextMenuItems.length), |
| 637 title: title, | 637 title: title, |
| 638 item: null, | 638 item: null, |
| 639 contexts: contexts, | 639 contexts: contexts, |
| 640 onclick: onclick | 640 onclick: onclick |
| 641 }); | 641 }); |
| 642 this.showMenuItems(); |
| 642 }, | 643 }, |
| 643 removeMenuItems: function() | 644 removeMenuItems: function() |
| 644 { | 645 { |
| 645 contextMenu = []; | 646 contextMenuItems = []; |
| 646 }, | 647 this.hideMenuItems(); |
| 647 showMenu: function() | 648 }, |
| 649 showMenuItems: function() |
| 648 { | 650 { |
| 649 isContextMenuHidden = false; | 651 isContextMenuHidden = false; |
| 650 }, | 652 }, |
| 651 hideMenu: function() | 653 hideMenuItems: function() |
| 652 { | 654 { |
| 653 isContextMenuHidden = true; | 655 isContextMenuHidden = true; |
| 654 } | 656 } |
| 655 }; | 657 }; |
| 656 | 658 |
| 657 // Create context menu items | 659 // Create context menu items |
| 658 safari.application.addEventListener("contextmenu", function(event) | 660 safari.application.addEventListener("contextmenu", function(event) |
| 659 { | 661 { |
| 660 var context = event.userInfo.tagName.toLowerCase(); | 662 if (isContextMenuHidden) |
| 663 return; |
| 664 |
| 665 var context = event.userInfo.tagName; |
| 661 if (context == "img") | 666 if (context == "img") |
| 662 context = "image"; | 667 context = "image"; |
| 663 | 668 if (!event.userInfo.srcUrl) |
| 664 for (var i = 0; i < contextMenu.length; i++) | 669 context = null; |
| 665 { | 670 |
| 666 if (isContextMenuHidden) | 671 for (var i = 0; i < contextMenuItems.length; i++) |
| 667 return; | 672 { |
| 668 | |
| 669 // Supported contexts are: all, audio, image, video | 673 // Supported contexts are: all, audio, image, video |
| 670 var menuItem = contextMenu[i]; | 674 var menuItem = contextMenuItems[i]; |
| 671 if (menuItem.contexts.indexOf("all") == -1 && menuItem.contexts.indexOf(co
ntext) == -1) | 675 if (menuItem.contexts.indexOf("all") == -1 && menuItem.contexts.indexOf(co
ntext) == -1) |
| 672 return; | 676 continue; |
| 673 | 677 |
| 674 menuItem.item = event.contextMenu.appendContextMenuItem(menuItem.id, menuI
tem.title); | 678 event.contextMenu.appendContextMenuItem(menuItem.id, menuItem.title); |
| 675 } | 679 } |
| 676 }, false); | 680 }, false); |
| 677 | 681 |
| 678 // Handle context menu item clicks | 682 // Handle context menu item clicks |
| 679 safari.application.addEventListener("command", function(event) | 683 safari.application.addEventListener("command", function(event) |
| 680 { | 684 { |
| 681 for (var i = 0; i < contextMenu.length; i++) | 685 for (var i = 0; i < contextMenuItems.length; i++) |
| 682 { | 686 { |
| 683 if (contextMenu[i].id == event.command) | 687 if (contextMenuItems[i].id == event.command) |
| 684 { | 688 { |
| 685 contextMenu[i].onclick(event.userInfo.srcUrl, new Tab(safari.application
.activeBrowserWindow.activeTab)); | 689 contextMenuItems[i].onclick(event.userInfo.srcUrl, new Tab(safari.applic
ation.activeBrowserWindow.activeTab)); |
| 686 break; | 690 break; |
| 687 } | 691 } |
| 688 } | 692 } |
| 689 }, false); | 693 }, false); |
| 690 })(); | 694 })(); |
| LEFT | RIGHT |