gabrielg-xultestrunner 0.2.6 → 0.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. data/VERSION +1 -1
  2. data/xulapp/application.ini +2 -2
  3. data/xulapp/chrome/content/interface/boot.xul +1 -1
  4. data/xulapp/chrome/content/interface/testharness.html +2 -2
  5. data/xulapp/chrome/content/vendor/xpcomcore/LICENSE +21 -0
  6. data/xulapp/chrome/content/vendor/xpcomcore/README +11 -15
  7. data/xulapp/chrome/content/vendor/xpcomcore/Rakefile +69 -2
  8. data/xulapp/chrome/content/vendor/xpcomcore/VERSION.yml +5 -0
  9. data/xulapp/chrome/content/vendor/xpcomcore/bootstrapper.js +32 -0
  10. data/xulapp/chrome/content/vendor/xpcomcore/components/XPCOMCore.js +120 -0
  11. data/xulapp/chrome/content/vendor/xpcomcore/doc/Kernel.html +648 -0
  12. data/xulapp/chrome/content/vendor/xpcomcore/doc/LoadError.html +262 -0
  13. data/xulapp/chrome/content/vendor/xpcomcore/doc/SelfConceptError.html +262 -0
  14. data/xulapp/chrome/content/vendor/xpcomcore/doc/allclasses-frame.html +49 -0
  15. data/xulapp/chrome/content/vendor/xpcomcore/doc/allclasses-noframe.html +48 -0
  16. data/xulapp/chrome/content/vendor/xpcomcore/doc/help-doc.html +160 -0
  17. data/xulapp/chrome/content/vendor/xpcomcore/doc/index-all.html +263 -0
  18. data/xulapp/chrome/content/vendor/xpcomcore/doc/index.html +22 -0
  19. data/xulapp/chrome/content/vendor/xpcomcore/doc/overview-summary-kernel.js.html +371 -0
  20. data/xulapp/chrome/content/vendor/xpcomcore/doc/overview-summary.html +179 -0
  21. data/xulapp/chrome/content/vendor/xpcomcore/doc/overview-tree.html +127 -0
  22. data/xulapp/chrome/content/vendor/xpcomcore/doc/stylesheet.css +39 -0
  23. data/xulapp/chrome/content/vendor/xpcomcore/lib/kernel.js +146 -36
  24. data/xulapp/chrome/content/vendor/xpcomcore/test/kernel_test.js +5 -1
  25. data/xulapp/components/bootstrap.js +87 -102
  26. data/xultestrunner.gemspec +18 -4
  27. metadata +18 -4
  28. data/xulapp/chrome/content/vendor/xpcomcore/bootstrap.js +0 -108
  29. data/xulapp/chrome/content/vendor/xpcomcore/lib/loader.js +0 -16
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.6
1
+ 0.2.7
@@ -1,7 +1,7 @@
1
1
  [App]
2
2
  Name=XULTestRunner
3
- Version=0.2.6
4
- BuildID=f5199da3-fe6b-49ae-9911-7ddfda0ee953
3
+ Version=0.2.7
4
+ BuildID=f20f1e82-92d5-42ed-a4ae-41b06996bacb
5
5
  ID=XULTestRunner@conflagrationjs.org
6
6
  Vendor=Conflagration JS
7
7
 
@@ -2,7 +2,7 @@
2
2
  <?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
3
3
 
4
4
  <window id="main" title="XULTestRunner Console" width="800" height="600" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
5
- <script type="text/javascript" src="resource://xpcomcore/loader.js" />
5
+ <script type="text/javascript">XPCOMCore({scope: this});</script>
6
6
  <script type="text/javascript" src="resource://xultestrunner/vendor/prototype/prototype.js" />
7
7
  <script type="text/javascript" src="resource://xultestrunner/lib/xultestrunner.js" />
8
8
  <script type="text/javascript">
@@ -2,7 +2,7 @@
2
2
  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
3
  <head>
4
4
  <title>Unit Test Harness</title>
5
- <script type="text/javascript" src="resource://xpcomcore/loader.js"></script>
5
+ <script type="text/javascript">XPCOMCore({scope: this});</script>
6
6
  <script type="text/javascript" src="resource://xultestrunner/vendor/prototype/prototype.js"></script>
7
7
  <script type="text/javascript" src="resource://xultestrunner/vendor/scriptaculous/unittest.js"></script>
8
8
  <link rel="stylesheet" href="resource://xultestrunner/vendor/scriptaculous/test.css" type="text/css" />
@@ -13,7 +13,7 @@
13
13
  var resProt = ioService.getProtocolHandler("resource").QueryInterface(Ci.nsIResProtocolHandler);
14
14
  var libPath = ioService.newURI(resProt.resolveURI(ioService.newURI("resource://xultestrunner/lib", null, null)), null, null).QueryInterface(Components.interfaces.nsIURL).path;
15
15
 
16
- $LOAD_PATH.push(libPath);
16
+ LOAD_PATH.push(libPath);
17
17
  require("xultestcase");
18
18
 
19
19
  var qp = window.location.search.toQueryParams();
@@ -0,0 +1,21 @@
1
+ The MIT License
2
+
3
+ Copyright (c) <2009> <Gabriel Gironda>
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -8,23 +8,19 @@ Installation
8
8
 
9
9
  Check out / submodule in / whatever the code to a place of your choosing. Then load it from an XPCOM component like so:
10
10
 
