home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1997 July / PCO_07_97.ISO / NET_COM / cc32e40.exe / nav40.z / java40.jar / netscape / applet / MozillaAppletContext.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-06-07  |  14.2 KB  |  865 lines

  1. package netscape.applet;
  2.  
  3. import java.applet.Applet;
  4. import java.applet.AppletContext;
  5. import java.applet.AudioClip;
  6. import java.awt.Image;
  7. import java.awt.Toolkit;
  8. import java.awt.Window;
  9. import java.io.PrintStream;
  10. import java.net.MalformedURLException;
  11. import java.net.URL;
  12. import java.util.Enumeration;
  13. import java.util.Hashtable;
  14. import java.util.Vector;
  15. import netscape.net.URLStreamHandlerFactory;
  16. import netscape.security.AppletSecurity;
  17. import netscape.security.AppletSecurityException;
  18. import netscape.security.PrivilegeManager;
  19. import sun.awt.image.URLImageSource;
  20.  
  21. class MozillaAppletContext implements AppletContext {
  22.    int frameMWContext;
  23.    Mapping appletFrames;
  24.    Hashtable imageCache;
  25.    Hashtable audioClipCache;
  26.    URL documentURL;
  27.    Integer contextID;
  28.    static AppletThreadKiller killer;
  29.    static Console console;
  30.    static boolean javaInitialized;
  31.    static boolean javaOneTimeInitDone;
  32.    static int totalApplets;
  33.    static int trimThreshold;
  34.    static boolean noisyTrimming;
  35.    static Mapping appletContexts;
  36.    static int debug;
  37.    static final int DBG_NONE = 0;
  38.    static final int DBG_APPLET_USER = 1;
  39.    static final int DBG_LOADING_USER = 2;
  40.    static final int DBG_CONTEXT_USER = 3;
  41.    static final int DBG_APPLET_DEV = 4;
  42.    static final int DBG_LOADING_DEV = 5;
  43.    static final int DBG_CONTEXT_DEV = 6;
  44.    static final int DBG_APPLET_NS = 7;
  45.    static final int DBG_LOADING_NS = 8;
  46.    static final int DBG_CONTEXT_NS = 9;
  47.  
  48.    MozillaAppletContext(Integer var1, String var2) {
  49.       this.contextID = var1;
  50.       this.appletFrames = new Mapping();
  51.       this.imageCache = new Hashtable();
  52.       this.audioClipCache = new Hashtable();
  53.       if (debug >= 3) {
  54.          System.out.println("# New applet context: " + var2 + ", contextID=" + var1);
  55.       }
  56.  
  57.       if (var2 != null) {
  58.          try {
  59.             this.documentURL = new URL(var2);
  60.          } catch (MalformedURLException var3) {
  61.             if (debug >= 4) {
  62.                System.err.println("#     Malformed documentURL: " + var2);
  63.             }
  64.  
  65.             this.mochaOnLoad(-1);
  66.          }
  67.       }
  68.    }
  69.  
  70.    static void indent(PrintStream var0, int var1) {
  71.       while(true) {
  72.          --var1;
  73.          if (var1 < 0) {
  74.             return;
  75.          }
  76.  
  77.          var0.print("  ");
  78.       }
  79.    }
  80.  
  81.    void dumpState(PrintStream var1, int var2) {
  82.       indent(var1, var2);
  83.       var1.println("MozillaAppletContext id=" + this.contextID + " #frames=" + this.appletFrames.size() + " #images=" + this.imageCache.size() + " #audioClips=" + this.audioClipCache.size() + " url=" + this.documentURL);
  84.       int var3 = this.appletFrames.size();
  85.  
  86.       for(int var4 = 0; var4 < var3; ++var4) {
  87.          DerivedAppletFrame var5 = (DerivedAppletFrame)this.appletFrames.elementAt(var4);
  88.          var5.dumpState(var1, var2 + 1);
  89.       }
  90.  
  91.       if (this.imageCache.size() > 0) {
  92.          indent(var1, var2 + 1);
  93.          var1.println("image cache:");
  94.          Enumeration var7 = this.imageCache.keys();
  95.  
  96.          while(var7.hasMoreElements()) {
  97.             URL var6 = (URL)var7.nextElement();
  98.             indent(var1, var2 + 2);
  99.             var1.println(var6.toString());
  100.          }
  101.       }
  102.  
  103.       if (this.audioClipCache.size() > 0) {
  104.          indent(var1, var2 + 1);
  105.          var1.println("audio clip cache:");
  106.          Enumeration var8 = this.audioClipCache.keys();
  107.  
  108.          while(var8.hasMoreElements()) {
  109.             URL var9 = (URL)var8.nextElement();
  110.             indent(var1, var2 + 2);
  111.             var1.println(var9.toString());
  112.          }
  113.       }
  114.  
  115.    }
  116.  
  117.    synchronized void destroy() {
  118.       if (debug >= 3) {
  119.          System.err.println("# Destroying applet context: " + this.documentURL + ", contextID=" + this.contextID);
  120.       }
  121.  
  122.       if (debug >= 9) {
  123.          System.err.println("#   frameMWContext=" + this.frameMWContext);
  124.       }
  125.  
  126.       this.destroyApplets();
  127.       this.frameMWContext = 0;
  128.       this.appletFrames = null;
  129.       this.imageCache = null;
  130.       this.audioClipCache = null;
  131.       appletContexts.remove(this.contextID);
  132.    }
  133.  
  134.    public AudioClip getAudioClip(URL var1) {
  135.       AudioClip var2 = lookupAudioClip(this, var1);
  136.       return var2;
  137.    }
  138.  
  139.    public Image getImage(URL var1) {
  140.       Image var2 = lookupImage(this, var1);
  141.       return var2;
  142.    }
  143.  
  144.    public Applet getApplet(String var1) {
  145.       int var2 = this.appletFrames.size();
  146.  
  147.       for(int var3 = 0; var3 < var2; ++var3) {
  148.          DerivedAppletFrame var4 = (DerivedAppletFrame)this.appletFrames.elementAt(var3);
  149.          if (var1.equals(var4.applet.getParameter("name"))) {
  150.             return var4.applet;
  151.          }
  152.       }
  153.  
  154.       return null;
  155.    }
  156.  
  157.    public Enumeration getApplets() {
  158.       int var1 = this.appletFrames.size();
  159.       Vector var2 = new Vector(var1);
  160.  
  161.       for(int var3 = 0; var3 < var1; ++var3) {
  162.          DerivedAppletFrame var4 = (DerivedAppletFrame)this.appletFrames.elementAt(var3);
  163.          var2.addElement(var4.applet);
  164.       }
  165.  
  166.       return var2.elements();
  167.    }
  168.  
  169.    public void showDocument(URL var1) {
  170.       this.showDocument(var1, "_top");
  171.    }
  172.  
  173.    public void showDocument(URL var1, String var2) {
  174.       this.pShowDocument(var1.toExternalForm(), (String)null, var2);
  175.    }
  176.  
  177.    public void showStatus(String var1) {
  178.       this.pShowStatus(var1);
  179.    }
  180.  
  181.    public void mochaOnLoad(int var1) {
  182.       this.pMochaOnLoad(var1);
  183.    }
  184.  
  185.    private native void pShowDocument(String var1, String var2, String var3);
  186.  
  187.    private native void pShowStatus(String var1);
  188.  
  189.    private native void pMochaOnLoad(int var1);
  190.  
  191.    static synchronized AudioClip lookupAudioClip(MozillaAppletContext var0, URL var1) {
  192.       int var2 = appletContexts.size();
  193.  
  194.       for(int var3 = 0; var3 < var2; ++var3) {
  195.          MozillaAppletContext var4 = (MozillaAppletContext)appletContexts.elementAt(var3);
  196.          Object var5 = var4.audioClipCache.get(var1);
  197.          if (var5 != null) {
  198.             return (AudioClip)var5;
  199.          }
  200.       }
  201.  
  202.       AppletAudioClip var6 = new AppletAudioClip(var1);
  203.       var0.audioClipCache.put(var1, var6);
  204.       if (debug >= 2) {
  205.          System.err.println("# Loaded audio clip: " + var1);
  206.       }
  207.  
  208.       return var6;
  209.    }
  210.  
  211.    static synchronized Image lookupImage(MozillaAppletContext var0, URL var1) {
  212.       int var2 = appletContexts.size();
  213.  
  214.       for(int var3 = 0; var3 < var2; ++var3) {
  215.          MozillaAppletContext var4 = (MozillaAppletContext)appletContexts.elementAt(var3);
  216.          Object var5 = var4.imageCache.get(var1);
  217.          if (var5 != null) {
  218.             return (Image)var5;
  219.          }
  220.       }
  221.  
  222.       Image var7;
  223.       try {
  224.          URLImageSource var8 = new URLImageSource(var1);
  225.          var7 = Toolkit.getDefaultToolkit().createImage(var8);
  226.          var0.imageCache.put(var1, var7);
  227.          if (debug >= 2) {
  228.             System.err.println("# Loaded image: " + var1);
  229.          }
  230.       } catch (Exception var6) {
  231.          var7 = null;
  232.       }
  233.  
  234.       return var7;
  235.    }
  236.  
  237.    synchronized void initApplet(int var1, String var2, Hashtable var3, boolean var4) {
  238.       if (debug >= 4) {
  239.          String var5 = (String)var3.get("code");
  240.          System.err.println("# Initializing applet: " + var5 + ", appletID=" + var1 + ", contextID=" + this.contextID);
  241.       }
  242.  
  243.       if (debug >= 7) {
  244.          System.err.println("#   docURL=" + var2 + " reloadClasses=" + var4);
  245.       }
  246.  
  247.       if (this.documentURL != null) {
  248.          String var18 = (String)var3.get("codebase");
  249.          if (var18 == null) {
  250.             int var6 = var2.lastIndexOf(47) + 1;
  251.             var18 = var2.substring(0, var6);
  252.          } else {
  253.             if (!var18.endsWith("/")) {
  254.                var18 = var18 + "/";
  255.             }
  256.  
  257.             try {
  258.                URL var19 = new URL(this.documentURL, var18);
  259.                var18 = var19.toString();
  260.                int var7 = var18.lastIndexOf(47) + 1;
  261.                if (var7 != var18.length() - 1) {
  262.                   var18 = var18.substring(0, var7);
  263.                }
  264.             } catch (MalformedURLException var17) {
  265.             }
  266.  
  267.             if (!var2.startsWith("file:") && var18.startsWith("file:")) {
  268.                throw new AppletSecurityException("Illegal access from non-'file:' document to 'file:' codebase.\n#\tdocument: " + var2 + "\n#\tcodebase: " + var18);
  269.             }
  270.          }
  271.  
  272.          var3.put("codebase", var18);
  273.          URL var20 = this.documentURL;
  274.  
  275.          try {
  276.             var20 = new URL(var18);
  277.          } catch (MalformedURLException var16) {
  278.          }
  279.  
  280.          URL var21 = null;
  281.          String var8 = (String)var3.get("archive");
  282.          if (var8 != null) {
  283.             try {
  284.                int var9 = var8.indexOf(44);
  285.                if (var9 != -1) {
  286.                   var8 = var8.substring(0, var9);
  287.                }
  288.  
  289.                URL var10 = new URL(var20, var8);
  290.                var8 = var10.toString();
  291.             } catch (MalformedURLException var15) {
  292.             }
  293.  
  294.             if (!var2.startsWith("file:") && var18.startsWith("file:")) {
  295.                throw new AppletSecurityException("Illegal access from non-'file:' document to 'file:' codebase.\n#\tdocument: " + var2 + "\n#\tcodebase: " + var18);
  296.             }
  297.  
  298.             var3.put("archive", var8);
  299.  
  300.             try {
  301.                var21 = new URL(var8);
  302.             } catch (MalformedURLException var14) {
  303.             }
  304.          }
  305.  
  306.          Integer var22 = new Integer(var1);
  307.          DerivedAppletFrame var23 = new DerivedAppletFrame(this.documentURL, var20, var21, var3, this, var22, var4);
  308.          this.appletFrames.put(var22, var23);
  309.          ++totalApplets;
  310.          if (debug >= 7) {
  311.             System.err.println("#     total applets=" + totalApplets);
  312.          }
  313.  
  314.          if (debug >= 7) {
  315.             String var11 = "";
  316.  
  317.             Object var13;
  318.             for(Enumeration var12 = var3.keys(); var12.hasMoreElements(); var11 = var11 + (String)var13 + "=" + (String)var3.get(var13) + " ") {
  319.                var13 = var12.nextElement();
  320.             }
  321.  
  322.             System.err.println("#     New applet: " + var1 + " at " + var20 + " " + var11);
  323.          }
  324.  
  325.          var23.start();
  326.          ((Window)var23).pack();
  327.          ((Window)var23).show();
  328.          var23.sendEvent(new AppletEvent(1));
  329.          var23.sendEvent(new AppletEvent(2));
  330.       }
  331.    }
  332.  
  333.    DerivedAppletFrame getAppletFrame(Integer var1) {
  334.       DerivedAppletFrame var2 = (DerivedAppletFrame)this.appletFrames.get(var1);
  335.       if (var2 == null && debug >= 7) {
  336.          System.err.println("#   Warning: AppletFrame not found for appletID " + var1);
  337.       }
  338.  
  339.       return var2;
  340.    }
  341.  
  342.    synchronized void startApplet(int var1) {
  343.       DerivedAppletFrame var2 = this.getAppletFrame(new Integer(var1));
  344.       if (debug >= 4) {
  345.          System.err.println("# Starting applet: " + (var2 != null ? var2.getAppletName() : "?") + ", appletID=" + var1 + ", contextID=" + this.contextID);
  346.       }
  347.  
  348.       if (var2 == null) {
  349.          if (debug >= 7) {
  350.             System.err.println("#   applet must have been pruned: " + var1 + " on " + this.documentURL);
  351.          }
  352.  
  353.       } else {
  354.          var2.inHistory = false;
  355.          var2.sendEvent(new AppletEvent(3));
  356.       }
  357.    }
  358.  
  359.    synchronized void resizeApplet(int var1, int var2, int var3, int var4, int var5) {
  360.    }
  361.  
  362.    synchronized void stopApplet(int var1) {
  363.       DerivedAppletFrame var2 = this.getAppletFrame(new Integer(var1));
  364.       if (var2 != null) {
  365.          if (debug >= 4) {
  366.             System.err.println("# Stopping applet: " + var2.getAppletName() + ", appletID=" + var1 + ", contextID=" + this.contextID);
  367.          }
  368.  
  369.          var2.inHistory = true;
  370.          var2.sendEvent(new AppletEvent(4));
  371.       }
  372.    }
  373.  
  374.    synchronized void destroyApplet(Integer var1) {
  375.       DerivedAppletFrame var2 = this.getAppletFrame(var1);
  376.       if (var2 != null) {
  377.          if (noisyTrimming && debug >= 4) {
  378.             System.err.println("# Destroying applet: " + var2.getAppletName() + ", appletID=" + var1 + ", contextID=" + this.contextID);
  379.          }
  380.  
  381.          --totalApplets;
  382.          if (noisyTrimming && debug >= 7) {
  383.             System.err.println("#     total applets=" + totalApplets);
  384.          }
  385.  
  386.          if (!noisyTrimming) {
  387.             var2.noisy = false;
  388.          }
  389.  
  390.          this.appletFrames.remove(var1, true);
  391.          ThreadGroup var3 = var2.handler.getThreadGroup();
  392.          AppletThreadList var4 = new AppletThreadList(var3, var2);
  393.          killer.addAppletThread(var4);
  394.          if (this.appletFrames.isEmpty()) {
  395.             if (debug >= 9) {
  396.                System.err.println("#   destroying context for contextID " + this.contextID);
  397.             }
  398.  
  399.             this.destroy();
  400.          }
  401.  
  402.       }
  403.    }
  404.  
  405.    synchronized void iconifyApplets() {
  406.       if (debug >= 6) {
  407.          System.err.println("# Iconifying all applets: " + this.documentURL + ", contextID=" + this.contextID);
  408.       }
  409.  
  410.       int var1 = this.appletFrames.size();
  411.  
  412.       for(int var2 = 0; var2 < var1; ++var2) {
  413.          DerivedAppletFrame var3 = (DerivedAppletFrame)this.appletFrames.elementAt(var2);
  414.          if (debug >= 7) {
  415.             System.err.println("#     iconifyApplets: stopping appletID " + var3.pData);
  416.          }
  417.  
  418.          var3.sendEvent(new AppletEvent(4));
  419.       }
  420.  
  421.    }
  422.  
  423.    synchronized void uniconifyApplets() {
  424.       if (debug >= 6) {
  425.          System.err.println("# Uniconifying all applets: " + this.documentURL + ", contextID=" + this.contextID);
  426.       }
  427.  
  428.       int var1 = this.appletFrames.size();
  429.  
  430.       for(int var2 = 0; var2 < var1; ++var2) {
  431.          DerivedAppletFrame var3 = (DerivedAppletFrame)this.appletFrames.elementAt(var2);
  432.          if (debug >= 7) {
  433.             System.err.println("#     uniconifyApplets: starting appletID " + var3.pData);
  434.          }
  435.  
  436.          var3.sendEvent(new AppletEvent(3));
  437.       }
  438.  
  439.    }
  440.  
  441.    synchronized Object reflectApplet(int var1) {
  442.       if (debug >= 7) {
  443.          System.err.println("#   reflectApplet: appletID=" + var1);
  444.       }
  445.  
  446.       DerivedAppletFrame var2 = this.getAppletFrame(new Integer(var1));
  447.       return var2 == null ? null : var2.applet;
  448.    }
  449.  
  450.    synchronized void destroyApplets() {
  451.       if (debug >= 6) {
  452.          System.err.println("# Destroying all applets: " + this.documentURL + ", contextID=" + this.contextID);
  453.       }
  454.  
  455.       this.frameMWContext = 0;
  456.       int var1 = this.appletFrames.size();
  457.  
  458.       for(int var2 = var1 - 1; var2 >= 0; --var2) {
  459.          Integer var3 = (Integer)this.appletFrames.keyAt(var2);
  460.          this.destroyApplet(var3);
  461.       }
  462.  
  463.    }
  464.  
  465.    static void init() {
  466.       console = new Console();
  467.  
  468.       try {
  469.          SecurityManager.enablePrivilege("UniversalPropertyWrite");
  470.          System.setProperties(new AppletProperties());
  471.       } catch (SecurityException var0) {
  472.       }
  473.  
  474.       appletContexts = new Mapping();
  475.       killer = new AppletThreadKiller();
  476.       if (!javaOneTimeInitDone) {
  477.          SecurityManager.enablePrivilege("UniversalSetFactory");
  478.          URL.setURLStreamHandlerFactory(new URLStreamHandlerFactory());
  479.          AppletSecurity.setPrivilegeManager(new PrivilegeManager());
  480.          System.setSecurityManager(new AppletSecurity());
  481.          javaOneTimeInitDone = true;
  482.       }
  483.  
  484.       javaInitialized = true;
  485.    }
  486.  
  487.    static boolean shutdown() {
  488.       javaInitialized = false;
  489.       destroyAll();
  490.       Task.destroyAll();
  491.       boolean var0 = killer.shutdown();
  492.       killer = null;
  493.       appletContexts = null;
  494.       return var0;
  495.    }
  496.  
  497.    static void setConsoleState(int var0) {
  498.       setConsoleState0(var0);
  499.    }
  500.  
  501.    static native void setConsoleState0(int var0);
  502.  
  503.    static void showConsole() {
  504.       SecurityManager.enablePrivilege("SuperUser");
  505.       console.show();
  506.    }
  507.  
  508.    static void hideConsole() {
  509.       SecurityManager.enablePrivilege("SuperUser");
  510.       console.hide();
  511.    }
  512.  
  513.    static int trimApplets(int var0, boolean var1) {
  514.       int var2 = trimApplets1(var0, true);
  515.       if (var2 < var0 && !var1) {
  516.          var2 += trimApplets1(var0 - var2, false);
  517.       }
  518.  
  519.       return var2;
  520.    }
  521.  
  522.    static int trimApplets1(int var0, boolean var1) {
  523.       int var2;
  524.       for(var2 = 0; var0-- > 0; ++var2) {
  525.          long var3 = -1L;
  526.          DerivedAppletFrame var5 = null;
  527.          MozillaAppletContext var6 = null;
  528.          int var7 = appletContexts.size();
  529.  
  530.          for(int var8 = 0; var8 < var7; ++var8) {
  531.             MozillaAppletContext var9 = (MozillaAppletContext)appletContexts.elementAt(var8);
  532.             int var10 = var9.appletFrames.size();
  533.  
  534.             for(int var11 = 0; var11 < var10; ++var11) {
  535.                DerivedAppletFrame var12 = (DerivedAppletFrame)var9.appletFrames.elementAt(var11);
  536.                if ((!var1 || var12.inHistory) && (var3 == -1L || var12.timestamp < var3)) {
  537.                   var3 = var12.timestamp;
  538.                   var5 = var12;
  539.                   var6 = var9;
  540.                }
  541.             }
  542.          }
  543.  
  544.          if (var5 == null) {
  545.             if (noisyTrimming && debug >= 4) {
  546.                System.err.println("# No stopped applets to prune.");
  547.             }
  548.  
  549.             return var2;
  550.          }
  551.  
  552.          try {
  553.             if (noisyTrimming) {
  554.                Applet var15 = var5.applet;
  555.                String var16 = null;
  556.                if (var15 != null) {
  557.                   var16 = var15.getParameter("name");
  558.                }
  559.  
  560.                if (var16 == null) {
  561.                   var16 = var15.getClass().getName().toString();
  562.                }
  563.  
  564.                System.err.println("# Pruning applet " + var16 + " from " + var6.documentURL + " to save memory.");
  565.                if (debug >= 7) {
  566.                   System.err.println("#   Pruning appletID=" + var5.pData + " contextID=" + var6.contextID + " applet=" + var5.applet);
  567.                }
  568.             }
  569.          } catch (Throwable var14) {
  570.          }
  571.  
  572.          try {
  573.             var6.destroyApplet(var5.appletID);
  574.          } catch (Throwable var13) {
  575.          }
  576.       }
  577.  
  578.       return var2;
  579.    }
  580.  
  581.    static void trimApplets() {
  582.       trimApplets(totalApplets - trimThreshold, true);
  583.    }
  584.  
  585.    static MozillaAppletContext getAppletContext(int var0) {
  586.       Integer var1 = new Integer(var0);
  587.       MozillaAppletContext var2 = (MozillaAppletContext)appletContexts.get(var1);
  588.       if (var2 == null && debug >= 9) {
  589.          System.err.println("# Warning: applet context not found for contextID " + var0);
  590.       }
  591.  
  592.       return var2;
  593.    }
  594.  
  595.    static MozillaAppletContext ensureAppletContext(int var0, String var1) {
  596.       Integer var2 = new Integer(var0);
  597.       MozillaAppletContext var3 = (MozillaAppletContext)appletContexts.get(var2);
  598.       if (var3 == null) {
  599.          var3 = new MozillaAppletContext(var2, var1);
  600.          appletContexts.put(var2, var3);
  601.       }
  602.  
  603.       return var3;
  604.    }
  605.  
  606.    static void initApplet(int var0, int var1, int var2, int var3, String[] var4, boolean var5) {
  607.       if (javaInitialized) {
  608.          Hashtable var6 = new Hashtable();
  609.  
  610.          for(int var7 = 1; var7 < var4.length; ++var7) {
  611.             String var8 = var4[var7];
  612.             int var9 = var8.indexOf(61);
  613.             if (var9 >= 0) {
  614.                var6.put(var8.substring(0, var9).toLowerCase(), var8.substring(var9 + 1));
  615.             }
  616.          }
  617.  
  618.          String var11 = (String)var6.get("debug");
  619.          if (var11 != null) {
  620.             try {
  621.                debug = Integer.parseInt(var11);
  622.             } catch (Exception var10) {
  623.             }
  624.          }
  625.  
  626.          if (debug >= 7) {
  627.             System.err.println("# initApplet: contextID=" + var2 + " appletID=" + var3 + " parentContext=" + var0 + " frameContext=" + var1);
  628.          }
  629.  
  630.          trimApplets();
  631.          MozillaAppletContext var12 = ensureAppletContext(var2, var4[0]);
  632.          var12.frameMWContext = var1;
  633.          var12.initApplet(var3, var4[0], var6, var5);
  634.       }
  635.    }
  636.  
  637.    static void startApplet(int var0, int var1, int var2) {
  638.       if (javaInitialized) {
  639.          if (debug >= 7) {
  640.             System.err.println("# startApplet: contextID=" + var0 + " appletID=" + var1 + " newFrameMWContext=" + var2);
  641.          }
  642.  
  643.          MozillaAppletContext var3 = getAppletContext(var0);
  644.          if (var3 != null) {
  645.             var3.frameMWContext = var2;
  646.             var3.startApplet(var1);
  647.          }
  648.       }
  649.    }
  650.  
  651.    static void resizeApplet(int var0, int var1, int var2, int var3, int var4, int var5) {
  652.       if (javaInitialized) {
  653.          if (debug >= 7) {
  654.             System.err.println("# resizeApplet: contextID=" + var0 + " appletID=" + var1);
  655.          }
  656.  
  657.          MozillaAppletContext var6 = getAppletContext(var0);
  658.          if (var6 != null) {
  659.             var6.resizeApplet(var1, var2, var3, var4, var5);
  660.          }
  661.       }
  662.    }
  663.  
  664.    static void stopApplet(int var0, int var1, int var2) {
  665.       if (javaInitialized) {
  666.          if (debug >= 7) {
  667.             System.err.println("# stopApplet: contextID=" + var0 + " appletID=" + var1 + " parentMWContext=" + var2);
  668.          }
  669.  
  670.          MozillaAppletContext var3 = getAppletContext(var0);
  671.          if (var3 != null) {
  672.             var3.frameMWContext = var2;
  673.             var3.stopApplet(var1);
  674.          }
  675.       }
  676.    }
  677.  
  678.    static void destroyApplet(int var0, int var1) {
  679.       if (javaInitialized) {
  680.          if (debug >= 7) {
  681.             System.err.println("# destroyApplet: contextID=" + var0 + " appletID=" + var1);
  682.          }
  683.  
  684.          MozillaAppletContext var2 = getAppletContext(var0);
  685.          if (var2 != null) {
  686.             var2.destroyApplet(new Integer(var1));
  687.          }
  688.       }
  689.    }
  690.  
  691.    static Object reflectApplet(int var0, int var1) {
  692.       if (!javaInitialized) {
  693.          return null;
  694.       } else {
  695.          if (debug >= 7) {
  696.             System.err.println("# reflectApplet: contextID=" + var0 + " appletID=" + var1);
  697.          }
  698.  
  699.          MozillaAppletContext var2 = getAppletContext(var0);
  700.          return var2 == null ? null : var2.reflectApplet(var1);
  701.       }
  702.    }
  703.  
  704.    static void iconifyApplets(int var0) {
  705.       if (javaInitialized) {
  706.          if (debug >= 7) {
  707.             System.err.println("# iconifyApplets: contextID=" + var0);
  708.          }
  709.  
  710.          MozillaAppletContext var1 = getAppletContext(var0);
  711.          if (var1 != null) {
  712.             var1.iconifyApplets();
  713.          }
  714.       }
  715.    }
  716.  
  717.    static void uniconifyApplets(int var0) {
  718.       if (javaInitialized) {
  719.          if (debug >= 7) {
  720.             System.err.println("# uniconifyApplets: contextID=" + var0);
  721.          }
  722.  
  723.          MozillaAppletContext var1 = getAppletContext(var0);
  724.          if (var1 != null) {
  725.             var1.uniconifyApplets();
  726.          }
  727.       }
  728.    }
  729.  
  730.    static void destroyApplets(int var0) {
  731.       if (javaInitialized) {
  732.          if (debug >= 7) {
  733.             System.err.println("# destroyApplets: contextID=" + var0);
  734.          }
  735.  
  736.          MozillaAppletContext var1 = getAppletContext(var0);
  737.          if (var1 == null) {
  738.             if (debug >= 7) {
  739.                System.out.println("# Failed to find context " + var0);
  740.             }
  741.  
  742.          } else {
  743.             var1.destroy();
  744.          }
  745.       }
  746.    }
  747.  
  748.    static void destroyAll() {
  749.       if (debug >= 7) {
  750.          System.err.println("# destroyAll");
  751.       }
  752.  
  753.       int var0 = appletContexts.size();
  754.  
  755.       for(int var1 = var0 - 1; var1 >= 0; --var1) {
  756.          MozillaAppletContext var2 = (MozillaAppletContext)appletContexts.elementAt(var1);
  757.          var2.destroy();
  758.       }
  759.  
  760.    }
  761.  
  762.    static void dumpState(PrintStream var0) {
  763.       int var1 = appletContexts.size();
  764.  
  765.       for(int var2 = 0; var2 < var1; ++var2) {
  766.          MozillaAppletContext var3 = (MozillaAppletContext)appletContexts.elementAt(var2);
  767.          var3.dumpState(var0, 0);
  768.       }
  769.  
  770.    }
  771.  
  772.    Applet[] getContextAppletArray() {
  773.       Mapping var2 = this.appletFrames;
  774.       synchronized(var2){}
  775.  
  776.       Applet[] var1;
  777.       try {
  778.          int var4 = this.appletFrames.size();
  779.          Applet[] var5 = new Applet[var4];
  780.  
  781.          for(int var6 = var4 - 1; var6 >= 0; --var6) {
  782.             DerivedAppletFrame var7 = (DerivedAppletFrame)this.appletFrames.elementAt(var6);
  783.             var5[var6] = var7.applet;
  784.          }
  785.  
  786.          var1 = var5;
  787.       } catch (Throwable var9) {
  788.          throw var9;
  789.       }
  790.  
  791.       return var1;
  792.    }
  793.  
  794.    static Applet[] getAppletArray() {
  795.       int var0 = 0;
  796.       Mapping var2 = appletContexts;
  797.       synchronized(var2){}
  798.  
  799.       Applet[][] var1;
  800.       try {
  801.          int var4 = appletContexts.size();
  802.          var1 = new Applet[var4][];
  803.  
  804.          for(int var5 = var4 - 1; var5 >= 0; --var5) {
  805.             MozillaAppletContext var6 = (MozillaAppletContext)appletContexts.elementAt(var5);
  806.             var1[var5] = var6.getContextAppletArray();
  807.             var0 += var1[var5].length;
  808.          }
  809.       } catch (Throwable var8) {
  810.          throw var8;
  811.       }
  812.  
  813.       Applet[] var9 = new Applet[var0];
  814.       int var3 = 0;
  815.  
  816.       for(int var10 = 0; var10 < var1.length; ++var10) {
  817.          for(int var11 = 0; var11 < var1[var10].length; ++var11) {
  818.             var9[var3++] = var1[var10][var11];
  819.          }
  820.       }
  821.  
  822.       return var9;
  823.    }
  824.  
  825.    static MozillaAppletContext[] getAppletContexts() {
  826.       Mapping var1 = appletContexts;
  827.       synchronized(var1){}
  828.  
  829.       MozillaAppletContext[] var0;
  830.       try {
  831.          int var3 = appletContexts.size();
  832.          var0 = new MozillaAppletContext[var3];
  833.  
  834.          for(int var4 = var3 - 1; var4 >= 0; --var4) {
  835.             var0[var4] = (MozillaAppletContext)appletContexts.elementAt(var4);
  836.          }
  837.       } catch (Throwable var6) {
  838.          throw var6;
  839.       }
  840.  
  841.       return var0;
  842.    }
  843.  
  844.    EmbeddedAppletFrame getAppletFrame(Applet var1) {
  845.       Mapping var3 = this.appletFrames;
  846.       synchronized(var3){}
  847.  
  848.       try {
  849.          int var5 = this.appletFrames.size();
  850.  
  851.          for(int var6 = var5 - 1; var6 >= 0; --var6) {
  852.             DerivedAppletFrame var7 = (DerivedAppletFrame)this.appletFrames.elementAt(var6);
  853.             if (var7.applet == var1) {
  854.                DerivedAppletFrame var2 = var7;
  855.                return var2;
  856.             }
  857.          }
  858.  
  859.          return null;
  860.       } catch (Throwable var9) {
  861.          throw var9;
  862.       }
  863.    }
  864. }
  865.