| Index: chrome/renderer/resources/extension_process_bindings.js
 | 
| ===================================================================
 | 
| --- chrome/renderer/resources/extension_process_bindings.js	(revision 14841)
 | 
| +++ chrome/renderer/resources/extension_process_bindings.js	(working copy)
 | 
| @@ -19,6 +19,8 @@
 | 
|    native function MoveTab();
 | 
|    native function RemoveTab();
 | 
|    native function GetBookmarks();
 | 
| +  native function GetBookmarkChildren();
 | 
| +  native function GetBookmarkTree();
 | 
|    native function SearchBookmarks();
 | 
|    native function RemoveBookmark();
 | 
|    native function CreateBookmark();
 | 
| @@ -238,35 +240,54 @@
 | 
|    //----------------------------------------------------------------------------
 | 
|  
 | 
|    // Bookmarks
 | 
| -  // TODO(erikkay): Call validate() in these functions.
 | 
|    chromium.bookmarks = {};
 | 
|  
 | 
|    chromium.bookmarks.get = function(ids, callback) {
 | 
| +    validate(arguments, arguments.callee.params);
 | 
|      sendRequest(GetBookmarks, ids, callback);
 | 
|    };
 | 
|  
 | 
|    chromium.bookmarks.get.params = [
 | 
|      {
 | 
|        type: "array",
 | 
| -      items: {
 | 
| -        type: chromium.types.pInt
 | 
| -      },
 | 
| -      minItems: 1,
 | 
| +      items: chromium.types.pInt,
 | 
|        optional: true
 | 
|      },
 | 
| -    chromium.types.optFun
 | 
| +    chromium.types.fun
 | 
|    ];
 | 
| +  
 | 
| +  chromium.bookmarks.getChildren = function(id, callback) {
 | 
| +    validate(arguments, arguments.callee.params);
 | 
| +    sendRequest(GetBookmarkChildren, id, callback);
 | 
| +  };
 | 
|  
 | 
| +  chromium.bookmarks.getChildren.params = [
 | 
| +    chromium.types.pInt,
 | 
| +    chromium.types.fun
 | 
| +  ];
 | 
| +  
 | 
| +  chromium.bookmarks.getTree = function(callback) {
 | 
| +    validate(arguments, arguments.callee.params);
 | 
| +    sendRequest(GetBookmarkTree, null, callback);
 | 
| +  };
 | 
| +  
 | 
| +  // TODO(erikkay): allow it to take an optional id as a starting point
 | 
| +  chromium.bookmarks.getTree.params = [
 | 
| +    chromium.types.fun
 | 
| +  ];
 | 
| +
 | 
|    chromium.bookmarks.search = function(query, callback) {
 | 
| +    validate(arguments, arguments.callee.params);
 | 
|      sendRequest(SearchBookmarks, query, callback);
 | 
|    };
 | 
|  
 | 
|    chromium.bookmarks.search.params = [
 | 
| -    chromium.types.string,
 | 
| -    chromium.types.optFun
 | 
| +    chromium.types.str,
 | 
| +    chromium.types.fun
 | 
|    ];
 | 
|  
 | 
|    chromium.bookmarks.remove = function(bookmark, callback) {
 | 
| +    validate(arguments, arguments.callee.params);
 | 
|      sendRequest(RemoveBookmark, bookmark, callback);
 | 
|    };
 | 
|  
 | 
| @@ -275,13 +296,14 @@
 | 
|        type: "object",
 | 
|        properties: {
 | 
|          id: chromium.types.pInt,
 | 
| -        recursive: chromium.types.bool
 | 
| +        recursive: chromium.types.optBool
 | 
|        }
 | 
|      },
 | 
|      chromium.types.optFun
 | 
|    ];
 | 
|  
 | 
|    chromium.bookmarks.create = function(bookmark, callback) {
 | 
| +    validate(arguments, arguments.callee.params);
 | 
|      sendRequest(CreateBookmark, bookmark, callback);
 | 
|    };
 | 
|  
 | 
| @@ -291,14 +313,15 @@
 | 
|        properties: {
 | 
|          parentId: chromium.types.optPInt,
 | 
|          index: chromium.types.optPInt,
 | 
| -        title: chromium.types.optString,
 | 
| -        url: chromium.types.optString,
 | 
| +        title: chromium.types.optStr,
 | 
| +        url: chromium.types.optStr,
 | 
|        }
 | 
|      },
 | 
|      chromium.types.optFun
 | 
|    ];
 | 
|  
 | 
|    chromium.bookmarks.move = function(obj, callback) {
 | 
| +    validate(arguments, arguments.callee.params);
 | 
|      sendRequest(MoveBookmark, obj, callback);
 | 
|    };
 | 
|  
 | 
| @@ -315,6 +338,7 @@
 | 
|    ];
 | 
|  
 | 
|    chromium.bookmarks.setTitle = function(bookmark, callback) {
 | 
| +    validate(arguments, arguments.callee.params);
 | 
|      sendRequest(SetBookmarkTitle, bookmark, callback);
 | 
|    };
 | 
|  
 | 
| @@ -323,12 +347,32 @@
 | 
|        type: "object",
 | 
|        properties: {
 | 
|          id: chromium.types.pInt,
 | 
| -        title: chromium.types.optString
 | 
| +        title: chromium.types.optStr
 | 
|        }
 | 
|      },
 | 
|      chromium.types.optFun
 | 
|    ];
 | 
| +
 | 
| +  // bookmark events
 | 
| +
 | 
| +  // Sends ({id, title, url, parentId, index})
 | 
| +  chromium.bookmarks.onBookmarkAdded = new chromium.Event("bookmark-added");
 | 
| +
 | 
| +  // Sends ({parentId, index})
 | 
| +  chromium.bookmarks.onBookmarkRemoved = new chromium.Event("bookmark-removed");
 | 
| +
 | 
| +  // Sends (id, object) where object has list of properties that have changed.
 | 
| +  // Currently, this only ever includes 'title'.
 | 
| +  chromium.bookmarks.onBookmarkChanged = new chromium.Event("bookmark-changed");
 | 
| +
 | 
| +  // Sends ({id, parentId, index, oldParentId, oldIndex})
 | 
| +  chromium.bookmarks.onBookmarkMoved = new chromium.Event("bookmark-moved");
 | 
|    
 | 
| +  // Sends (id, [childrenIds])
 | 
| +  chromium.bookmarks.onBookmarkChildrenReordered =
 | 
| +      new chromium.Event("bookmark-children-reordered");
 | 
| +
 | 
| +
 | 
|    //----------------------------------------------------------------------------
 | 
|  
 | 
|    // Self
 | 
| 
 |