11
- COMPONENTS = [];
12
- var loader = Components.classes["@mozilla.org/moz/jssubscript-loader;1"].getService(Components.interfaces.mozIJSSubScriptLoader);
13
- // We use the /app resource here because of yet another weird firefox issue where the /xultestrunner resource
14
- // isn't working as the XPCOM component gets registered.
15
- loader.loadSubScript("resource://app/chrome/content/vendor/xpcomcore/bootstrap.js");
16
- loader.loadSubScript("resource://xpcomcore/loader.js");
17
-
18
- Make sure that if you're registering your own component, you add it to the COMPONENTS array and build NSGetModule that way, kind of like so:
19
-
20
- COMPONENTS.push(MYXPCOMComponent);
21
- NSGetModule = function(compMgr, fileSpec) {
22
- return XPCOMUtils.generateModule(COMPONENTS);
23
- };
11
+ Components.utils.import("resource://app/chrome/content/vendor/xpcomcore/bootstrapper.js");
12
+
13
+ Then, to pull XPCOMCore into your scope, do this lovely little trick:
14
+
15
+ XPCOMCore({scope: this});
16
+
17
+ If you wish to not automatically mix in the `Kernel` module, pass another argument like so:
18
+
19
+ XPCOMCore({scope: this, importKernel: false});
24
20
 
25
- Then, whenever you want to make use of XPCOMCore (say, from a XUL window), load the resource in like so:
21
+ Then, whenever you want to make use of XPCOMCore (say, from a XUL window), do the same deal. For example:
26
22
 
27
- <script type="text/javascript" src="resource://xpcomcore/loader.js" />
23
+ <script type="text/javascript">XPCOMCore({scope: this});</script>
28
24
 
29
25
  Then you'll have access to methods such as load() and require() and whatever else is defined in Kernel.
30
26
 
@@ -1,7 +1,74 @@
1
+ require 'pathname'
2
+ require 'yaml'
3
+ here = (Pathname(__FILE__).parent)
4
+
1
5
  task :test do
2
- require 'pathname'
3
6
  ENV['XPCOMCORE'] = (Pathname(__FILE__).parent + "bootstrap.js").expand_path.to_s
4
7
  exec("xultest", "-testDir", (Pathname(__FILE__).parent + "test/").expand_path.to_s)
5
8
  end
6
9
 
