--- books/www/corrections.html 2003/02/10 17:43:32 1.74 +++ books/www/corrections.html 2003/03/23 18:54:49 1.104 @@ -1,9 +1,9 @@ - -

Corrections +

Corrections

This page contains a list of corrections to be made in the next printing of the book. If you have suggestions for changes or find errors in the text, @@ -12,30 +12,46 @@ section on the chapter pages, or send a href="mailto:reviewers@mozdev.org">reviewers@mozdev.org mailing list.

Note: All errors in the text and examples are shown in red and all corrections are shown in green. +class="fixed">blue. - +

Preface

- +

Chapter 1

- +

Chapter 2

- +

Chapter 3

- +

Chapter 4

    @@ -125,13 +177,13 @@ changed to '<descrip
  • On page 88: 'these are selectors are identical' has been changed to 'these selectors are identical'

    -
  • On page 109: 'The chome URL that the -moz-binding property points to' has been changed to 'The chrome URL that the -moz-binding property points to'

    +
  • On page 109: 'The chome URL that the -moz-binding property points to' has been changed to 'The chrome URL that the -moz-binding property points to'

- +

Chapter 5

    @@ -147,9 +199,25 @@ class="fixed">The chrome URL that the -m
  • On page 120: 'dump(l+'\n');' has been changed to 'dump(len+'\n');'

  • +
  • On page 123: Example 5-3 + +for (var i=0; i<chex.length; i++) + chex[i].setAttributte("checked", "false"); +for (var i=0; i<unchex.length; i++) + unchex[i].setAttributte("checked", "true"); + +has been changed to + +for (var i=0; i<chex.length; i++) + chex[i].setAttribute("disabled", "false"); +for (var i=0; i<unchex.length; i++) + unchex[i].setAttribute("disabled", "true"); + +
    +
  • +
  • On page 135: Example 5-11 has been changed to -<html> <head> <title>Sound Service Play Example</title> <script> @@ -166,16 +234,14 @@ class="fixed">The chrome URL that the -m } </script> </head> - <body> + <form name="form"> <input type="button" value="Play Sound" onclick="play();"> </form> - </body> -</html> -
  • -
  • On page 137: 'var connection = Components.classes ["@mozilla.org/network/ldap-connection;1";' has been changed to +
  • On page 137: 'var connection = Components.classes ["@mozilla.org/network/ldap-connection;1";' + has been changed to 'var connection = Components.classes ["@mozilla.org/network/ldap-connection;1"];'

  • @@ -185,44 +251,156 @@ load('chrome/jslib/jslib.js');
    '
    <
- + +

Chapter 6 + +

    + +
  • On page 145: Example 6-1 has been changed to + + +var myFile = "xFly.jar"; +initInstall( // initialize the installation + "Install xFly", // display name of installation + "xFly", // package name + "0.0.1", // version of install + 1); // flags - an optional argument, + // reserved for future use +f = getFolder("Chrome"); // specify a target directory +setPackageFolder(f); +addFile(myFile); // add software to the installation +registerChrome( + PACKAGE | DELAYED_CHROME, // chrome switch (i.e., type) + getFolder("Chrome","xFly.jar"), // destination of package + "content/xFly/"); // location of manifest in package +if (0 == getLastError( )) // if there have been no errors: + performInstall( ); // install "xfly.jar" +else // otherwise + cancelInstall( ); // cancel the installation. + + +
+ + +

Chapter 7 + +

    + +
  • On page 181: There are 3 errors in Figure 7-2 ...

    + +1) In the XUL box, 'klabel="Input Field"' should be 'label="Input Field"'

    + +2) In the XBL box, '<binding id+"inputfield">' should be '<binding id="inputfield">'

    + +3) In the XBL box, '<xul:label xbl:inherits="value+label"?>' should be '<xul:label xbl:inherits="value=label"/>'

    + +Here is a correct image (Click for bigger version):

    + +New Figure 7-2 + +
  • + +
+ +

+ +

