| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  * This file is part of Adblock Plus <https://adblockplus.org/>, | 2  * This file is part of Adblock Plus <https://adblockplus.org/>, | 
| 3  * Copyright (C) 2006-2015 Eyeo GmbH | 3  * Copyright (C) 2006-2015 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 | 
| 11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
| 12  * GNU General Public License for more details. | 12  * GNU General Public License for more details. | 
| 13  * | 13  * | 
| 14  * You should have received a copy of the GNU General Public License | 14  * You should have received a copy of the GNU General Public License | 
| 15  * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>. | 15  * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>. | 
| 16  */ | 16  */ | 
| 17 | 17 | 
| 18 (function() | 18 (function() | 
| 19 { | 19 { | 
| 20   /* Pages */ | 20   /* Pages */ | 
| 21 | 21 | 
| 22   var pages = {__proto__: null}; | 22   var pages = {__proto__: null}; | 
| 23   var pageCounter = 0; | 23   var pageCounter = 0; | 
| 24 | 24 | 
| 25   var Page = function(id, tab, url) | 25   var Page = function(id, tab, url) | 
| 26   { | 26   { | 
| 27     this._id = id; | 27     this._id = id; | 
| 28     this._tab = tab; | 28     this._tab = tab; | 
| 29     this._frames = [{url: url, parent: null}]; | 29     this._frames = [{url: new URL(url), parent: null}]; | 
| 30 | 30 | 
| 31     if (tab.page) | 31     if (tab.page) | 
| 32       this._messageProxy = new ext._MessageProxy(tab.page); | 32       this._messageProxy = new ext._MessageProxy(tab.page); | 
| 33     else | 33     else | 
| 34       // while the new tab page is shown on Safari 7, the 'page' property | 34       // while the new tab page is shown on Safari 7, the 'page' property | 
| 35       // of the tab is undefined, and we can't send messages to that page | 35       // of the tab is undefined, and we can't send messages to that page | 
| 36       this._messageProxy = { | 36       this._messageProxy = { | 
| 37         handleRequest: function() {}, | 37         handleRequest: function() {}, | 
| 38         handleResponse: function() {}, | 38         handleResponse: function() {}, | 
| 39         sendMessage: function() {} | 39         sendMessage: function() {} | 
| (...skipping 527 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 567               // loaded in the same tab. If there is more than one match, | 567               // loaded in the same tab. If there is more than one match, | 
| 568               // the most recent loaded page and frame is preferred. | 568               // the most recent loaded page and frame is preferred. | 
| 569               for (var curPageId in tab._pages) | 569               for (var curPageId in tab._pages) | 
| 570               { | 570               { | 
| 571                 var curPage = pages[curPageId]; | 571                 var curPage = pages[curPageId]; | 
| 572 | 572 | 
| 573                 for (var i = 0; i < curPage._frames.length; i++) | 573                 for (var i = 0; i < curPage._frames.length; i++) | 
| 574                 { | 574                 { | 
| 575                   var curFrame = curPage._frames[i]; | 575                   var curFrame = curPage._frames[i]; | 
| 576 | 576 | 
| 577                   if (curFrame.url == message.referrer) | 577                   if (curFrame.url.href == message.referrer) | 
| 578                   { | 578                   { | 
| 579                     pageId = curPageId; | 579                     pageId = curPageId; | 
| 580                     page = curPage; | 580                     page = curPage; | 
| 581                     parentFrame = curFrame; | 581                     parentFrame = curFrame; | 
| 582                   } | 582                   } | 
| 583 | 583 | 
| 584                   if (i == 0) | 584                   if (i == 0) | 
| 585                   { | 585                   { | 
| 586                     lastPageId = curPageId; | 586                     lastPageId = curPageId; | 
| 587                     lastPage = curPage; | 587                     lastPage = curPage; | 
| 588                     lastPageTopLevelFrame = curFrame; | 588                     lastPageTopLevelFrame = curFrame; | 
| 589                   } | 589                   } | 
| 590                 } | 590                 } | 
| 591               } | 591               } | 
| 592 | 592 | 
| 593               // if we can't find the parent frame and its page, fall back to | 593               // if we can't find the parent frame and its page, fall back to | 
| 594               // the page most recently loaded in the tab and its top level fram
     e | 594               // the page most recently loaded in the tab and its top level fram
     e | 
| 595               if (!page) | 595               if (!page) | 
| 596               { | 596               { | 
| 597                 pageId = lastPageId; | 597                 pageId = lastPageId; | 
| 598                 page = lastPage; | 598                 page = lastPage; | 
| 599                 parentFrame = lastPageTopLevelFrame; | 599                 parentFrame = lastPageTopLevelFrame; | 
| 600               } | 600               } | 
| 601 | 601 | 
| 602               frameId = page._frames.length; | 602               frameId = page._frames.length; | 
| 603               page._frames.push({url: message.url, parent: parentFrame}); | 603               page._frames.push({url: new URL(message.url), parent: parentFrame}
     ); | 
| 604             } | 604             } | 
| 605 | 605 | 
| 606             event.message = {pageId: pageId, frameId: frameId}; | 606             event.message = {pageId: pageId, frameId: frameId}; | 
| 607             break; | 607             break; | 
| 608           case "webRequest": | 608           case "webRequest": | 
| 609             var page = pages[event.message.pageId]; | 609             var page = pages[event.message.pageId]; | 
|  | 610             var frame = page._frames[event.message.frameId]; | 
|  | 611 | 
| 610             var results = ext.webRequest.onBeforeRequest._dispatch( | 612             var results = ext.webRequest.onBeforeRequest._dispatch( | 
| 611               event.message.url, | 613               new URL(event.message.url, frame.url), | 
| 612               event.message.type, | 614               event.message.type, page, frame | 
| 613               page, |  | 
| 614               page._frames[event.message.frameId] |  | 
| 615             ); | 615             ); | 
| 616 | 616 | 
| 617             event.message = (results.indexOf(false) == -1); | 617             event.message = (results.indexOf(false) == -1); | 
| 618             break; | 618             break; | 
| 619           case "proxy": | 619           case "proxy": | 
| 620             event.message = backgroundPageProxy.handleMessage(event.message); | 620             event.message = backgroundPageProxy.handleMessage(event.message); | 
| 621             break; | 621             break; | 
| 622           case "request": | 622           case "request": | 
| 623             var page = pages[event.message.pageId]; | 623             var page = pages[event.message.pageId]; | 
| 624             var sender = {page: page, frame: page._frames[event.message.frameId]
     }; | 624             var sender = {page: page, frame: page._frames[event.message.frameId]
     }; | 
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 662 | 662 | 
| 663   ext.showOptions = function(callback) | 663   ext.showOptions = function(callback) | 
| 664   { | 664   { | 
| 665     var optionsUrl = safari.extension.baseURI + "options.html"; | 665     var optionsUrl = safari.extension.baseURI + "options.html"; | 
| 666 | 666 | 
| 667     for (var id in pages) | 667     for (var id in pages) | 
| 668     { | 668     { | 
| 669       var page = pages[id]; | 669       var page = pages[id]; | 
| 670       var tab = page._tab; | 670       var tab = page._tab; | 
| 671 | 671 | 
| 672       if (page.url == optionsUrl && tab.browserWindow == safari.application.acti
     veBrowserWindow) | 672       if (page.url.href == optionsUrl && tab.browserWindow == safari.application
     .activeBrowserWindow) | 
| 673       { | 673       { | 
| 674         tab.activate(); | 674         tab.activate(); | 
| 675         if (callback) | 675         if (callback) | 
| 676           callback(page); | 676           callback(page); | 
| 677         return; | 677         return; | 
| 678       } | 678       } | 
| 679     } | 679     } | 
| 680 | 680 | 
| 681     ext.pages.open(optionsUrl, callback); | 681     ext.pages.open(optionsUrl, callback); | 
| 682   }; | 682   }; | 
| 683 })(); | 683 })(); | 
| OLD | NEW | 
|---|