亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? viewpasswords.js

?? 現在很火的郵件客戶端軟件thunderbird的源碼
?? JS
?? 第 1 頁 / 共 2 頁
字號:
# -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-## ***** BEGIN LICENSE BLOCK *****# Version: MPL 1.1/GPL 2.0/LGPL 2.1## The contents of this file are subject to the Mozilla Public License Version# 1.1 (the "License"); you may not use this file except in compliance with# the License. You may obtain a copy of the License at# http://www.mozilla.org/MPL/## Software distributed under the License is distributed on an "AS IS" basis,# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License# for the specific language governing rights and limitations under the# License.## The Original Code is Mozilla Communicator client code, released# March 31, 1998.## The Initial Developer of the Original Code is# Netscape Communications Corporation.# Portions created by the Initial Developer are Copyright (C) 1998# the Initial Developer. All Rights Reserved.## Contributor(s):#   Ben "Count XULula" Goodger#   Brian Ryner <bryner@brianryner.com>## Alternatively, the contents of this file may be used under the terms of# either the GNU General Public License Version 2 or later (the "GPL"), or# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),# in which case the provisions of the GPL or the LGPL are applicable instead# of those above. If you wish to allow use of your version of this file only# under the terms of either the GPL or the LGPL, and not to allow others to# use your version of this file under the terms of the MPL, indicate your# decision by deleting the provisions above and replace them with the notice# and other provisions required by the GPL or the LGPL. If you do not delete# the provisions above, a recipient may use your version of this file under# the terms of any one of the MPL, the GPL or the LGPL.## ***** END LICENSE BLOCK *****/*** =================== INITIALISATION CODE =================== ***/var kObserverService;var kSignonBundle;var gSelectUserInUse = false;// interface variablesvar passwordmanager     = null;// password-manager listsvar signons             = [];var rejects             = [];var deletedSignons      = [];var deletedRejects      = [];var showingPasswords = false;function Startup() {  // xpconnect to password manager interfaces  passwordmanager = Components.classes["@mozilla.org/passwordmanager;1"].getService(Components.interfaces.nsIPasswordManager);  kSignonBundle = document.getElementById("signonBundle");  // be prepared to reload the display if anything changes  kObserverService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);  kObserverService.addObserver(signonReloadDisplay, "signonChanged", false);  // be prepared to disable the buttons when selectuser dialog is in use  kObserverService.addObserver(signonReloadDisplay, "signonSelectUser", false);  signonsTree = document.getElementById("signonsTree");  rejectsTree = document.getElementById("rejectsTree");  // set initial password-manager tab  var tabBox = document.getElementById("tabbox");  tabBox.selectedTab = document.getElementById("signonsTab");  // label the show/hide password button and the close button  document.getElementById("togglePasswords").label = kSignonBundle.getString(showingPasswords ? "hidePasswords" : "showPasswords");  document.documentElement.getButton("accept").label = kSignonBundle.getString("close");  // load password manager items  if (!LoadSignons()) {    return; /* user failed to unlock the database */  }  LoadRejects();}function Shutdown() {  kObserverService.removeObserver(signonReloadDisplay, "signonChanged");  kObserverService.removeObserver(signonReloadDisplay, "signonSelectUser");}var signonReloadDisplay = {  observe: function(subject, topic, state) {    if (topic == "signonChanged") {      if (state == "signons") {        signons.length = 0;        if (lastSignonSortColumn == "host") {          lastSignonSortAscending = !lastSignonSortAscending; // prevents sort from being reversed        }        LoadSignons();      } else if (state == "rejects") {        rejects.length = 0;        if (lastRejectSortColumn == "host") {          lastRejectSortAscending = !lastRejectSortAscending; // prevents sort from being reversed        }        LoadRejects();      }    } else if (topic == "signonSelectUser") {      if (state == "suspend") {        gSelectUserInUse = true;        document.getElementById("removeSignon").disabled = true;        document.getElementById("removeAllSignons").disabled = true;        document.getElementById("togglePasswords").disabled = true;      } else if (state == "resume") {        gSelectUserInUse = false;        var selections = GetTreeSelections(signonsTree);        if (selections.length > 0) {          document.getElementById("removeSignon").disabled = false;        }        if (signons.length > 0) {          document.getElementById("removeAllSignons").disabled = false;          document.getElementById("togglePasswords").disabled = false;        }      } else if (state == "inUse") {        gSelectUserInUse = true;      }    }  }}/*** =================== SAVED SIGNONS CODE =================== ***/var signonsTreeView = {  rowCount : 0,  setTree : function(tree) {},  getImageSrc : function(row,column) {},  getProgressMode : function(row,column) {},  getCellValue : function(row,column) {},  getCellText : function(row,column) {    var rv="";    if (column.id=="siteCol") {      rv = signons[row].host;    } else if (column.id=="userCol") {      rv = signons[row].user;    } else if (column.id=="passwordCol") {      rv = signons[row].password;    }    return rv;  },  isSeparator : function(index) { return false; },  isSorted : function() { return false; },  isContainer : function(index) { return false; },  cycleHeader : function(column) {},  getRowProperties : function(row,prop) {},  getColumnProperties : function(column,prop) {},  getCellProperties : function(row,column,prop) {} };var signonsTree;function Signon(number, host, user, rawuser, password) {  this.number = number;  this.host = host;  this.user = user;  this.rawuser = rawuser;  this.password = password;}function LoadSignons() {  // loads signons into table  var enumerator = passwordmanager.enumerator;  var count = 0;  while (enumerator.hasMoreElements()) {    var nextPassword;    try {      nextPassword = enumerator.getNext();    } catch(e) {      /* user supplied invalid database key */      window.close();      return false;    }    nextPassword = nextPassword.QueryInterface(Components.interfaces.nsIPassword);    var host = nextPassword.host;    var user;    var password;    // try/catch in case decryption fails (invalid signon entry)    try {      user = nextPassword.user;      password = nextPassword.password;    } catch (e) {      // hide this entry      dump("could not decrypt user/password for host " + host + "\n");      continue;    }    var rawuser = user;    // if no username supplied, try to parse it out of the url    if (user == "") {      var ioService = Components.classes["@mozilla.org/network/io-service;1"]                    .getService(Components.interfaces.nsIIOService);      try {        user = ioService.newURI(host, null, null).username;        if (user == "") {          user = kSignonBundle.getString('noUserNameForPassword');        }      } catch(e) {        user = kSignonBundle.getString('noUserNameForPassword');      }    }    signons[count] = new Signon(count++, host, user, rawuser, password);  }  signonsTreeView.rowCount = signons.length;  // sort and display the table  signonsTree.treeBoxObject.view = signonsTreeView;  SignonColumnSort('host');  // disable "remove all signons" button if there are no signons  var element = document.getElementById("removeAllSignons");  var toggle = document.getElementById("togglePasswords");  if (signons.length == 0 || gSelectUserInUse) {    element.setAttribute("disabled","true");    toggle.setAttribute("disabled","true");  } else {    element.removeAttribute("disabled");    toggle.removeAttribute("disabled");  }   return true;}function SignonSelected() {  var selections = GetTreeSelections(signonsTree);  if (selections.length && !gSelectUserInUse) {    document.getElementById("removeSignon").removeAttribute("disabled");  }}function DeleteSignon() {  DeleteSelectedItemFromTree(signonsTree, signonsTreeView,                             signons, deletedSignons,                             "removeSignon", "removeAllSignons");  FinalizeSignonDeletions();}function DeleteAllSignons() {  var prompter = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
                           .getService(Components.interfaces.nsIPromptService);

  // Confirm the user wants to remove all passwords
  var dummy = { value: false };
  if (prompter.confirmEx(window,
                         kSignonBundle.getString("removeAllPasswordsTitle"),
                         kSignonBundle.getString("removeAllPasswordsPrompt"),
                         prompter.STD_YES_NO_BUTTONS + prompter.BUTTON_POS_1_DEFAULT,
                         null, null, null, null, dummy) == 1) // 1 == "No" button
    return;      DeleteAllFromTree(signonsTree, signonsTreeView,                    signons, deletedSignons,                    "removeSignon", "removeAllSignons");  FinalizeSignonDeletions();}function TogglePasswordVisible() {  if (!showingPasswords && !ConfirmShowPasswords())    return;  showingPasswords = !showingPasswords;  document.getElementById("togglePasswords").label = kSignonBundle.getString(showingPasswords ? "hidePasswords" : "showPasswords");  document.getElementById("passwordCol").hidden = !showingPasswords;}function AskUserShowPasswords() {  var prompter = Components.classes["@mozilla.org/embedcomp/prompt-service;1"].getService(Components.interfaces.nsIPromptService);  var dummy = { value: false };  // Confirm the user wants to display passwords  return prompter.confirmEx(window,          null,          kSignonBundle.getString("noMasterPasswordPrompt"),          prompter.BUTTON_TITLE_YES * prompter.BUTTON_POS_0 + prompter.BUTTON_TITLE_NO * prompter.BUTTON_POS_1,          null, null, null, null, dummy) == 0;    // 0=="Yes" button}function ConfirmShowPasswords() {  // This doesn't harm if passwords are not encrypted  var tokendb = Components.classes["@mozilla.org/security/pk11tokendb;1"]                    .createInstance(Components.interfaces.nsIPK11TokenDB);  var token = tokendb.getInternalKeyToken();  // If there is no master password, still give the user a chance to opt-out of displaying passwords  try  {    if (token.checkPassword(""))      return AskUserShowPasswords();  } catch (ex)   {    // for some reason the call to checkPassword throws an exception for users who have never set a master    // password before.    return AskUserShowPasswords();  }  // So there's a master password. But since checkPassword didn't succeed, we're logged out (per nsIPK11Token.idl).  try {    // Relogin and ask for the master password.    token.login(true);  // 'true' means always prompt for token password. User will be prompted until

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久影视传媒| 国产区在线观看成人精品| 国产一区二区美女诱惑| 一区二区三区中文字幕| 精品国产乱码久久久久久夜甘婷婷| 北条麻妃国产九九精品视频| 日本不卡一二三| 亚洲三级在线观看| 欧美激情一区三区| 日韩视频一区二区在线观看| 91美女精品福利| 国产很黄免费观看久久| 日本aⅴ免费视频一区二区三区 | 精品国产91亚洲一区二区三区婷婷| 99久久久精品| 懂色av一区二区夜夜嗨| 日本欧美一区二区三区乱码| 亚洲一区二区三区四区在线免费观看 | 久久99精品一区二区三区| 亚洲午夜一区二区| 一区二区在线看| 国产精品视频yy9299一区| 欧美r级电影在线观看| 51久久夜色精品国产麻豆| 欧美在线观看视频一区二区 | 五月天激情综合| 亚洲精品视频观看| 中文字幕一区av| 国产精品嫩草影院com| 久久久久88色偷偷免费 | 亚洲综合男人的天堂| 国产精品久久久久久久久动漫 | 欧美三级三级三级| 在线亚洲免费视频| 91福利在线导航| 91久久精品一区二区| 色婷婷av一区二区三区软件| 色视频欧美一区二区三区| 91福利国产精品| 在线观看视频一区二区欧美日韩| 91小宝寻花一区二区三区| 99精品国产一区二区三区不卡| 成人午夜电影小说| 99久久精品情趣| 色综合中文字幕国产| 99麻豆久久久国产精品免费 | 国产精品系列在线观看| 国产精品一二三四五| 丁香一区二区三区| av在线不卡免费看| 欧美怡红院视频| 91精品欧美一区二区三区综合在| 日韩三级中文字幕| 久久影院视频免费| 国产精品久久久久天堂| 最新日韩在线视频| 亚洲大型综合色站| 欧美aaa在线| 国产精品自在欧美一区| 成av人片一区二区| 欧美伊人久久大香线蕉综合69| 在线观看一区不卡| 欧美r级电影在线观看| 国产欧美在线观看一区| 亚洲免费在线视频一区 二区| 性做久久久久久| 国产精品一区二区久久不卡| 99在线精品视频| 91精品久久久久久久99蜜桃| 久久综合色播五月| 亚洲男同1069视频| 久久精品99久久久| 99久久夜色精品国产网站| 欧美天天综合网| 久久久www免费人成精品| 亚洲私人黄色宅男| 蜜臀av一区二区| 成人免费看黄yyy456| 在线播放91灌醉迷j高跟美女| wwwwxxxxx欧美| 亚洲五码中文字幕| 国产精品主播直播| 欧美日韩高清一区二区不卡| 久久久久久久久久看片| 亚洲激情综合网| 国产成人综合自拍| 欧美精品电影在线播放| 国产精品毛片久久久久久| 日韩激情视频在线观看| 成人免费va视频| 日韩一区二区三区免费看 | 日本欧美久久久久免费播放网| 国产精品资源在线观看| 欧美日韩国产免费| 亚洲视频免费在线| 国产精品一区一区| 欧美一区二区视频在线观看2022| 亚洲视频一区在线观看| 精品一区二区免费| 欧美精品久久一区| 一区二区欧美国产| 成人激情动漫在线观看| 欧美mv日韩mv国产网站app| 亚洲国产另类精品专区| 97超碰欧美中文字幕| 国产日韩精品一区二区三区| 免费视频最近日韩| 欧美性猛交xxxx乱大交退制版 | 国产精品久久久久久久午夜片| 麻豆91在线看| 欧美精品在线观看一区二区| 亚洲精品美腿丝袜| 国产99久久久久久免费看农村| 欧美一三区三区四区免费在线看| 亚洲乱码国产乱码精品精小说| 国产精品伊人色| 精品国偷自产国产一区| 秋霞电影一区二区| 91精品国产丝袜白色高跟鞋| 亚洲成人先锋电影| 91福利社在线观看| 一区二区三区四区不卡在线| www.亚洲免费av| 中文字幕一区二区三区乱码在线| 国产精品资源网| 国产午夜久久久久| 国产一区二区三区免费| www一区二区| 国产毛片精品国产一区二区三区| 日韩精品一区二区在线观看| 日韩精品一级二级| 4438成人网| 麻豆精品在线播放| 欧美成人a∨高清免费观看| 日韩精品亚洲一区| 日韩免费一区二区三区在线播放| 日韩高清不卡一区二区| 日韩欧美国产小视频| 九一九一国产精品| 亚洲乱码国产乱码精品精98午夜 | 久久久久88色偷偷免费| 国产精品1024久久| 国产精品免费免费| 波多野结衣视频一区| 亚洲欧美一区二区不卡| 色成人在线视频| 亚洲成a人在线观看| 91精品国产综合久久蜜臀| 精品一区二区三区免费| 久久久亚洲精华液精华液精华液| 国产91色综合久久免费分享| 亚洲视频一二三| 欧美日韩的一区二区| 九九在线精品视频| 国产欧美精品一区二区三区四区 | 国产一区二区三区不卡在线观看| 久久综合999| 91视频在线观看| 午夜久久久久久电影| 日韩精品最新网址| 岛国一区二区三区| 一区二区三区四区中文字幕| 欧美一区二区三区四区五区 | 亚洲国产视频一区二区| 91精品在线免费观看| 国产成人免费视频网站| 亚洲免费观看视频| 日韩精品资源二区在线| 成人av在线一区二区| 亚洲香肠在线观看| 26uuu精品一区二区在线观看| eeuss鲁片一区二区三区在线看| 亚洲影视在线播放| 久久久精品国产免费观看同学| 在线亚洲+欧美+日本专区| 精品一区二区成人精品| 夜夜嗨av一区二区三区网页| 日韩欧美色电影| 97se亚洲国产综合自在线不卡 | 国产99久久久国产精品| 亚洲午夜精品在线| 国产欧美日韩激情| 一区二区三区不卡视频| 日韩精品一区二区三区在线观看| 菠萝蜜视频在线观看一区| 天堂成人国产精品一区| 日本一区二区三区免费乱视频 | 欧美日韩精品系列| 国产福利一区二区三区视频在线 | 青青草97国产精品免费观看 | 91色|porny| 国产在线观看一区二区| 亚洲成人资源网| 日韩美女精品在线| 久久久久久久久久久电影| 欧美夫妻性生活| 在线观看国产一区二区| 成人免费视频一区| 激情五月激情综合网| 亚洲高清免费观看|