Maybe something like this:

function bookmarkFoldersAsTags(aTags, aBookmark) {
  if (!aTags)
    aTags = [];

  if (!aBookmark.parentId)
    return;

  function getBookmarkCallback(aResults) {
    var mark = aResults[0];
    aTags.push(mark.title);
    bookmarkFoldersAsTags(aTags, mark);
  }
  chrome.bookmarks.get(aBookmark.parentId, getBookmarkCallback);
}

I just wrote it here without trying and I haven't used the bookmarks API
yet. Just used the code you provided and tweaked it a bit to be recursive.
You should end up with the aTags array filled with your tags, which you may
join later. Hopefully this helps, or maybe someone else has a better/working
alternative.

Good night!


On Mon, Dec 14, 2009 at 11:07 PM, Ryan <[email protected]> wrote:

> I'm trying to navigate from my bookmark listener to the root node and
> collect all of the folder hierarchy, but the bookmarks API uses async
> callbacks which is quite difficult to work with.
>
> This code doesn't work because the while loop is stuck in an infinite
> loop and the callback does not interupt the loop correctly.  Is there
> some other way?
>
> ex:
>      function bookmarkFoldersAsTags(bookmark) {
>        var tags = [];
>
>        var mark = bookmark;
>        while (mark.parentId) {
>          chrome.bookmarks.get(mark.parentId, function(results) {
>            mark = results[0];
>            tags.push(mark.title);
>          });
>        }
>        return tags.join(' ');
>      }
>
>      chrome.bookmarks.onCreated.addListener(function(id, bookmark) {
>        if (bookmark.url) {
>          console.debug(bookmarkFoldersAsTags(bookmark));
>        }
>      });
>
> --
>
> You received this message because you are subscribed to the Google Groups
> "Chromium-extensions" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<chromium-extensions%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/chromium-extensions?hl=en.
>
>
>


-- 
Marcos Aruj Alvarez
Ingeniero de Software
-------------------------------
[email protected]
-----

--

You received this message because you are subscribed to the Google Groups 
"Chromium-extensions" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/chromium-extensions?hl=en.


Reply via email to