2010-09-17 15 views
2

下面是代碼片段:如何使用安全瀏覽應用程序對象來確定是否將網址報告爲釣魚網站或惡意軟件網站?

Components.classes['@mozilla.org/safebrowsing/application;1'] 
    .getService().wrappedJSObject.malwareWarden.listManager_ 
    .safeLookup(test_url, function(tableName){ 
     if (tableName == 'goog-phish-shavar' || tableNmae == 'goog-malware-shavar') { 
      alert('This is reported by Google! '); 
     }; 
}); 

它工作正常,但我不認爲這是「正確」的方法...

如果用戶有什麼改變的DataProvider?

+0

代碼參考:http://mxr.mozilla.org/mozilla-central/source/browser/components/safebrowsing/content/ – 2010-09-17 04:39:51

回答

3

使用wrappedJSObject訪問任何方法或XPCOM對象的屬性是一個等待發生的問題。任何通過wrappedJSObject訪問的內容都被認爲是「私有」數據和方法 - 可能在未來的版本中打破。儘量避免它。

好消息是「listManager」本身就是一個全球性的XPCOM服務。直接訪問它使用:

 
var Cc = Components.classes; 
var Ci = Components.interfaces; 
var listManager = Cc["@mozilla.org/url-classifier/listmanager;1"].getService(Ci.nsIUrlListManager); 

至於更改數據提供程序,它將需要大量的代碼更改之前,Firefox可能發生。如果是這樣,我們也希望爲XPCOM增加一些管理方法。