prepare for multiple apps

This commit is contained in:
Fabian Freund
2026-04-06 12:23:11 +02:00
parent bd1600e8dc
commit 5afc323f04
904 changed files with 29 additions and 29 deletions
@@ -0,0 +1,36 @@
<!DOCTYPE NETSCAPE-Bookmark-file-1>
<!-- This is an automatically generated file.
It will be read and overwritten.
DO NOT EDIT! -->
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
<TITLE>Bookmarks</TITLE>
<H1 LAST_MODIFIED="1177541029">Bookmarks</H1>
<DL><p>
<DT><H3 ID="rdf:#$ZvPhC3">Mozilla Firefox</H3>
<DL><p>
<DT><A HREF="http://en-US.www.mozilla.com/en-US/firefox/help/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg==" ID="rdf:#$22iCK1">Help and Tutorials</A>
<DT><A HREF="http://en-US.www.mozilla.com/en-US/firefox/customize/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg==" ID="rdf:#$32iCK1">Customize Firefox</A>
<DT><A HREF="http://en-US.www.mozilla.com/en-US/firefox/community/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg==" ID="rdf:#$42iCK1">Get Involved</A>
<DT><A HREF="http://en-US.www.mozilla.com/en-US/about/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg==" ID="rdf:#$52iCK1">About Us</A>
<DT><A HREF="b0rked" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg==" ID="rdf:#$52iCK1">About Us</A>
</DL><p>
<DT><H3 ADD_DATE="1177541020" LAST_MODIFIED="1177541050" ID="rdf:#$74Gpx2">test</H3>
<DD>folder test comment
<DL><p>
<DT><A HREF="http://test/post" ADD_DATE="1177375336" LAST_MODIFIED="1177375423" SHORTCUTURL="test" WEB_PANEL="true" POST_DATA="hidden1%3Dbar&amp;text1%3D%25s" LAST_CHARSET="ISO-8859-1" ID="rdf:#$pYFe7">test post keyword</A>
<DD>item description
</DL>
<DT><H3 UNFILED_BOOKMARKS_FOLDER="true">Unsorted Bookmarks</H3>
<DL><p>
<DT><A HREF="http://example.tld">Example.tld</A>
</DL><p>
<DT><H3 LAST_MODIFIED="1177541040" PERSONAL_TOOLBAR_FOLDER="true" ID="rdf:#$FvPhC3">Bookmarks Toolbar Folder</H3>
<DD>Add bookmarks to this folder to see them displayed on the Bookmarks Toolbar
<DL><p>
<DT><A HREF="http://en-US.www.mozilla.com/en-US/firefox/central/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg==" ID="rdf:#$GvPhC3">Getting Started</A>
<DT><A HREF="http://en-US.fxfeeds.mozilla.com/en-US/firefox/livebookmarks/" LAST_MODIFIED="1177541035" FEEDURL="http://en-US.fxfeeds.mozilla.com/en-US/firefox/headlines.xml" ID="rdf:#$HvPhC3">Latest Headlines</A>
<DT><A HREF="http://bogus-icon.mozilla.com/" ICON="b0rked" ID="rdf:#$GvPhC3">Getting Started</A>
<DD>Livemark test comment
</DL><p>
</DL><p>
@@ -0,0 +1,307 @@
{
"guid": "root________",
"title": "",
"id": 1,
"dateAdded": 1361551978957783,
"lastModified": 1361551978957783,
"type": "text/x-moz-place-container",
"root": "placesRoot",
"children": [
{
"guid": "menu________",
"title": "Bookmarks Menu",
"id": 2,
"parent": 1,
"dateAdded": 1361551978957783,
"lastModified": 1361551979382837,
"type": "text/x-moz-place-container",
"root": "bookmarksMenuFolder",
"children": [
{
"guid": "OCyeUO5uu9FF",
"title": "Mozilla Firefox",
"id": 6,
"parent": 2,
"dateAdded": 1361551979350273,
"lastModified": 1361551979376699,
"type": "text/x-moz-place-container",
"children": [
{
"guid": "OCyeUO5uu9FG",
"title": "Help and Tutorials",
"id": 7,
"parent": 6,
"dateAdded": 1361551979356436,
"lastModified": 1361551979362718,
"type": "text/x-moz-place",
"uri": "http://en-us.www.mozilla.com/en-US/firefox/help/",
"icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg=="
},
{
"guid": "OCyeUO5uu9FH",
"index": 1,
"title": "Customize Firefox",
"id": 8,
"parent": 6,
"dateAdded": 1361551979365662,
"lastModified": 1361551979368077,
"type": "text/x-moz-place",
"uri": "http://en-us.www.mozilla.com/en-US/firefox/customize/",
"icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg=="
},
{
"guid": "OCyeUO5uu9FJ",
"index": 3,
"title": "About Us",
"id": 10,
"parent": 6,
"dateAdded": 1361551979376699,
"lastModified": 1361551979379060,
"type": "text/x-moz-place",
"uri": "http://en-us.www.mozilla.com/en-US/about/",
"icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg=="
},
{
"guid": "OCyeUO5uu9FI",
"index": 2,
"title": "Get Involved",
"id": 9,
"parent": 6,
"dateAdded": 1361551979371071,
"lastModified": 1361551979373745,
"type": "text/x-moz-place",
"uri": "http://en-us.www.mozilla.com/en-US/firefox/community/",
"icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg=="
},
{
"guid": "QFM-QnE2ZpMz",
"title": "Test null postData",
"index": 4,
"dateAdded": 1481639510868000,
"lastModified": 1489563704300000,
"id": 17,
"charset": "UTF-8",
"annos": [
{
"name": "bookmarkProperties/description",
"flags": 0,
"expires": 4,
"value": "The best"
}
],
"type": "text/x-moz-place",
"uri": "http://example.com/search?q=%s&suggid=",
"postData": null
}
]
},
{
"guid": "OCyeUO5uu9FK",
"index": 1,
"title": "",
"id": 11,
"parent": 2,
"dateAdded": 1361551979380988,
"lastModified": 1361551979380988,
"type": "text/x-moz-place-separator"
},
{
"guid": "OCyeUO5uu9FL",
"index": 2,
"title": "test",
"id": 12,
"parent": 2,
"dateAdded": 1177541020000000,
"lastModified": 1177541050000000,
"annos": [
{
"name": "bookmarkProperties/description",
"flags": 0,
"expires": 4,
"mimeType": null,
"type": 3,
"value": "folder test comment"
}
],
"type": "text/x-moz-place-container",
"children": [
{
"guid": "OCyeUO5uu9GX",
"title": "test post keyword",
"id": 13,
"parent": 12,
"dateAdded": 1177375336000000,
"lastModified": 1177375423000000,
"annos": [
{
"name": "bookmarkProperties/description",
"flags": 0,
"expires": 4,
"mimeType": null,
"type": 3,
"value": "item description"
},
{
"name": "bookmarkProperties/loadInSidebar",
"flags": 0,
"expires": 4,
"mimeType": null,
"type": 1,
"value": 1
}
],
"type": "text/x-moz-place",
"uri": "http://test/post",
"keyword": "test",
"charset": "ISO-8859-1",
"postData": "hidden1%3Dbar&text1%3D%25s"
}
]
}
]
},
{
"index": 1,
"title": "Bookmarks Toolbar",
"id": 3,
"parent": 1,
"dateAdded": 1361551978957783,
"lastModified": 1177541050000000,
"annos": [
{
"name": "bookmarkProperties/description",
"flags": 0,
"expires": 4,
"mimeType": null,
"type": 3,
"value": "Add bookmarks to this folder to see them displayed on the Bookmarks Toolbar"
}
],
"type": "text/x-moz-place-container",
"root": "toolbarFolder",
"children": [
{
"guid": "OCyeUO5uu9FB",
"title": "Getting Started",
"id": 15,
"parent": 3,
"dateAdded": 1361551979409695,
"lastModified": 1361551979412080,
"type": "text/x-moz-place",
"uri": "http://en-us.www.mozilla.com/en-US/firefox/central/",
"icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg=="
},
{
"guid": "OCyeUO5uu9FR",
"index": 1,
"title": "Latest Headlines",
"id": 16,
"parent": 3,
"dateAdded": 1361551979451584,
"lastModified": 1361551979457086,
"livemark": 1,
"annos": [
{
"name": "livemark/feedURI",
"flags": 0,
"expires": 4,
"mimeType": null,
"type": 3,
"value": "http://en-us.fxfeeds.mozilla.com/en-US/firefox/headlines.xml"
},
{
"name": "livemark/siteURI",
"flags": 0,
"expires": 4,
"mimeType": null,
"type": 3,
"value": "http://en-us.fxfeeds.mozilla.com/en-US/firefox/livebookmarks/"
}
],
"type": "text/x-moz-place-container",
"children": []
}
]
},
{
"index": 2,
"title": "Tags",
"id": 4,
"parent": 1,
"dateAdded": 1361551978957783,
"lastModified": 1361551978957783,
"type": "text/x-moz-place-container",
"root": "tagsFolder",
"children": []
},
{
"index": 3,
"title": "Unsorted Bookmarks",
"id": 5,
"parent": 1,
"dateAdded": 1361551978957783,
"lastModified": 1177541050000000,
"type": "text/x-moz-place-container",
"root": "unfiledBookmarksFolder",
"children": [
{
"guid": "OCyeUO5uu9FW",
"title": "Example.tld",
"id": 14,
"parent": 5,
"dateAdded": 1361551979401846,
"lastModified": 1361551979402952,
"type": "text/x-moz-place",
"uri": "http://example.tld/"
},
{
"guid": "Cfkety492Afk",
"title": "test tagged bookmark",
"id": 15,
"parent": 5,
"dateAdded": 1507025843703345,
"lastModified": 1507025844703124,
"type": "text/x-moz-place",
"uri": "http://example.tld/tagged",
"tags": "foo"
},
{
"guid": "lOZGoFR1eXbl",
"title": "Bookmarks Toolbar Shortcut",
"dateAdded": 1507025843703345,
"lastModified": 1507025844703124,
"id": 16,
"type": "text/x-moz-place",
"uri": "place:folder=TOOLBAR"
},
{
"guid": "7yJWnBVhjRtP",
"title": "Folder Shortcut",
"dateAdded": 1507025843703345,
"lastModified": 1507025844703124,
"id": 17,
"type": "text/x-moz-place",
"uri": "place:folder=6"
},
{
"guid": "vm5QXWuWc12l",
"title": "Folder Shortcut 2",
"dateAdded": 1507025843703345,
"lastModified": 1507025844703124,
"id": 18,
"type": "text/x-moz-place",
"uri": "place:folder=6123443"
},
{
"guid": "Icg1XlIozA1D",
"title": "Folder Shortcut 3",
"dateAdded": 1507025843703345,
"lastModified": 1507025844703124,
"id": 18,
"type": "text/x-moz-place",
"uri": "place:folder=6&folder=BOOKMARKS_MENU"
}
]
}
]
}
@@ -0,0 +1,36 @@
<!DOCTYPE NETSCAPE-Bookmark-file-1>
<!-- This is an automatically generated file.
It will be read and overwritten.
DO NOT EDIT! -->
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
<TITLE>Bookmarks</TITLE>
<H1 LAST_MODIFIED="1177541029">Bookmarks</H1>
<DL><p>
<DT><H3 ID="rdf:#$ZvPhC3">Mozilla Firefox</H3>
<DL><p>
<DT><A HREF="http://en-US.www.mozilla.com/en-US/firefox/help/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg==" ID="rdf:#$22iCK1">Help and Tutorials</A>
<DT><A HREF="http://en-US.www.mozilla.com/en-US/firefox/customize/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg==" ID="rdf:#$32iCK1">Customize Firefox</A>
<DT><A HREF="http://en-US.www.mozilla.com/en-US/firefox/community/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg==" ID="rdf:#$42iCK1">Get Involved</A>
<DT><A HREF="http://en-US.www.mozilla.com/en-US/about/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg==" ID="rdf:#$52iCK1">About Us</A>
</DL><p>
<HR>
<DT><H3 ADD_DATE="1177541020" LAST_MODIFIED="1177541050" ID="rdf:#$74Gpx2">test</H3>
<DD>folder test comment
<DL><p>
<DT><A HREF="http://test/post" ADD_DATE="1177375336" LAST_MODIFIED="1177375423" SHORTCUTURL="test" WEB_PANEL="true" POST_DATA="hidden1%3Dbar&amp;text1%3D%25s" LAST_CHARSET="ISO-8859-1" ID="rdf:#$pYFe7">test post keyword</A>
<DD>item description
</DL>
<DT><H3 UNFILED_BOOKMARKS_FOLDER="true">Unsorted Bookmarks</H3>
<DL><p>
<DT><A HREF="http://example.tld">Example.tld</A>
</DL><p>
<DT><H3 LAST_MODIFIED="1177541040" PERSONAL_TOOLBAR_FOLDER="true" ID="rdf:#$FvPhC3">Bookmarks Toolbar Folder</H3>
<DD>Add bookmarks to this folder to see them displayed on the Bookmarks Toolbar
<DL><p>
<DT><A HREF="http://en-US.www.mozilla.com/en-US/firefox/central/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg==" ID="rdf:#$GvPhC3">Getting Started</A>
<DT><A HREF="http://en-US.fxfeeds.mozilla.com/en-US/firefox/livebookmarks/" LAST_MODIFIED="1177541035" FEEDURL="http://en-US.fxfeeds.mozilla.com/en-US/firefox/headlines.xml" ID="rdf:#$HvPhC3">Latest Headlines</A>
<DT><A LAST_MODIFIED="1177541035" FEEDURL="http://en-US.fxfeeds.mozilla.com/en-US/firefox/headlines.xml" ID="rdf:#$HvPhC3">Latest Headlines No Site</A>
<DD>Livemark test comment
</DL><p>
</DL><p>
@@ -0,0 +1,72 @@
{
"guid": "root________",
"title": "",
"id": 1,
"dateAdded": 1361551978957783,
"lastModified": 1361551978957783,
"type": "text/x-moz-place-container",
"root": "placesRoot",
"children": [
{
"guid": "menu________",
"title": "Bookmarks Menu",
"id": 2,
"parent": 1,
"dateAdded": 1361551978957783,
"lastModified": 1361551979382837,
"type": "text/x-moz-place-container",
"root": "bookmarksMenuFolder",
"children": [
{
"guid": "OCyeUO5uu9FG",
"title": "Help and Tutorials",
"id": 7,
"dateAdded": 1361551979356436,
"lastModified": 1361551979362718,
"type": "x/invalid",
"uri": "http://en-us.www.mozilla.com/en-US/firefox/help/"
},
{
"guid": "OCyeUO5uu9FH",
"index": 1,
"title": "Customize Firefox",
"id": 8,
"dateAdded": 1361551979365662,
"lastModified": 1361551979368077,
"type": "text/x-moz-place",
"uri": "http://en-us.www.mozilla.com/en-US/firefox/customize/"
},
{
"guid": "OCyeUO5uu9FG",
"title": "Bad URL",
"id": 9,
"dateAdded": 1361551979356436,
"lastModified": 1361551979362718,
"type": "text/x-moz-place",
"uri": "http:///"
}
]
},
{
"guid": "toolbar_____",
"title": "Bookmarks Toolbar",
"id": 2,
"parent": 1,
"dateAdded": 1361551978957783,
"lastModified": 1361551979382837,
"type": "text/x-moz-place-container",
"root": "toolbarFolder",
"children": [
{
"guid": "OCyeUO5uu9FG",
"title": "Bad URL",
"id": 9,
"dateAdded": 1361551979356436,
"lastModified": 1361551979362718,
"type": "text/x-moz-place",
"uri": "http:///"
}
]
}
]
}
@@ -0,0 +1,21 @@
<!DOCTYPE NETSCAPE-Bookmark-file-1>
<!-- This is an automatically generated file.
It will be read and overwritten.
DO NOT EDIT! -->
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
<TITLE>Bookmarks</TITLE>
<LINK REL="localization" HREF="bookmarks_html_localized.ftl">
</HEAD>
<BODY>
<H1 LAST_MODIFIED="1177541029">Bookmarks</H1>
<DL><p>
<DT><H3 ID="rdf:#$ZvPhC3" data-l10n-id="bookmarks-html-localized-folder">bookmarks-html-localized-folder</H3>
<DL><p>
<DT><A HREF="http://www.mozilla.com/firefox/help/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg==" ID="rdf:#$22iCK1" data-l10n-id="bookmarks-html-localized-bookmark">bookmarks-html-localized-bookmark</A>
</DL><p>
</DL><p>
</BODY>
</HTML>
@@ -0,0 +1,10 @@
<!DOCTYPE NETSCAPE-Bookmark-file-1>
<HTML>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
<Title>Bookmarks</Title>
<H1>Bookmarks</H1>
<DT><H3>Subtitle</H3>
<DL><p>
<DT><A HREF="http://www.mozilla.org/">Mozilla</A>
</DL><p>
</HTML>
@@ -0,0 +1,307 @@
{
"guid": "root________",
"title": "",
"id": 1,
"dateAdded": 1361551978957783,
"lastModified": 1361551978957783,
"type": "text/x-moz-place-container",
"root": "placesRoot",
"children": [
{
"guid": "menu________",
"title": "Bookmarks Menu",
"id": 2,
"parent": 1,
"dateAdded": 1361551978957783,
"lastModified": 1361551979382837,
"type": "text/x-moz-place-container",
"root": "bookmarksMenuFolder",
"children": [
{
"guid": "OCyeUO5uu9FF",
"title": "Mozilla Firefox",
"id": 6,
"parent": 2,
"dateAdded": 1361551979350273,
"lastModified": 1361551979376699,
"type": "text/x-moz-place-container",
"children": [
{
"guid": "OCyeUO5uu9FG",
"title": "Help and Tutorials",
"id": 7,
"parent": 6,
"dateAdded": 1361551979356436,
"lastModified": 1361551979362718,
"type": "text/x-moz-place",
"uri": "http://en-us.www.mozilla.com/en-US/firefox/help/",
"iconUri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg=="
},
{
"guid": "OCyeUO5uu9FH",
"index": 1,
"title": "Customize Firefox",
"id": 8,
"parent": 6,
"dateAdded": 1361551979365662,
"lastModified": 1361551979368077,
"type": "text/x-moz-place",
"uri": "http://en-us.www.mozilla.com/en-US/firefox/customize/",
"iconUri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg=="
},
{
"guid": "OCyeUO5uu9FJ",
"index": 3,
"title": "About Us",
"id": 10,
"parent": 6,
"dateAdded": 1361551979376699,
"lastModified": 1361551979379060,
"type": "text/x-moz-place",
"uri": "http://en-us.www.mozilla.com/en-US/about/",
"iconUri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg=="
},
{
"guid": "OCyeUO5uu9FI",
"index": 2,
"title": "Get Involved",
"id": 9,
"parent": 6,
"dateAdded": 1361551979371071,
"lastModified": 1361551979373745,
"type": "text/x-moz-place",
"uri": "http://en-us.www.mozilla.com/en-US/firefox/community/",
"iconUri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg=="
},
{
"guid": "QFM-QnE2ZpMz",
"title": "Test null postData",
"index": 4,
"dateAdded": 1481639510868000,
"lastModified": 1489563704300000,
"id": 17,
"charset": "UTF-8",
"annos": [
{
"name": "bookmarkProperties/description",
"flags": 0,
"expires": 4,
"value": "The best"
}
],
"type": "text/x-moz-place",
"uri": "http://example.com/search?q=%s&suggid=",
"postData": null
}
]
},
{
"guid": "OCyeUO5uu9FK",
"index": 1,
"title": "",
"id": 11,
"parent": 2,
"dateAdded": 1361551979380988,
"lastModified": 1361551979380988,
"type": "text/x-moz-place-separator"
},
{
"guid": "OCyeUO5uu9FL",
"index": 2,
"title": "test",
"id": 12,
"parent": 2,
"dateAdded": 1177541020000000,
"lastModified": 1177541050000000,
"annos": [
{
"name": "bookmarkProperties/description",
"flags": 0,
"expires": 4,
"mimeType": null,
"type": 3,
"value": "folder test comment"
}
],
"type": "text/x-moz-place-container",
"children": [
{
"guid": "OCyeUO5uu9GX",
"title": "test post keyword",
"id": 13,
"parent": 12,
"dateAdded": 1177375336000000,
"lastModified": 1177375423000000,
"annos": [
{
"name": "bookmarkProperties/description",
"flags": 0,
"expires": 4,
"mimeType": null,
"type": 3,
"value": "item description"
},
{
"name": "bookmarkProperties/loadInSidebar",
"flags": 0,
"expires": 4,
"mimeType": null,
"type": 1,
"value": 1
}
],
"type": "text/x-moz-place",
"uri": "http://test/post",
"keyword": "test",
"charset": "ISO-8859-1",
"postData": "hidden1%3Dbar&text1%3D%25s"
}
]
}
]
},
{
"index": 1,
"title": "Bookmarks Toolbar",
"id": 3,
"parent": 1,
"dateAdded": 1361551978957783,
"lastModified": 1177541050000000,
"annos": [
{
"name": "bookmarkProperties/description",
"flags": 0,
"expires": 4,
"mimeType": null,
"type": 3,
"value": "Add bookmarks to this folder to see them displayed on the Bookmarks Toolbar"
}
],
"type": "text/x-moz-place-container",
"root": "toolbarFolder",
"children": [
{
"guid": "OCyeUO5uu9FB",
"title": "Getting Started",
"id": 15,
"parent": 3,
"dateAdded": 1361551979409695,
"lastModified": 1361551979412080,
"type": "text/x-moz-place",
"uri": "http://en-us.www.mozilla.com/en-US/firefox/central/",
"iconUri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg=="
},
{
"guid": "OCyeUO5uu9FR",
"index": 1,
"title": "Latest Headlines",
"id": 16,
"parent": 3,
"dateAdded": 1361551979451584,
"lastModified": 1361551979457086,
"livemark": 1,
"annos": [
{
"name": "livemark/feedURI",
"flags": 0,
"expires": 4,
"mimeType": null,
"type": 3,
"value": "http://en-us.fxfeeds.mozilla.com/en-US/firefox/headlines.xml"
},
{
"name": "livemark/siteURI",
"flags": 0,
"expires": 4,
"mimeType": null,
"type": 3,
"value": "http://en-us.fxfeeds.mozilla.com/en-US/firefox/livebookmarks/"
}
],
"type": "text/x-moz-place-container",
"children": []
}
]
},
{
"index": 2,
"title": "Tags",
"id": 4,
"parent": 1,
"dateAdded": 1361551978957783,
"lastModified": 1361551978957783,
"type": "text/x-moz-place-container",
"root": "tagsFolder",
"children": []
},
{
"index": 3,
"title": "Unsorted Bookmarks",
"id": 5,
"parent": 1,
"dateAdded": 1361551978957783,
"lastModified": 1177541050000000,
"type": "text/x-moz-place-container",
"root": "unfiledBookmarksFolder",
"children": [
{
"guid": "OCyeUO5uu9FW",
"title": "Example.tld",
"id": 14,
"parent": 5,
"dateAdded": 1361551979401846,
"lastModified": 1361551979402952,
"type": "text/x-moz-place",
"uri": "http://example.tld/"
},
{
"guid": "Cfkety492Afk",
"title": "test tagged bookmark",
"id": 15,
"parent": 5,
"dateAdded": 1507025843703345,
"lastModified": 1507025844703124,
"type": "text/x-moz-place",
"uri": "http://example.tld/tagged",
"tags": "foo"
},
{
"guid": "lOZGoFR1eXbl",
"title": "Bookmarks Toolbar Shortcut",
"dateAdded": 1507025843703345,
"lastModified": 1507025844703124,
"id": 16,
"type": "text/x-moz-place",
"uri": "place:folder=TOOLBAR"
},
{
"guid": "7yJWnBVhjRtP",
"title": "Folder Shortcut",
"dateAdded": 1507025843703345,
"lastModified": 1507025844703124,
"id": 17,
"type": "text/x-moz-place",
"uri": "place:folder=6"
},
{
"guid": "vm5QXWuWc12l",
"title": "Folder Shortcut 2",
"dateAdded": 1507025843703345,
"lastModified": 1507025844703124,
"id": 18,
"type": "text/x-moz-place",
"uri": "place:folder=6123443"
},
{
"guid": "Icg1XlIozA1D",
"title": "Folder Shortcut 3",
"dateAdded": 1507025843703345,
"lastModified": 1507025844703124,
"id": 18,
"type": "text/x-moz-place",
"uri": "place:folder=6&folder=BOOKMARKS_MENU"
}
]
}
]
}
@@ -0,0 +1,135 @@
{
"guid": "root________",
"title": "",
"index": 0,
"dateAdded": 1475084731479000,
"lastModified": 1475084731479000,
"id": 1,
"type": "text/x-moz-place-container",
"root": "placesRoot",
"children": [
{
"guid": "menu________",
"title": "Bookmarks Menu",
"index": 0,
"dateAdded": 1475084731479000,
"lastModified": 1475084731768000,
"id": 2,
"type": "text/x-moz-place-container",
"root": "bookmarksMenuFolder",
"children": [
{
"guid": "X6lUyOspVYwi",
"title": "Test Pilot",
"index": 0,
"dateAdded": 1475084731768000,
"lastModified": 1475084731768000,
"id": 3,
"type": "text/x-moz-place",
"uri": "https://testpilot.firefox.com/"
},
{
"guid": "XF4yRP6bTuil",
"title": "Mobile bookmarks query",
"index": 1,
"dateAdded": 1475084731768000,
"lastModified": 1475084731768000,
"id": 11,
"type": "text/x-moz-place",
"uri": "place:folder=101"
}
]
},
{
"guid": "toolbar_____",
"title": "Bookmarks Toolbar",
"index": 1,
"dateAdded": 1475084731479000,
"lastModified": 1475084731742000,
"id": 4,
"type": "text/x-moz-place-container",
"root": "toolbarFolder",
"children": [
{
"guid": "buy7711R3ZgE",
"title": "MDN",
"index": 0,
"dateAdded": 1475084731769000,
"lastModified": 1475084731769000,
"id": 5,
"type": "text/x-moz-place",
"uri": "https://developer.mozilla.org"
}
]
},
{
"guid": "3qmd_imziEBE",
"title": "Mobile Bookmarks",
"index": 5,
"dateAdded": 1475084731479000,
"lastModified": 1475084731770000,
"id": 101,
"annos": [
{
"name": "mobile/bookmarksRoot",
"flags": 0,
"expires": 4,
"value": 1
},
{
"name": "bookmarkProperties/description",
"flags": 0,
"expires": 4,
"mimeType": null,
"type": 3,
"value": "A description of the mobile folder that should be ignored on import"
}
],
"type": "text/x-moz-place-container",
"children": [
{
"guid": "_o8e1_zxTJFg",
"title": "Get Firefox!",
"index": 0,
"dateAdded": 1475084731769000,
"lastModified": 1475084731769000,
"id": 7,
"type": "text/x-moz-place",
"uri": "http://getfirefox.com/"
},
{
"guid": "QCtSqkVYUbXB",
"title": "Get Thunderbird!",
"index": 1,
"dateAdded": 1475084731770000,
"lastModified": 1475084731770000,
"id": 8,
"type": "text/x-moz-place",
"uri": "http://getthunderbird.com/"
}
]
},
{
"guid": "unfiled_____",
"title": "Other Bookmarks",
"index": 3,
"dateAdded": 1475084731479000,
"lastModified": 1475084731742000,
"id": 9,
"type": "text/x-moz-place-container",
"root": "unfiledBookmarksFolder",
"children": [
{
"guid": "KIa9iKZab2Z5",
"title": "Add-ons",
"index": 0,
"dateAdded": 1475084731769000,
"lastModified": 1475084731769000,
"id": 10,
"type": "text/x-moz-place",
"uri": "https://addons.mozilla.org"
}
]
}
]
}
@@ -0,0 +1,101 @@
{
"guid": "root________",
"title": "",
"index": 0,
"dateAdded": 1475084731479000,
"lastModified": 1475084731479000,
"id": 1,
"type": "text/x-moz-place-container",
"root": "placesRoot",
"children": [
{
"guid": "menu________",
"title": "Bookmarks Menu",
"index": 0,
"dateAdded": 1475084731479000,
"lastModified": 1475084731768000,
"id": 2,
"type": "text/x-moz-place-container",
"root": "bookmarksMenuFolder",
"children": [
{
"guid": "Utodo9b0oVws",
"title": "Firefox Accounts",
"index": 0,
"dateAdded": 1475084731955000,
"lastModified": 1475084731955000,
"id": 3,
"type": "text/x-moz-place",
"uri": "https://accounts.firefox.com/"
}
]
},
{
"guid": "toolbar_____",
"title": "Bookmarks Toolbar",
"index": 1,
"dateAdded": 1475084731479000,
"lastModified": 1475084731742000,
"id": 4,
"type": "text/x-moz-place-container",
"root": "toolbarFolder"
},
{
"guid": "3qmd_imziEBE",
"title": "Mobile Bookmarks",
"index": 5,
"dateAdded": 1475084731479000,
"lastModified": 1475084731770000,
"id": 5,
"annos": [
{
"name": "mobile/bookmarksRoot",
"flags": 0,
"expires": 4,
"value": 1
},
{
"name": "bookmarkProperties/description",
"flags": 0,
"expires": 4,
"mimeType": null,
"type": 3,
"value": "A description of the mobile folder that should be ignored on import"
}
],
"type": "text/x-moz-place-container",
"children": [
{
"guid": "a17yW6-nTxEJ",
"title": "Mozilla",
"index": 0,
"dateAdded": 1475084731959000,
"lastModified": 1475084731959000,
"id": 6,
"type": "text/x-moz-place",
"uri": "https://mozilla.org/"
},
{
"guid": "xV10h9Wi3FBM",
"title": "Bugzilla",
"index": 1,
"dateAdded": 1475084731961000,
"lastModified": 1475084731961000,
"id": 7,
"type": "text/x-moz-place",
"uri": "https://bugzilla.mozilla.org/"
}
]
},
{
"guid": "unfiled_____",
"title": "Other Bookmarks",
"index": 3,
"dateAdded": 1475084731479000,
"lastModified": 1475084731742000,
"id": 8,
"type": "text/x-moz-place-container",
"root": "unfiledBookmarksFolder"
}
]
}
@@ -0,0 +1,159 @@
{
"guid": "root________",
"title": "",
"index": 0,
"dateAdded": 1475084731479000,
"lastModified": 1475084731479000,
"id": 1,
"type": "text/x-moz-place-container",
"root": "placesRoot",
"children": [
{
"guid": "menu________",
"title": "Bookmarks Menu",
"index": 0,
"dateAdded": 1475084731479000,
"lastModified": 1475084731768000,
"id": 2,
"type": "text/x-moz-place-container",
"root": "bookmarksMenuFolder",
"children": [
{
"guid": "buy7711R3ZgE",
"title": "MDN",
"index": 0,
"dateAdded": 1475084731769000,
"lastModified": 1475084731769000,
"id": 3,
"type": "text/x-moz-place",
"uri": "https://developer.mozilla.org"
},
{
"guid": "F_LBgd1fS_uQ",
"title": "Mobile bookmarks query for first folder",
"index": 1,
"dateAdded": 1475084731768000,
"lastModified": 1475084731768000,
"id": 11,
"type": "text/x-moz-place",
"uri": "place:folder=101"
},
{
"guid": "oIpmQXMWsXvY",
"title": "Mobile bookmarks query for second folder",
"index": 2,
"dateAdded": 1475084731768000,
"lastModified": 1475084731768000,
"id": 12,
"type": "text/x-moz-place",
"uri": "place:folder=102"
}
]
},
{
"guid": "3qmd_imziEBE",
"title": "Mobile Bookmarks",
"index": 5,
"dateAdded": 1475084731479000,
"lastModified": 1475084731770000,
"id": 101,
"annos": [
{
"name": "mobile/bookmarksRoot",
"flags": 0,
"expires": 4,
"value": 1
},
{
"name": "bookmarkProperties/description",
"flags": 0,
"expires": 4,
"mimeType": null,
"type": 3,
"value": "A description of the mobile folder that should be ignored on import"
}
],
"type": "text/x-moz-place-container",
"children": [
{
"guid": "a17yW6-nTxEJ",
"title": "Mozilla",
"index": 0,
"dateAdded": 1475084731959000,
"lastModified": 1475084731959000,
"id": 5,
"type": "text/x-moz-place",
"uri": "https://mozilla.org/"
}
]
},
{
"guid": "toolbar_____",
"title": "Bookmarks Toolbar",
"index": 1,
"dateAdded": 1475084731479000,
"lastModified": 1475084731742000,
"id": 6,
"type": "text/x-moz-place-container",
"root": "toolbarFolder",
"children": [
{
"guid": "Utodo9b0oVws",
"title": "Firefox Accounts",
"index": 0,
"dateAdded": 1475084731955000,
"lastModified": 1475084731955000,
"id": 7,
"type": "text/x-moz-place",
"uri": "https://accounts.firefox.com/"
}
]
},
{
"guid": "o4YjJpgsufU-",
"title": "Mobile Bookmarks",
"index": 7,
"dateAdded": 1475084731479000,
"lastModified": 1475084731770000,
"id": 102,
"annos": [
{ "name": "mobile/bookmarksRoot", "flags": 0, "expires": 4, "value": 1 }
],
"type": "text/x-moz-place-container",
"children": [
{
"guid": "sSZ86WT9WbN3",
"title": "DXR",
"index": 0,
"dateAdded": 1475084731769000,
"lastModified": 1475084731769000,
"id": 9,
"type": "text/x-moz-place",
"uri": "https://dxr.mozilla.org"
}
]
},
{
"guid": "unfiled_____",
"title": "Other Bookmarks",
"index": 3,
"dateAdded": 1475084731479000,
"lastModified": 1475084731742000,
"id": 10,
"type": "text/x-moz-place-container",
"root": "unfiledBookmarksFolder",
"children": [
{
"guid": "xV10h9Wi3FBM",
"title": "Bugzilla",
"index": 1,
"dateAdded": 1475084731961000,
"lastModified": 1475084731961000,
"id": 11,
"type": "text/x-moz-place",
"uri": "https://bugzilla.mozilla.org/"
}
]
}
]
}
@@ -0,0 +1,89 @@
{
"guid": "root________",
"title": "",
"index": 0,
"dateAdded": 1475084731479000,
"lastModified": 1475084731479000,
"id": 1,
"type": "text/x-moz-place-container",
"root": "placesRoot",
"children": [
{
"guid": "menu________",
"title": "Bookmarks Menu",
"index": 0,
"dateAdded": 1475084731479000,
"lastModified": 1475084731768000,
"id": 2,
"type": "text/x-moz-place-container",
"root": "bookmarksMenuFolder",
"children": [
{
"guid": "X6lUyOspVYwi",
"title": "Test Pilot",
"index": 0,
"dateAdded": 1475084731768000,
"lastModified": 1475084731768000,
"id": 3,
"type": "text/x-moz-place",
"uri": "https://testpilot.firefox.com/"
}
]
},
{
"guid": "toolbar_____",
"title": "Bookmarks Toolbar",
"index": 1,
"dateAdded": 1475084731479000,
"lastModified": 1475084731742000,
"id": 4,
"type": "text/x-moz-place-container",
"root": "toolbarFolder"
},
{
"guid": "unfiled_____",
"title": "Other Bookmarks",
"index": 3,
"dateAdded": 1475084731479000,
"lastModified": 1475084731742000,
"id": 5,
"type": "text/x-moz-place-container",
"root": "unfiledBookmarksFolder"
},
{
"guid": "mobile______",
"title": "Mobile Bookmarks",
"index": 4,
"dateAdded": 1475084731479000,
"lastModified": 1475084731770000,
"id": 6,
"annos": [
{ "name": "mobile/bookmarksRoot", "flags": 0, "expires": 4, "value": 1 }
],
"type": "text/x-moz-place-container",
"root": "mobileFolder",
"children": [
{
"guid": "_o8e1_zxTJFg",
"title": "Get Firefox!",
"index": 0,
"dateAdded": 1475084731769000,
"lastModified": 1475084731769000,
"id": 7,
"type": "text/x-moz-place",
"uri": "http://getfirefox.com/"
},
{
"guid": "QCtSqkVYUbXB",
"title": "Get Thunderbird!",
"index": 1,
"dateAdded": 1475084731770000,
"lastModified": 1475084731770000,
"id": 8,
"type": "text/x-moz-place",
"uri": "http://getthunderbird.com/"
}
]
}
]
}
@@ -0,0 +1,89 @@
{
"guid": "root________",
"title": "",
"index": 0,
"dateAdded": 1475084731479000,
"lastModified": 1475084731479000,
"id": 1,
"type": "text/x-moz-place-container",
"root": "placesRoot",
"children": [
{
"guid": "menu________",
"title": "Bookmarks Menu",
"index": 0,
"dateAdded": 1475084731479000,
"lastModified": 1475084731955000,
"id": 2,
"type": "text/x-moz-place-container",
"root": "bookmarksMenuFolder",
"children": [
{
"guid": "Utodo9b0oVws",
"title": "Firefox Accounts",
"index": 0,
"dateAdded": 1475084731955000,
"lastModified": 1475084731955000,
"id": 3,
"type": "text/x-moz-place",
"uri": "https://accounts.firefox.com/"
}
]
},
{
"guid": "toolbar_____",
"title": "Bookmarks Toolbar",
"index": 1,
"dateAdded": 1475084731479000,
"lastModified": 1475084731938000,
"id": 4,
"type": "text/x-moz-place-container",
"root": "toolbarFolder"
},
{
"guid": "unfiled_____",
"title": "Other Bookmarks",
"index": 3,
"dateAdded": 1475084731479000,
"lastModified": 1475084731938000,
"id": 5,
"type": "text/x-moz-place-container",
"root": "unfiledBookmarksFolder"
},
{
"guid": "mobile______",
"title": "Mobile Bookmarks",
"index": 4,
"dateAdded": 1475084731479000,
"lastModified": 1475084731961000,
"id": 6,
"annos": [
{ "name": "mobile/bookmarksRoot", "flags": 0, "expires": 4, "value": 1 }
],
"type": "text/x-moz-place-container",
"root": "mobileFolder",
"children": [
{
"guid": "a17yW6-nTxEJ",
"title": "Mozilla",
"index": 0,
"dateAdded": 1475084731959000,
"lastModified": 1475084731959000,
"id": 7,
"type": "text/x-moz-place",
"uri": "https://mozilla.org/"
},
{
"guid": "xV10h9Wi3FBM",
"title": "Bugzilla",
"index": 1,
"dateAdded": 1475084731961000,
"lastModified": 1475084731961000,
"id": 8,
"type": "text/x-moz-place",
"uri": "https://bugzilla.mozilla.org/"
}
]
}
]
}
@@ -0,0 +1,242 @@
/*
* Copyright (c) 2024-2026 Fabian Freund.
*
* This file is part of WebLibre
* (see https://weblibre.eu).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import 'package:flutter_test/flutter_test.dart';
import 'package:weblibre/utils/input_classification.dart';
void main() {
group('classifyAddressBarInput', () {
test('searches free text containing whitespace', () {
final result = classifyAddressBarInput('WebLibre README.md');
expect(result, isA<SearchInputClassification>());
final search = result as SearchInputClassification;
expect(search.reason, SearchReason.containsWhitespace);
expect(search.query, 'WebLibre README.md');
});
test('navigates schemeless domain', () {
final result = classifyAddressBarInput('weblibre.eu');
expect(result, isA<NavigateInputClassification>());
final navigation = result as NavigateInputClassification;
expect(navigation.reason, NavigationReason.schemelessHost);
expect(navigation.uri.toString(), 'https://weblibre.eu');
});
test('navigates localhost over http', () {
final result = classifyAddressBarInput('localhost:8080');
expect(result, isA<NavigateInputClassification>());
final navigation = result as NavigateInputClassification;
expect(navigation.reason, NavigationReason.localhost);
expect(navigation.uri.toString(), 'http://localhost:8080');
});
test('navigates explicit moz-extension uri', () {
final result = classifyAddressBarInput('moz-extension://abc/index.html');
expect(result, isA<NavigateInputClassification>());
final navigation = result as NavigateInputClassification;
expect(navigation.reason, NavigationReason.explicitScheme);
expect(navigation.uri.scheme, 'moz-extension');
});
test('rejects explicit unsupported scheme as invalid', () {
final result = classifyAddressBarInput('myapp://callback?token=abc');
expect(result, isA<InvalidInputClassification>());
final invalid = result as InvalidInputClassification;
expect(invalid.reason, InvalidReason.unsupportedScheme);
});
test('rejects dotted explicit unsupported scheme as invalid', () {
final result = classifyAddressBarInput('my.app://callback');
expect(result, isA<InvalidInputClassification>());
final invalid = result as InvalidInputClassification;
expect(invalid.reason, InvalidReason.unsupportedScheme);
});
test('rejects javascript scheme as invalid', () {
final result = classifyAddressBarInput('JAVASCRIPT:alert(1)');
expect(result, isA<InvalidInputClassification>());
final invalid = result as InvalidInputClassification;
expect(invalid.reason, InvalidReason.unsupportedScheme);
});
test('does not decode encoded scheme before classification', () {
final result = classifyAddressBarInput('%6aavascript:alert(1)');
expect(result, isA<SearchInputClassification>());
});
test('rejects control chars as invalid', () {
final result = classifyAddressBarInput('example.com\x00path');
expect(result, isA<InvalidInputClassification>());
final invalid = result as InvalidInputClassification;
expect(invalid.reason, InvalidReason.containsControlChars);
});
test('invalid schemeless port falls back to search', () {
final result = classifyAddressBarInput('weblibre.eu:99999');
expect(result, isA<SearchInputClassification>());
});
test('explicit disallowed scheme with whitespace remains invalid', () {
final result = classifyAddressBarInput('javascript: alert(1)');
expect(result, isA<InvalidInputClassification>());
final invalid = result as InvalidInputClassification;
expect(invalid.reason, InvalidReason.unsupportedScheme);
});
test('unknown explicit scheme with whitespace remains invalid', () {
final result = classifyAddressBarInput('myapp: secret token');
expect(result, isA<InvalidInputClassification>());
final invalid = result as InvalidInputClassification;
expect(invalid.reason, InvalidReason.unsupportedScheme);
});
test('colon-prefixed query with whitespace is treated as invalid', () {
final result = classifyAddressBarInput('site:weblibre.eu privacy');
expect(result, isA<InvalidInputClassification>());
final invalid = result as InvalidInputClassification;
expect(invalid.reason, InvalidReason.unsupportedScheme);
});
test('symbolic colon query with whitespace is treated as invalid', () {
final result = classifyAddressBarInput('c++: tutorial');
expect(result, isA<InvalidInputClassification>());
final invalid = result as InvalidInputClassification;
expect(invalid.reason, InvalidReason.unsupportedScheme);
});
test('navigates schemeless domain with valid port', () {
final result = classifyAddressBarInput('weblibre.eu:8080');
expect(result, isA<NavigateInputClassification>());
final navigation = result as NavigateInputClassification;
expect(navigation.reason, NavigationReason.schemelessHost);
expect(navigation.uri.toString(), 'https://weblibre.eu:8080');
});
test('navigates IP literal', () {
final result = classifyAddressBarInput('192.168.1.1');
expect(result, isA<NavigateInputClassification>());
final navigation = result as NavigateInputClassification;
expect(navigation.reason, NavigationReason.ipLiteral);
expect(navigation.uri.toString(), 'https://192.168.1.1');
});
test('navigates explicit scheme with space in path', () {
final result = classifyAddressBarInput('https://example.com/a b');
expect(result, isA<NavigateInputClassification>());
final navigation = result as NavigateInputClassification;
expect(navigation.reason, NavigationReason.explicitScheme);
expect(navigation.uri.host, 'example.com');
});
test('rejects data scheme as invalid', () {
final result = classifyAddressBarInput(
'data:text/html,<script>alert(1)</script>',
);
expect(result, isA<InvalidInputClassification>());
final invalid = result as InvalidInputClassification;
expect(invalid.reason, InvalidReason.unsupportedScheme);
});
test('treats missing scheme prefix as search', () {
final result = classifyAddressBarInput('://example.com');
expect(result, isA<SearchInputClassification>());
});
test('navigates URL with credentials', () {
final result = classifyAddressBarInput('https://user:pass@example.com');
expect(result, isA<NavigateInputClassification>());
final navigation = result as NavigateInputClassification;
expect(navigation.reason, NavigationReason.explicitScheme);
expect(navigation.uri.host, 'example.com');
});
test('rejects very long input as tooLong', () {
final longInput = 'a' * 5000;
final result = classifyAddressBarInput(longInput);
expect(result, isA<InvalidInputClassification>());
final invalid = result as InvalidInputClassification;
expect(invalid.reason, InvalidReason.tooLong);
});
test('rejects empty input as emptyInput', () {
final result = classifyAddressBarInput('');
expect(result, isA<InvalidInputClassification>());
final invalid = result as InvalidInputClassification;
expect(invalid.reason, InvalidReason.emptyInput);
});
test('rejects whitespace-only input as emptyInput', () {
final result = classifyAddressBarInput(' ');
expect(result, isA<InvalidInputClassification>());
final invalid = result as InvalidInputClassification;
expect(invalid.reason, InvalidReason.emptyInput);
});
});
group('parseSharedIntentUrl', () {
test('parses explicit https', () {
final uri = parseSharedIntentUrl('https://weblibre.eu');
expect(uri, isNotNull);
expect(uri!.scheme, 'https');
});
test('treats explicit non-http scheme as non-url', () {
final uri = parseSharedIntentUrl('moz-extension://abc/index.html');
expect(uri, isNull);
});
test('treats explicit dotted non-http scheme as non-url', () {
final uri = parseSharedIntentUrl('my.app://callback');
expect(uri, isNull);
});
test('treats plain sentence as non-url', () {
final uri = parseSharedIntentUrl('This is WebLibre README.md');
expect(uri, isNull);
});
});
}
@@ -0,0 +1,290 @@
/*
* Copyright (c) 2024-2026 Fabian Freund.
*
* This file is part of WebLibre
* (see https://weblibre.eu).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:weblibre/utils/text_highlight.dart';
void main() {
group('buildHighlightedText', () {
const baseStyle = TextStyle(color: Colors.black);
const highlightStyle = TextStyle(
color: Colors.red,
fontWeight: FontWeight.bold,
);
const matchPrefix = '***';
const matchSuffix = '***';
test('returns plain text when no highlights present', () {
final result = buildHighlightedText(
'Hello world',
baseStyle,
highlightStyle,
matchPrefix,
matchSuffix,
);
expect(result.children?.length, 1);
final span = result.children![0] as TextSpan;
expect(span.text, 'Hello world');
expect(span.style, baseStyle);
});
test('highlights single match in middle of text', () {
final result = buildHighlightedText(
'Hello ***world***!',
baseStyle,
highlightStyle,
matchPrefix,
matchSuffix,
);
expect(result.children?.length, 3);
final span1 = result.children![0] as TextSpan;
expect(span1.text, 'Hello ');
expect(span1.style, baseStyle);
final span2 = result.children![1] as TextSpan;
expect(span2.text, 'world');
expect(span2.style, highlightStyle);
final span3 = result.children![2] as TextSpan;
expect(span3.text, '!');
expect(span3.style, baseStyle);
});
test('highlights multiple matches', () {
final result = buildHighlightedText(
'The ***quick*** brown ***fox***',
baseStyle,
highlightStyle,
matchPrefix,
matchSuffix,
);
expect(result.children?.length, 4);
expect((result.children![0] as TextSpan).text, 'The ');
expect((result.children![0] as TextSpan).style, baseStyle);
expect((result.children![1] as TextSpan).text, 'quick');
expect((result.children![1] as TextSpan).style, highlightStyle);
expect((result.children![2] as TextSpan).text, ' brown ');
expect((result.children![2] as TextSpan).style, baseStyle);
expect((result.children![3] as TextSpan).text, 'fox');
expect((result.children![3] as TextSpan).style, highlightStyle);
});
test('handles highlight at start of text', () {
final result = buildHighlightedText(
'***Hello*** world',
baseStyle,
highlightStyle,
matchPrefix,
matchSuffix,
);
expect(result.children?.length, 2);
final span1 = result.children![0] as TextSpan;
expect(span1.text, 'Hello');
expect(span1.style, highlightStyle);
final span2 = result.children![1] as TextSpan;
expect(span2.text, ' world');
expect(span2.style, baseStyle);
});
test('handles highlight at end of text', () {
final result = buildHighlightedText(
'Hello ***world***',
baseStyle,
highlightStyle,
matchPrefix,
matchSuffix,
);
expect(result.children?.length, 2);
final span1 = result.children![0] as TextSpan;
expect(span1.text, 'Hello ');
expect(span1.style, baseStyle);
final span2 = result.children![1] as TextSpan;
expect(span2.text, 'world');
expect(span2.style, highlightStyle);
});
test('handles entire text highlighted', () {
final result = buildHighlightedText(
'***Hello world***',
baseStyle,
highlightStyle,
matchPrefix,
matchSuffix,
);
expect(result.children?.length, 1);
final span = result.children![0] as TextSpan;
expect(span.text, 'Hello world');
expect(span.style, highlightStyle);
});
test('handles consecutive highlights', () {
final result = buildHighlightedText(
'***hello******world***',
baseStyle,
highlightStyle,
matchPrefix,
matchSuffix,
);
expect(result.children?.length, 2);
expect((result.children![0] as TextSpan).text, 'hello');
expect((result.children![0] as TextSpan).style, highlightStyle);
expect((result.children![1] as TextSpan).text, 'world');
expect((result.children![1] as TextSpan).style, highlightStyle);
});
test('handles empty highlight', () {
final result = buildHighlightedText(
'Hello ******world',
baseStyle,
highlightStyle,
matchPrefix,
matchSuffix,
);
expect(result.children?.length, 3);
expect((result.children![0] as TextSpan).text, 'Hello ');
expect((result.children![1] as TextSpan).text, '');
expect((result.children![2] as TextSpan).text, 'world');
});
test('handles unclosed prefix marker', () {
final result = buildHighlightedText(
'Hello ***world',
baseStyle,
highlightStyle,
matchPrefix,
matchSuffix,
);
// When suffix not found, highlight everything after prefix to end
expect(result.children?.length, 2);
expect((result.children![0] as TextSpan).text, 'Hello ');
expect((result.children![0] as TextSpan).style, baseStyle);
expect((result.children![1] as TextSpan).text, 'world');
expect((result.children![1] as TextSpan).style, highlightStyle);
});
test('handles missing suffix marker', () {
final result = buildHighlightedText(
'***Hello',
baseStyle,
highlightStyle,
matchPrefix,
matchSuffix,
);
expect(result.children?.length, 1);
final span = result.children![0] as TextSpan;
expect(span.text, 'Hello');
expect(span.style, highlightStyle);
});
test('handles empty string', () {
final result = buildHighlightedText(
'',
baseStyle,
highlightStyle,
matchPrefix,
matchSuffix,
);
expect(result.children?.length, 0);
});
test('handles different prefix and suffix markers', () {
final result = buildHighlightedText(
'Hello <mark>world</mark>!',
baseStyle,
highlightStyle,
'<mark>',
'</mark>',
);
expect(result.children?.length, 3);
expect((result.children![0] as TextSpan).text, 'Hello ');
expect((result.children![1] as TextSpan).text, 'world');
expect((result.children![1] as TextSpan).style, highlightStyle);
expect((result.children![2] as TextSpan).text, '!');
});
// Note: Nested markers behavior is undefined and not a real-world FTS5 scenario
// This test is skipped as the exact parsing behavior for nested markers
// is implementation-specific and not guaranteed
test('handles null styles', () {
final result = buildHighlightedText(
'Hello ***world***!',
null,
null,
matchPrefix,
matchSuffix,
);
expect(result.children?.length, 3);
expect((result.children![0] as TextSpan).style, null);
expect((result.children![1] as TextSpan).style, null);
expect((result.children![2] as TextSpan).style, null);
});
test('real-world FTS5 example', () {
final result = buildHighlightedText(
'Mozilla Developer Network (***MDN***) Web Docs',
baseStyle,
highlightStyle,
matchPrefix,
matchSuffix,
);
expect(result.children?.length, 3);
expect(
(result.children![0] as TextSpan).text,
'Mozilla Developer Network (',
);
expect((result.children![1] as TextSpan).text, 'MDN');
expect((result.children![1] as TextSpan).style, highlightStyle);
expect((result.children![2] as TextSpan).text, ') Web Docs');
});
});
}
@@ -0,0 +1,171 @@
/*
* Copyright (c) 2024-2026 Fabian Freund.
*
* This file is part of WebLibre
* (see https://weblibre.eu).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import 'package:flutter_test/flutter_test.dart';
import 'package:weblibre/utils/uri_input_parser.dart';
import 'package:weblibre/utils/uri_policy.dart';
void main() {
group('parseExplicitUri', () {
test('parses supported explicit scheme', () {
final uri = parseExplicitUri(
'https://weblibre.eu/path',
policy: SchemePolicy.addressBarTyped,
);
expect(uri, isNotNull);
expect(uri!.scheme, 'https');
expect(uri.host, 'weblibre.eu');
});
test('rejects unsupported explicit scheme', () {
final uri = parseExplicitUri(
'javascript:alert(1)',
policy: SchemePolicy.addressBarTyped,
);
expect(uri, isNull);
});
test('rejects malformed explicit uri with required authority', () {
final uri = parseExplicitUri(
'https:///path',
policy: SchemePolicy.addressBarTyped,
);
expect(uri, isNull);
});
});
group('parseSchemelessWebHost', () {
test('upgrades domain to https', () {
final uri = parseSchemelessWebHost('weblibre.eu');
expect(uri, isNotNull);
expect(uri!.toString(), 'https://weblibre.eu');
});
test('upgrades localhost to http', () {
final uri = parseSchemelessWebHost('localhost:8080');
expect(uri, isNotNull);
expect(uri!.toString(), 'http://localhost:8080');
});
test('rejects spaces in host candidate', () {
expect(parseSchemelessWebHost('foo bar.com'), isNull);
});
test('rejects invalid port range', () {
expect(parseSchemelessWebHost('weblibre.eu:99999'), isNull);
});
});
group('parseUserInputUrl', () {
test('parses schemeless host only when enabled', () {
expect(
parseUserInputUrl('weblibre.eu', policy: SchemePolicy.addressBarTyped),
isNull,
);
expect(
parseUserInputUrl(
'weblibre.eu',
policy: SchemePolicy.addressBarTyped,
allowSchemelessHosts: true,
),
isNotNull,
);
});
test('rejects control chars', () {
expect(
parseUserInputUrl(
'example.com\x00path',
policy: SchemePolicy.addressBarTyped,
allowSchemelessHosts: true,
),
isNull,
);
});
test('allows long persisted urls when max length is not enforced', () {
final longPath = 'a' * 5000;
final uri = parseUserInputUrl(
'https://weblibre.eu/$longPath',
policy: SchemePolicy.addressBarTyped,
);
expect(uri, isNotNull);
});
test('rejects long user input urls when max length is enforced', () {
final longPath = 'a' * 5000;
final uri = parseUserInputUrl(
'https://weblibre.eu/$longPath',
policy: SchemePolicy.addressBarTyped,
enforceMaxInputLength: true,
);
expect(uri, isNull);
});
});
group('redactUriCredentials', () {
test('strips userInfo from URI', () {
final uri = Uri.parse('https://user:pass@example.com/path');
final redacted = redactUriCredentials(uri);
expect(redacted.userInfo, isEmpty);
expect(redacted.host, 'example.com');
expect(redacted.path, '/path');
expect(redacted.toString(), 'https://example.com/path');
});
test('is no-op for URIs without credentials', () {
final uri = Uri.parse('https://example.com/path');
final redacted = redactUriCredentials(uri);
expect(identical(redacted, uri), isTrue);
});
});
group('isValidHostCandidate', () {
test('rejects single-label hosts', () {
expect(isValidHostCandidate('example'), isFalse);
expect(isValidHostCandidate('intranet'), isFalse);
});
});
group('containsControlChars', () {
test('detects null bytes', () {
expect(containsControlChars('example\x00.com'), isTrue);
});
test('detects C1 control chars', () {
expect(containsControlChars('example\u0080.com'), isTrue);
expect(containsControlChars('example\u009F.com'), isTrue);
});
test('allows normal text', () {
expect(containsControlChars('example.com'), isFalse);
});
});
}