gabrielg-xultestrunner 0.2.6 → 0.2.7

Sign up to get free protection for your applications and to get access to all the features.
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>