7
- task :default => :test
10
+ task :default => :test
11
+
12
+ namespace :docs do
13
+ doc_dir = here + "doc"
14
+
15
+ desc "Builds the documentation"
16
+ task :build do
17
+ raise "jsdoc.pl does not seem to be in your PATH." if `which jsdoc.pl`.chomp.empty?
18
+ system(%Q[jsdoc.pl --project-name XPCOMCore -r -d "#{doc_dir}" "#{here + "lib"}"])
19
+ end
20
+
21
+ task :clean do
22
+ FileUtils.rm_rf(doc_dir)
23
+ FileUtils.mkdir(doc_dir)
24
+ end
25
+
26
+ task :commit do
27
+ system(%Q[cd "#{here}" && git add "doc" && git commit -m "Updating docs"])
28
+ end
29
+ end
30
+
31
+ task :build => ['version:update_files', 'docs:clean', 'docs:build', 'docs:commit']
32
+
33
+ task :release => :build do
34
+ system(%Q[cd #{here} && git push])
35
+ end
36
+
37
+ namespace :version do
38
+ version_file = here + "VERSION.yml"
39
+
40
+ task :update_files do
41
+ component_file = (Pathname(__FILE__).parent + "components/XPCOMCore.js").expand_path
42
+ current = YAML.load_file(version_file.to_s)
43
+ version_string = "#{current['version']['major']}.#{current['version']['minor']}.#{current['version']['patch']}"
44
+ js_marker_comment = "// DO NOT REMOVE THIS COMMENT OR MOVE THIS LINE. THIS LINE IS AUTO-GENERATED FROM A RAKE TASK. @XPCOMCORE_VERSION@"
45
+ js_version_string = "var XPCOMCoreVersion = '#{version_string}'; #{js_marker_comment}\n"
46
+ new_file = component_file.readlines.collect do |line|
47
+ next line unless line =~ /@XPCOMCORE_VERSION@/
48
+ js_version_string
49
+ end
50
+
51
+ component_file.open('w') { |f| f << new_file.join }
52
+ puts "Updated '#{component_file}' to reflect VERSION.yml"
53
+ system(%Q[cd "#{here}" && git add "#{component_file}" && git commit -m "Updating version to '#{version_string}'" "#{component_file}"])
54
+ end
55
+
56
+ namespace :bump do
57
+ bumper = lambda do |version_part|
58
+ current = YAML.load_file(version_file.to_s)
59
+ puts "Current version is: #{current['version']['major']}.#{current['version']['minor']}.#{current['version']['patch']}"
60
+ current['version'][version_part] += 1
61
+ version_file.open('w') { |f| f << YAML.dump(current) }
62
+ puts "Current version is now: #{current['version']['major']}.#{current['version']['minor']}.#{current['version']['patch']}"
63
+ end
64
+
65
+ desc "Bumps the major version"
66
+ task(:major) { bumper.call('major') }
67
+
68
+ desc "Bumps the minor version"
69
+ task(:minor) { bumper.call('minor') }
70
+
71
+ desc "Bumps the patch version"
72
+ task(:patch) { bumper.call('patch') }
73
+ end
74
+ end
@@ -0,0 +1,5 @@
1
+ ---
2
+ version:
3
+ major: 0
4
+ patch: 0
5
+ minor: 2
@@ -0,0 +1,32 @@
1
+ const requiredMinGeckoVersion = '1.9.0';
2
+ var EXPORTED_SYMBOLS = ["XPCOMCore", "XPCOMCoreConfig"];
3
+
4
+ const Cc = Components.classes;
5
+ const Ci = Components.interfaces;
6
+
7
+ var checkGeckoVersion = function() {
8
+ var versionComparator = Cc["@mozilla.org/xpcom/version-comparator;1"].getService(Ci.nsIVersionComparator);
9
+ var appInfo = Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULAppInfo);
10
+ if (versionComparator.compare(appInfo.platformVersion, requiredMinGeckoVersion) < 0) {
11
+ throw("Gecko version '" + appInfo.platformVersion + "' is unable to use XPCOMCore.");
12
+ }
13
+ };
14
+
15
+ // Check we're even compatible with this version of Gecko before doing anything else.
16
+ checkGeckoVersion();
17
+
18
+ // Set up a resource substitution for our current directory location
19
+ var ioService = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);
20
+ var resProt = ioService.getProtocolHandler("resource").QueryInterface(Ci.nsIResProtocolHandler);
21
+ var currentDir = ioService.newURI(Components.stack.filename, null, null).QueryInterface(Ci.nsIFileURL).file.parent;
22
+ resProt.setSubstitution("xpcomcore", ioService.newFileURI(currentDir));
23
+
24
+ // Register our XPCOM Components
25
+ var componentsDir = ioService.newURI("resource://xpcomcore/components", null, null).QueryInterface(Ci.nsIFileURL).file;
26
+ Components.manager.QueryInterface(Ci.nsIComponentRegistrar).autoRegister(componentsDir);
27
+
28
+ // Now we're registered, export a reference to the service for the component that's bootstrapping us,
29
+ // since "Javascript global property"/"Javascript global constructor" don't get exported into the
30
+ // BackstagePass environment.
31
+ const XPCOMCore = Cc["@conflagrationjs.org/xpcomcore/core-constructor;1"].createInstance();
32
+ const XPCOMCoreConfig = Cc["@conflagrationjs.org/xpcomcore/core;1"].createInstance();
@@ -0,0 +1,120 @@
1
+ var XPCOMCoreVersion = '0.2.0'; // DO NOT REMOVE THIS COMMENT OR MOVE THIS LINE. THIS LINE IS AUTO-GENERATED FROM A RAKE TASK. @XPCOMCORE_VERSION@
2
+ Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
3
+
4
+ const Cc = Components.classes;
5
+ const Ci = Components.interfaces;
6
+
7
+ var ioService = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);
8
+ var libRoot = ioService.newURI("resource://xpcomcore/lib", null, null).QueryInterface(Ci.nsIFileURL).file.path;
9
+
10
+ // NOTE - XPCOMCore is a singleton
11
+ var XPCOMCore = function() {
12
+ if (arguments.callee.__singletonInstance__) { return arguments.callee.__singletonInstance__; };
13
+
14
+ // Private method that does the work of loading the XPCOMCore kernel
15
+ // into the given scope.
16
+ var loadKernel = function(importScope) {
17
+ var loader = Cc["@mozilla.org/moz/jssubscript-loader;1"].getService(Ci.mozIJSSubScriptLoader);
18
+ loader.loadSubScript("resource://xpcomcore/lib/kernel.js", importScope);
19
+ };
20
+
21
+ // Private method to actually kick off the importing of kernel into the given
22
+ // import scope.
23
+ var import = function(importScope, importKernel) {
24
+ if (importScope.__XPCOMCoreLoaded__) {
25
+ return false;
26
+ } else {
27
+ loadKernel(importScope);
28
+ // FIXME - defineGetter explodes when it's a 'Window' object for some reason. Fine for
29
+ // ChromeWindow and fine for BackstagePass though. Weird.
30
+ // importScope.__defineGetter__('__XPCOMCoreLoaded__', function() { return true; });
31
+ importScope.__XPCOMCoreLoaded__ = true;
32
+ // Automatically mix Kernel into the scope if importKernel is true
33
+ if (importKernel) { importScope.Kernel(importScope); };
34
+ return true;
35
+ }
36
+ };
37
+
38
+ // FIXME - hack. hijacking the nsIWritableVariant interface so we can have a constructor that works
39
+ // FIXME - and to boot, for reasons i dont understand, we wrap the scope in another object, hence the options
40
+ // hash. which might be useful anyway.
41
+ this.setFromVariant = function(options) {
42
+ if (!options.scope) { return false; }
43
+ return import(options.scope, !(options.importKernel === false));
44
+ };
45
+
46
+ arguments.callee.__singletonInstance__ = this;
47
+ // HACK HACK HACK - this is so we can get a reference to the real constructor
48
+ // from the bootstrapper.
49
+ this.__specialConstructor__ = arguments.callee;
50
+ };
51
+
52
+ // FIXME - maybe? might not really be a 'bug'
53
+ // Bahaha - we rely on http://mxr.mozilla.org/mozilla1.8/source/js/src/xpconnect/src/xpcwrappedjsclass.cpp#528
54
+ // (as written about in http://weblogs.mozillazine.org/weirdal/archives/019778.html) to expose a getProperty
55
+ // method on this object to allow for getting arbitrary properties.
56
+ var XPCOMCoreInterfaces = [Ci.nsIClassInfo, Ci.nsIPropertyBag, Ci.nsIWritableVariant];
57
+
58
+ XPCOMCore.prototype = {
59
+ classDescription: "XPCOMCore Core Object",
60
+ contractID: "@conflagrationjs.org/xpcomcore/core;1",
61
+ classID: Components.ID("{f562f600-9c25-11de-8a39-0800200c9a66}"),
62
+ QueryInterface: XPCOMUtils.generateQI(XPCOMCoreInterfaces),
63
+ _xpcom_categories: [{category: "JavaScript global property", entry: "XPCOMCoreConfig"}],
64
+
65
+ // implemented for nsIClassInfo
66
+ getInterfaces: function(aCountRef) {
67
+ aCountRef.value = XPCOMCoreInterfaces.length;
68
+ return XPCOMCoreInterfaces;
69
+ },
70
+
71
+ // implemented for nsIClassInfo
72
+ getHelperForLanguage: function(aLanguage) { return null; },
73
+
74
+ // implemented for nsIClassInfo
75
+ implementationLanguage: Ci.nsIProgrammingLanguage.JAVASCRIPT,
76
+
77
+ // implemented for nsIClassInfo
78
+ flags: Ci.nsIClassInfo.SINGLETON,
79
+
80
+ get version() { return new String(XPCOMCoreVersion); },
81
+ get libRoot() { return new String(libRoot); }
82
+
83
+ };
84
+
85
+ var XPCOMCoreConstructorInterfaces = [Ci.nsIClassInfo, Components.interfaces.nsIXPCConstructor, Ci.nsIXPCScriptable];
86
+
87
+ // Singleton
88
+ var XPCOMCoreConstructor = function() {
89
+ if (arguments.callee.__singletonInstance__) { return arguments.callee.__singletonInstance__; };
90
+ var ctor = Components.Constructor("@conflagrationjs.org/xpcomcore/core;1", Components.interfaces.nsIWritableVariant, "setFromVariant");
91
+ arguments.callee.__singletonInstance__ = ctor;
92
+ return ctor;
93
+ };
94
+
95
+ XPCOMCoreConstructor.prototype = {
96
+ classDescription: "XPCOMCore Core Object Constructor Hack",
97
+ contractID: "@conflagrationjs.org/xpcomcore/core-constructor;1",
98
+ classID: Components.ID("{b5762b40-a0ec-11de-8a39-0800200c9a66}"),
99
+ QueryInterface: XPCOMUtils.generateQI(XPCOMCoreConstructorInterfaces),
100
+ _xpcom_categories: [{category: "JavaScript global property", entry: "XPCOMCore"}],
101
+
102
+ // implemented for nsIClassInfo
103
+ getInterfaces: function(aCountRef) {
104
+ aCountRef.value = XPCOMCoreConstructorInterfaces.length;
105
+ return XPCOMCoreConstructorInterfaces;
106
+ },
107
+
108
+ // implemented for nsIClassInfo
109
+ getHelperForLanguage: function(aLanguage) { return null; },
110
+
111
+ // implemented for nsIClassInfo
112
+ implementationLanguage: Ci.nsIProgrammingLanguage.JAVASCRIPT,
113
+
114
+ // implemented for nsIClassInfo
115
+ flags: Ci.nsIClassInfo.SINGLETON
116
+ }
117
+
118
+ NSGetModule = function(compMgr, fileSpec) {
119
+ return XPCOMUtils.generateModule([XPCOMCore, XPCOMCoreConstructor]);
120
+ };
@@ -0,0 +1,648 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
2
+ <!--NewPage-->
3
+ <HTML>
4
+ <HEAD>
5
+ <TITLE>
6
+ Kernel
7
+ </TITLE>
8
+ <LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
9
+ </HEAD>
10
+ <SCRIPT>
11
+ function asd()
12
+ {
13
+ parent.document.title="Kernel";
14
+ }
15
+ </SCRIPT>
16
+ <BODY BGCOLOR="white" onload="asd();">
17
+
18
+ <!-- ========== START OF NAVBAR ========== -->
19
+ <A NAME="navbar_bottom"><!-- --></A>
20
+ <TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
21
+ <TR>
22
+ <TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
23
+ <A NAME="navbar_bottom_firstrow"><!-- --></A>
24
+ <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
25
+ <TR ALIGN="center" VALIGN="top">
26
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
27
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary-kernel.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
28
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
29
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
30
+ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"--> <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
31
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
32
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
33
+ </TR>
34
+ </TABLE>
35
+ </TD>
36
+ <TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
37
+ <B>XPCOMCore</B>
38
+ </EM>
39
+ </TD
40
+ </TR>
41
+
42
+ <TR>
43
+ <TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
44
+ &nbsp;<B>PREV CLASS</B><!--
45
+ NEXT CLASS
46
+ -->
47
+ &nbsp;<A HREF="LoadError.html"><B>NEXT CLASS</B></A></FONT></TD>
48
+ <TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
49
+ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A> &nbsp;
50
+ &nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A> &nbsp;
51
+ &nbsp;
52
+ <SCRIPT>
53
+ <!--
54
+ if(window==top) {
55
+ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
56
+ }
57
+ //-->
58
+ </SCRIPT>
59
+ <NOSCRIPT>
60
+ <A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
61
+ </NOSCRIPT>
62
+ </FONT></TD>
63
+ </TR>
64
+ <TR>
65
+ <TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
66
+ SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
67
+ <TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
68
+ DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
69
+ </TR>
70
+ </TABLE>
71
+ <!-- =========== END OF NAVBAR =========== -->
72
+ <HR>
73
+
74
+ <!-- ======== START OF CLASS DATA ======== -->
75
+ <H2>Class Kernel</H2>
76
+ <PRE>Object
77
+ |
78
+ +--<b>Kernel</b>
79
+ </PRE>
80
+
81
+
82
+ <HR>
83
+ <DL>
84
+ <!-- Class definition -->
85
+ <DT>class
86
+ <B>Kernel</B>
87
+
88
+
89
+ </DL>
90
+
91
+ <P>
92
+ <BR/>Our central 'class' containing a lot of properties and methods we need to
93
+ build the rest of XPCOMCore on top of.
94
+ <BR/><I>Defined in <a href='overview-summary-kernel.js.html'>kernel.js</a></I><BR/><BR/>
95
+ </P>
96
+
97
+ <HR>
98
+
99
+ <!-- ======== NESTED CLASS SUMMARY ======== -->
100
+
101
+ <!-- ======== END NESTED CLASS SUMMARY ======== -->
102
+
103
+
104
+ <!-- =========== FIELD SUMMARY =========== -->
105
+
106
+ <A NAME="field_summary"><!-- --></A>
107
+ <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
108
+ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
109
+ <TD COLSPAN=2><FONT SIZE="+2">
110
+ <B>Field Summary</B></FONT></TD>
111
+ </TR>
112
+
113
+ <!-- This is one instance field summary -->
114
+
115
+ <TR BGCOLOR="white" CLASS="TableRowColor">
116
+ <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
117
+ <CODE>&nbsp;&lt;final&gt;&nbsp;Object</CODE></FONT></TD>
118
+ <TD><CODE><B><A HREF="#Cc">Cc</A></B></CODE>
119
+ <BR>
120
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A shortcut constant to Components.classes.</TD>
121
+ </TR>
122
+
123
+ <TR BGCOLOR="white" CLASS="TableRowColor">
124
+ <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
125
+ <CODE>&nbsp;&lt;final&gt;&nbsp;Object</CODE></FONT></TD>
126
+ <TD><CODE><B><A HREF="#Ci">Ci</A></B></CODE>
127
+ <BR>
128
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A shortcut constant to Components.interfaces.</TD>
129
+ </TR>
130
+
131
+ <TR BGCOLOR="white" CLASS="TableRowColor">
132
+ <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
133
+ <CODE>&nbsp;&lt;final&gt;&nbsp;Object</CODE></FONT></TD>
134
+ <TD><CODE><B><A HREF="#Cr">Cr</A></B></CODE>
135
+ <BR>
136
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A shortcut constant to Components.results.</TD>
137
+ </TR>
138
+
139
+ <TR BGCOLOR="white" CLASS="TableRowColor">
140
+ <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
141
+ <CODE>&nbsp;&lt;final&gt;&nbsp;Object</CODE></FONT></TD>
142
+ <TD><CODE><B><A HREF="#Cu">Cu</A></B></CODE>
143
+ <BR>
144
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A shortcut constant to Components.utils.</TD>
145
+ </TR>
146
+
147
+ <TR BGCOLOR="white" CLASS="TableRowColor">
148
+ <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
149
+ <CODE>&nbsp;&lt;final&gt;&nbsp;Array</CODE></FONT></TD>
150
+ <TD><CODE><B><A HREF="#LOAD_PATH">LOAD_PATH</A></B></CODE>
151
+ <BR>
152
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Taking inspiration from Ruby, this defines the set of paths to check when
153
+ trying to load a file via either <a href="Kernel.html#load">Kernel.load()</a> or <a href="Kernel.html#require">Kernel.require()</a>.</TD>
154
+ </TR>
155
+
156
+ <TR BGCOLOR="white" CLASS="TableRowColor">
157
+ <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
158
+ <CODE>&nbsp;&lt;final&gt;&nbsp;Array</CODE></FONT></TD>
159
+ <TD><CODE><B><A HREF="#LOADED_FEATURES">LOADED_FEATURES</A></B></CODE>
160
+ <BR>
161
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Taking inspiration from Ruby, this defines the currently loaded files that
162
+ have been loaded through <a href="Kernel.html#require">Kernel.require()</a>.</TD>
163
+ </TR>
164
+
165
+
166
+ </TABLE>
167
+ &nbsp;
168
+
169
+
170
+
171
+
172
+ <!-- =========== END FIELD SUMMARY =========== -->
173
+
174
+
175
+ <!-- ======== CONSTRUCTOR SUMMARY ======== -->
176
+
177
+ <A NAME="constructor_summary"><!-- --></A>
178
+ <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
179
+ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
180
+ <TD COLSPAN=2><FONT SIZE="+2">
181
+ <B>Constructor Summary</B></FONT></TD>
182
+ </TR>
183
+ <TR BGCOLOR="white" CLASS="TableRowColor">
184
+ <TD>
185
+ <CODE>
186
+ <B>
187
+ <A HREF="#Kernel()">Kernel</A></B>(&lt;Object&gt; mixinScope)
188
+ </CODE>
189
+ <BR>
190
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
191
+ A pseudo-constructor to make JSDoc happy and actually document things in <a href="Kernel.html#">Kernel</a>.
192
+ </TD>
193
+ </TR>
194
+ </TABLE>
195
+
196
+ <!-- ======== END CONSTRUCTOR SUMMARY ======== -->
197
+
198
+ &nbsp;
199
+
200
+ <!-- ========== METHOD SUMMARY =========== -->
201
+
202
+ <A NAME="method_summary"><!-- --></A>
203
+ <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
204
+ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
205
+ <TD COLSPAN=2><FONT SIZE="+2">
206
+ <B>Method Summary</B></FONT></TD>
207
+ </TR>
208
+
209
+
210
+ <TR BGCOLOR="white" CLASS="TableRowColor">
211
+ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
212
+ <FONT SIZE="-1">
213
+ <CODE>&nbsp;String</CODE>
214
+ </FONT>
215
+ </TD>
216
+ <TD>
217
+ <CODE>
218
+ <B>
219
+ <A HREF="#CURRENT_FILE">CURRENT_FILE</A></B>()
220
+ </CODE>
221
+ <BR>
222
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
223
+ Taking inspiration from Ruby, this method tries to determine the filesystem path to
224
+ the caller code of this method.
225
+ </TD>
226
+ </TR>
227
+
228
+ <TR BGCOLOR="white" CLASS="TableRowColor">
229
+ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
230
+ <FONT SIZE="-1">
231
+ <CODE>&nbsp;Boolean</CODE>
232
+ </FONT>
233
+ </TD>
234
+ <TD>
235
+ <CODE>
236
+ <B>
237
+ <A HREF="#load">load</A></B>(&lt;String&gt; featurePath)
238
+ </CODE>
239
+ <BR>
240
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
241
+ Searches <a href="Kernel.html#LOAD_PATH">LOAD_PATH</a> for files to load into the current global scope.
242
+ </TD>
243
+ </TR>
244
+
245
+ <TR BGCOLOR="white" CLASS="TableRowColor">
246
+ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
247
+ <FONT SIZE="-1">
248
+ <CODE>&nbsp;void</CODE>
249
+ </FONT>
250
+ </TD>
251
+ <TD>
252
+ <CODE>
253
+ <B>
254
+ <A HREF="#print">print</A></B>(&lt;String&gt; str)
255
+ </CODE>
256
+ <BR>
257
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
258
+ Prints a string to standard out, without a trailing newline.
259
+ </TD>
260
+ </TR>
261
+
262
+ <TR BGCOLOR="white" CLASS="TableRowColor">
263
+ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
264
+ <FONT SIZE="-1">
265
+ <CODE>&nbsp;void</CODE>
266
+ </FONT>
267
+ </TD>
268
+ <TD>
269
+ <CODE>
270
+ <B>
271
+ <A HREF="#puts">puts</A></B>(&lt;String&gt; str)
272
+ </CODE>
273
+ <BR>
274
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
275
+ Prints a string to standard out, with a trailing newline.
276
+ </TD>
277
+ </TR>
278
+
279
+ <TR BGCOLOR="white" CLASS="TableRowColor">
280
+ <TD ALIGN="right" VALIGN="top" WIDTH="1%">
281
+ <FONT SIZE="-1">
282
+ <CODE>&nbsp;Boolean True if successful, false if the specified feature has already been required.</CODE>
283
+ </FONT>
284
+ </TD>
285
+ <TD>
286
+ <CODE>
287
+ <B>
288
+ <A HREF="#require">require</A></B>(feature)
289
+ </CODE>
290
+ <BR>
291
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
292
+ Searches <a href="Kernel.html#LOAD_PATH">LOAD_PATH</a> for features to load into the current global scope.
293
+ </TD>
294
+ </TR>
295
+
296
+
297
+ </TABLE>
298
+
299
+
300
+
301
+ <P>
302
+ <!-- ========== END METHOD SUMMARY =========== -->
303
+
304
+
305
+ <!-- ============ FIELD DETAIL START =========== -->
306
+
307
+ <A NAME="field_detail"><!-- --></A>
308
+ <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
309
+ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
310
+ <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
311
+ </TR>
312
+ </TABLE>
313
+
314
+
315
+ <A NAME="Cc"><!-- --></A>
316
+ <H3>Cc</H3>
317
+ <PRE>&lt;final&gt;&nbsp;Object&nbsp;<B>Cc</B></PRE>
318
+ <UL>
319
+ A shortcut constant to Components.classes.
320
+
321
+ </UL>
322
+ <HR>
323
+
324
+ <A NAME="Ci"><!-- --></A>
325
+ <H3>Ci</H3>
326
+ <PRE>&lt;final&gt;&nbsp;Object&nbsp;<B>Ci</B></PRE>
327
+ <UL>
328
+ A shortcut constant to Components.interfaces.
329
+
330
+ </UL>
331
+ <HR>
332
+
333
+ <A NAME="Cr"><!-- --></A>
334
+ <H3>Cr</H3>
335
+ <PRE>&lt;final&gt;&nbsp;Object&nbsp;<B>Cr</B></PRE>
336
+ <UL>
337
+ A shortcut constant to Components.results.
338
+
339
+ </UL>
340
+ <HR>
341
+
342
+ <A NAME="Cu"><!-- --></A>
343
+ <H3>Cu</H3>
344
+ <PRE>&lt;final&gt;&nbsp;Object&nbsp;<B>Cu</B></PRE>
345
+ <UL>
346
+ A shortcut constant to Components.utils.
347
+
348
+ </UL>
349
+ <HR>
350
+
351
+ <A NAME="LOAD_PATH"><!-- --></A>
352
+ <H3>LOAD_PATH</H3>
353
+ <PRE>&lt;final&gt;&nbsp;Array&nbsp;<B>LOAD_PATH</B></PRE>
354
+ <UL>
355
+ Taking inspiration from Ruby, this defines the set of paths to check when
356
+ trying to load a file via either <a href="Kernel.html#load">Kernel.load()</a> or <a href="Kernel.html#require">Kernel.require()</a>.
357
+
358
+ </UL>
359
+ <HR>
360
+
361
+ <A NAME="LOADED_FEATURES"><!-- --></A>
362
+ <H3>LOADED_FEATURES</H3>
363
+ <PRE>&lt;final&gt;&nbsp;Array&nbsp;<B>LOADED_FEATURES</B></PRE>
364
+ <UL>
365
+ Taking inspiration from Ruby, this defines the currently loaded files that
366
+ have been loaded through <a href="Kernel.html#require">Kernel.require()</a>.
367
+
368
+ </UL>
369
+ <HR>
370
+
371
+
372
+
373
+ <!-- ============ FIELD DETAIL END =========== -->
374
+
375
+ <!-- ========= CONSTRUCTOR DETAIL START ======== -->
376
+
377
+ <A NAME="constructor_detail"><!-- --></A>
378
+ <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
379
+ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
380
+ <TD COLSPAN=1>
381
+ <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
382
+ </TD>
383
+ </TR>
384
+ </TABLE>
385
+
386
+ <A NAME="Kernel()"><!-- --></A><H3>
387
+ Kernel</H3>
388
+ <PRE><B>Kernel</B>(&lt;Object&gt; mixinScope)</PRE>
389
+
390
+
391
+ <UL>
392
+ A pseudo-constructor to make JSDoc happy and actually document things in <a href="Kernel.html#">Kernel</a>.
393
+ If this method is called with an argument, all properties from <a href="Kernel.html#">Kernel</a> are taken
394
+ and defined as the return value of getter methods set on the given object.
395
+ </UL>
396
+
397
+
398
+
399
+ <UL>
400
+ <B>Parameters:</B>
401
+
402
+ <UL><CODE>mixinScope</CODE> - Optional argument, any object to mix <a href="Kernel.html#">Kernel</a>'s properties into.
403
+ </UL>
404
+
405
+
406
+ </UL>
407
+
408
+
409
+ <!-- Constructor return value(s) -->
410
+
411
+ <UL>
412
+ <B>Returns:</B>
413
+ <UL>
414
+ The prototype object of the Kernel function.
415
+ </UL>
416
+ </UL>
417
+
418
+ <!-- End constructor return value(s) -->
419
+
420
+ <!-- ADDITIONAL ATTRIBUTES -->
421
+
422
+ <HR/>
423
+ <!-- END ADDITIONAL ATTRIBUTES -->
424
+
425
+ <!-- ========= CONSTRUCTOR DETAIL END ======== -->
426
+
427
+
428
+ <!-- ============ METHOD DETAIL START ========== -->
429
+
430
+ <A NAME="method_detail"><!-- --></A>
431
+ <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
432
+ <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
433
+ <TD COLSPAN=1><FONT SIZE="+2">
434
+ <B>Method Detail</B></FONT>
435
+ </TD>
436
+ </TR>
437
+ </TABLE>
438
+
439
+ <!-- One single method detail entry -->
440
+
441
+ <A NAME="CURRENT_FILE"><!-- --></A>
442
+ <H3>CURRENT_FILE</H3>
443
+ <PRE>String <B>CURRENT_FILE</B>()</PRE>
444
+
445
+ <UL>Taking inspiration from Ruby, this method tries to determine the filesystem path to
446
+ the caller code of this method.</UL>
447
+
448
+
449
+ <!-- METHOD PARAMETERS START -->
450
+
451
+ <!-- METHOD PARAMETERS END -->
452
+
453
+
454
+
455
+ <!-- ADDITIONAL ATTRIBUTES START -->
456
+
457
+ <UL>
458
+ <B>Throws:</B><UL>- <a href="SelfConceptError.html#">SelfConceptError</a> Thrown when we can't figure out what the filesystem path to the current file is.</UL>
459
+ </UL>
460
+
461
+ <!-- ADDITIONAL ATTRIBUTES END -->
462
+ <HR>
463
+
464
+ <A NAME="load"><!-- --></A>
465
+ <H3>load</H3>
466
+ <PRE>Boolean <B>load</B>(&lt;String&gt; featurePath)</PRE>
467
+
468
+ <UL>Searches <a href="Kernel.html#LOAD_PATH">LOAD_PATH</a> for files to load into the current global scope.
469
+ Files loaded via this method will not be added to <a href="Kernel.html#LOADED_FEATURES">Kernel.LOADED_FEATURES</a> and hence
470
+ can be repeatedly loaded and executed.</UL>
471
+
472
+
473
+ <!-- METHOD PARAMETERS START -->
474
+
475
+ <UL>
476
+ <B>Parameters:</B>
477
+
478
+ <UL><CODE>featurePath</CODE> - Full or relative path including file extension to try and load.
479
+ </UL>
480
+
481
+ </UL>
482
+
483
+ <!-- METHOD PARAMETERS END -->
484
+
485
+
486
+
487
+ <!-- ADDITIONAL ATTRIBUTES START -->
488
+
489
+ <UL>
490
+ <B>Throws:</B><UL>- <a href="LoadError.html#">LoadError</a> Thrown when we can't find the specified file in any directories specified in <a href="Kernel.html#LOAD_PATH">LOAD_PATH</a>.</UL>
491
+ </UL>
492
+
493
+ <!-- ADDITIONAL ATTRIBUTES END -->
494
+ <HR>
495
+
496
+ <A NAME="print"><!-- --></A>
497
+ <H3>print</H3>
498
+ <PRE>void <B>print</B>(&lt;String&gt; str)</PRE>
499
+
500
+ <UL>Prints a string to standard out, without a trailing newline.</UL>
501
+
502
+
503
+ <!-- METHOD PARAMETERS START -->
504
+
505
+ <UL>
506
+ <B>Parameters:</B>
507
+
508
+ <UL><CODE>str</CODE> - String to print to standard out.
509
+ </UL>
510
+
511
+ </UL>
512
+
513
+ <!-- METHOD PARAMETERS END -->
514
+
515
+
516
+
517
+ <!-- ADDITIONAL ATTRIBUTES START -->
518
+
519
+ <!-- ADDITIONAL ATTRIBUTES END -->
520
+ <HR>
521
+
522
+ <A NAME="puts"><!-- --></A>
523
+ <H3>puts</H3>
524
+ <PRE>void <B>puts</B>(&lt;String&gt; str)</PRE>
525
+
526
+ <UL>Prints a string to standard out, with a trailing newline.</UL>
527
+
528
+
529
+ <!-- METHOD PARAMETERS START -->
530
+
531
+ <UL>
532
+ <B>Parameters:</B>
533
+
534
+ <UL><CODE>str</CODE> - String to print to standard out.
535
+ </UL>
536
+
537
+ </UL>
538
+
539
+ <!-- METHOD PARAMETERS END -->
540
+
541
+
542
+
543
+ <!-- ADDITIONAL ATTRIBUTES START -->
544
+
545
+ <!-- ADDITIONAL ATTRIBUTES END -->
546
+ <HR>
547
+
548
+ <A NAME="require"><!-- --></A>
549
+ <H3>require</H3>
550
+ <PRE>Boolean True if successful, false if the specified feature has already been required. <B>require</B>(feature)</PRE>
551
+
552
+ <UL>Searches <a href="Kernel.html#LOAD_PATH">LOAD_PATH</a> for features to load into the current global scope.
553
+ Files loaded via this method will be added to <a href="Kernel.html#LOADED_FEATURES">Kernel.LOADED_FEATURES</a> and hence two
554
+ consecutive calls to this method will not load and execute the code twice.</UL>
555
+
556
+
557
+ <!-- METHOD PARAMETERS START -->
558
+
559
+ <UL>
560
+ <B>Parameters:</B>
561
+
562
+ <UL><CODE>featurePath</CODE> - Full or relative path without the file extension to try and require.
563
+ </UL>
564
+
565
+ </UL>
566
+
567
+ <!-- METHOD PARAMETERS END -->
568
+
569
+
570
+
571
+ <!-- ADDITIONAL ATTRIBUTES START -->
572
+
573
+ <UL>
574
+ <B>Throws:</B><UL>- <a href="LoadError.html#">LoadError</a> Thrown when we can't find the specified feature in any directories specified in <a href="Kernel.html#LOAD_PATH">LOAD_PATH</a>.</UL>
575
+ </UL>
576
+
577
+ <!-- ADDITIONAL ATTRIBUTES END -->
578
+ <HR>
579
+
580
+
581
+
582
+ <!-- ============ METHOD DETAIL END ========== -->
583
+
584
+ <!-- ========= END OF CLASS DATA ========= -->
585
+
586
+ <!-- ========== START OF NAVBAR ========== -->
587
+ <A NAME="navbar_bottom"><!-- --></A>
588
+ <TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
589
+ <TR>
590
+ <TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
591
+ <A NAME="navbar_bottom_firstrow"><!-- --></A>
592
+ <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
593
+ <TR ALIGN="center" VALIGN="top">
594
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
595
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-summary-kernel.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
596
+ <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
597
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
598
+ <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"--> <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
599
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
600
+ <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
601
+ </TR>
602
+ </TABLE>
603
+ </TD>
604
+ <TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
605
+ <B>XPCOMCore</B>
606
+ </EM>
607
+ </TD
608
+ </TR>
609
+
610
+ <TR>
611
+ <TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
612
+ &nbsp;<B>PREV CLASS</B><!--
613
+ NEXT CLASS
614
+ -->
615
+ &nbsp;<A HREF="LoadError.html"><B>NEXT CLASS</B></A></FONT></TD>
616
+ <TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
617
+ <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A> &nbsp;
618
+ &nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A> &nbsp;
619
+ &nbsp;
620
+ <SCRIPT>
621
+ <!--
622
+ if(window==top) {
623
+ document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
624
+ }
625
+ //-->
626
+ </SCRIPT>
627
+ <NOSCRIPT>
628
+ <A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
629
+ </NOSCRIPT>
630
+ </FONT></TD>
631
+ </TR>
632
+ <TR>
633
+ <TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
634
+ SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
635
+ <TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
636
+ DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
637
+ </TR>
638
+ </TABLE>
639
+
640
+ <!-- =========== END OF NAVBAR =========== -->
641
+
642
+ <HR>
643
+ <FONT SIZE="-1">
644
+
645
+ </FONT>
646
+ <div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Mon Sep 14 12:39:13 2009</div>
647
+ </BODY>
648
+ </HTML>