Chapter 8

    -
  • On page 211: In 2nd sentence of paragraph 'QueryInterace' has been changed to 'QueryInterface'

    +
  • On page 211: In 2nd sentence of paragraph 'QueryInterace' has been +changed to 'QueryInterface'

  • -
  • On page 222: In Example 8-4 'mName: "a default value"' has been changed to 'mName: "a default -value",'

    +
  • On page 222: In Example 8-4 has been changed to: -
  • On page 222: In Example 8-4 + +function SimpleComponent(){} - <xmp class="broken"> - this.myCID, - "My JS Component", - this.myProgID, fileSpec, - location, true, true, - type); - +SimpleComponent.prototype = { -has been changed to + get yourName() { return this.mName; }, + set yourName(aName) { return this.mName = aName; }, - - compMgr.registerComponentWithType( - this.myCID, - "My JS Component", - this.myProgID, fileSpec, - location, true, true, - type); - + write: function () { dump("Hello " + this.mName + "\n"); }, + change: function (aValue) { this.mName = aValue; }, + mName: "a default value", + + QueryInterface: function (iid) { + if (!iid.equals(Components.interfaces.nsISimple) + && !iid.equals(Components.interfaces.nsISupports)) + { + throw Components.results.NS_ERROR_NO_INTERFACE; + } + return this; + } +} + +var Module = { + firstTime: true, + + registerSelf: function (compMgr, fileSpec, location, type) { + if (this.firstTime) { + dump("*** Deferring registration of simple JS components\n"); + this.firstTime = false; + throw Components.results.NS_ERROR_FACTORY_REGISTER_AGAIN; + } + debug("*** Registering sample JS components\n"); + compMgr = +compMgr.QueryInterface(Components.interfaces.nsIComponentRegistrar); + compMgr.registerFactoryLocation(this.myCID, + "Simple JS Component", + this.myProgID, + fileSpec, + location, + type); + }, + + getClassObject : function (compMgr, cid, iid) { + if (!cid.equals(this.myCID)) + throw Components.results.NS_ERROR_NO_INTERFACE + if (!iid.equals(Components.interfaces.nsIFactory)) + throw Components.results.NS_ERROR_NOT_IMPLEMENTED; + return this.myFactory; + }, + + myCID: Components.ID("{98aa9afd-8b08-415b-91ed-01916a130d16}"), + myProgID: "@mozilla.org/js_simple_component;1", + + myFactory: { + createInstance: function (outer, iid) { + dump("CI: " + iid + "\n"); + if (outer != null) + throw Components.results.NS_ERROR_NO_AGGREGATION; + return (new SimpleComponent()).QueryInterface(iid); + } + }, + + canUnload: function(compMgr) { + dump("****** Unloading: Simple JS component! ****** \n"); + return true; + } +}; // END Module -
  • On page 222: In Example 8-4 one of the duplicate 'dump(" ***** Registering: Simple JS component! -****\n");' lines has been removed

    +function NSGetModule(compMgr, fileSpec) { return Module; } + +
  • -
  • On page 223: In Example 8-4 one of the duplicate 'if (outer != null)' lines has been removed

    +
  • On page 237: Example 8-13, line 9 + + NS_INIT_REFCNT( ); // has been depricated use NS_INIT_ISUPPORTS() + mValue = PL_strdup("default value"); + +has been changed to + + // NS_INIT_REFCNT( ); // has been depricated use NS_INIT_ISUPPORTS() + NS_INIT_ISUPPORTS(); + mValue = PL_strdup("default value"); + +
    +
  • -
  • On page 239: Example 8-15 has been changed to
    +
  • On page 239: Example 8-15 has been changed to
  • DEPTH = ../../.. @@ -265,17 +443,44 @@ install:: $(TARGETS) </ul> +<a name="ch9"></a> +<p><b>Chapter 9</b> + +<ul> + +<li>On page 257: In Example 9-7 -<a name="ch10"> +<xmp class="broken"> + <triple subject="?listitem" + predicate=" http://xfly.mozdev.org/fly-rdf#location" + object="?location"/> + + +has been changed to + + + <triple subject="?listitem" + predicate="fly-location#location" + object="?location"/> + + +
+ +

Chapter 10

    -
  • On page 297: 'http://www.jslib.mozdev.org' has been changed -to 'http://jslib.mozdev.org'

  • + +
  • On page 280: In Table 10-3 'Mostly used for retrieving, datasources, resources, and literals.' has been +changed to 'Mostly used for retrieving datasources, resources, and literals.'

    + +
  • On page 297: 'http://www.jslib.mozdev.org' has been changed to 'http://jslib.mozdev.org'

    +
- +

Chapter 11

- +

Chapter 12

- +

Appendix A

+ + +

Index + +

+