Index: Makefile.in =================================================================== RCS file: /cvsroot/mozilla/camino/Makefile.in,v retrieving revision 1.72 diff -u -8 -r1.72 Makefile.in --- Makefile.in 31 Jan 2010 23:59:55 -0000 1.72 +++ Makefile.in 23 Feb 2010 03:07:22 -0000 @@ -84,17 +84,17 @@ # prereleases, and bug-fix versions) built on date 20yy.mm.dd into # CFBundleVersion abyy.mm.dd. Only a and b from the version need to be # significant, since any further updates (a.b.c) will necessarily be built on # future dates, and will have larger CFBundleVersion values. This mapping # assumes 0 <= b <= 9 and is not year 2100-compliant. There is currently no # CM_APP_VERSION_CFBUNDLE_FILE to depend on; any rule that uses this value # should depend on CM_APP_VERSION_FILE and PLATFORM_BUILD_ID_FILE. CM_APP_VERSION_CFBUNDLE := $(shell echo $(CM_APP_VERSION)@$(PLATFORM_BUILD_ID) | \ - sed -E -e 's/^([0-9]+)\.([0-9]).*@[02]0([0-9]{2})([0-9]{2})([0-9]{2})[0-9]{2}$$/\1\2\3.\4.\5/') + sed -E -e 's/^([0-9]+)\.([0-9]).*@[02]0([0-9]{2})([0-9]{2})([0-9]{2})[0-9]{6}$$/\1\2\3.\4.\5/') # Info.plist needs to have keys for some values removed, instead of placing # empty values. Start out with a pattern that doesn't exist to give something # to append "or" regex clauses to. GREP_V_PATTERN = __dummy__ # If a CVS tag (or branch) can be determined, use it as the CVS tag name in # Info.plist. If no tag can be found, set up to remove the relevant key from @@ -228,18 +228,16 @@ SYMBOL_ARCHIVE_BASENAME = \ $(APP_NAME)-$(CM_APP_VERSION)-$(PLATFORM_BUILD_ID)-$(OS_TEST) SYMBOL_OUTPUT_DIR = crashreporter-symbols/$(PLATFORM_BUILD_ID) SYMBOL_ZIP_FILENAME = crashreporter-symbols-$(SYMBOL_ARCHIVE_BASENAME).zip SYMBOL_STORE_HOME_DIR = $(topsrcdir)/../$(PLATFORM_BUILD_ID)/symbols SYMBOL_REUPLOAD_SCRIPT_FILE = $(SYMBOL_STORE_HOME_DIR)/../upload-symbols-$(OS_TEST).sh export:: - mkdir -p wallet/tables - ln -fs $(ABS_topsrcdir)/extensions/wallet/src/*.tbl wallet/tables ifneq ($(ABS_topsrcdir),$(MOZ_BUILD_ROOT)) $(RSYNC_ALL) $(srcdir)/Camino.xcodeproj . ln -fs $(srcdir)/src ln -fs $(srcdir)/resources ln -fs $(srcdir)/config ln -fs $(srcdir)/scripts ln -fs $(srcdir)/PreferencePanes ln -fs $(srcdir)/Info-*.plist . @@ -348,31 +346,26 @@ # to be distributed with the application. $(PLATFORM_INI_FILE): $(PLATFORM_BUILD_ID_FILE) $(PLATFORM_VERSION_FILE) mkdir -p $(dir $@) echo [Build] > $@ echo BuildID=$(PLATFORM_BUILD_ID) >> $@ echo Milestone=$(PLATFORM_VERSION) >> $@ $(INSTALL) $@ $(DIST)/bin -# The embed-replacements rsync is done for both srcdir and objdir builds -# to avoid adding CVS stuff to embed.jar. -# In a real auto-generate system, $(GENERATED_GECKO_STRINGS_FILES) would -# need to be called after the embed-replacements rsync (which would itself -# be followed by a .properties extraction rule). +# In a real auto-generate system, $(GENERATED_GECKO_STRINGS_FILES) would need +# to be called after making in pinstripe (which would itself be followed by a +# .properties extraction rule). libs:: \ generated/resources/application/all-camino.js \ generated/Info-Camino.plist \ generated/resources/localized/English.lproj/InfoPlist.strings \ $(GENERATED_STRINGS_FILES) \ $(GENERATED_GECKO_STRINGS_FILES) \ $(PLATFORM_INI_FILE) - $(RSYNC_ALL) $(srcdir)/embed-replacements/ embed-replacements.tmp - cd embed-replacements.tmp && \ - $(ZIP) -r0DX ../../dist/Embed/chrome/embed.jar * $(PBBUILD) -project Camino.xcodeproj -target $(TARGET) \ -configuration $(BUILDSTYLE) $(PBBUILD_SETTINGS) $(RSYNC_ALL) --copy-unsafe-links \ $(XCODE_PRODUCT_DIR)/Camino.app/ $(DIST)/$(APP_NAME).app $(RM) $(DIST)/$(APP_NAME).app/Contents/MacOS/components/camino.xpt $(XPIDL_LINK) $(DIST)/$(APP_NAME).app/Contents/MacOS/camino.xpt \ $(DIST)/$(APP_NAME).app/Contents/MacOS/components/*.xpt $(RM) $(DIST)/$(APP_NAME).app/Contents/MacOS/components/*.xpt Index: confvars.sh =================================================================== RCS file: /cvsroot/mozilla/camino/confvars.sh,v retrieving revision 1.6 diff -u -8 -r1.6 confvars.sh --- confvars.sh 29 Jan 2009 04:05:41 -0000 1.6 +++ confvars.sh 23 Feb 2010 03:07:22 -0000 @@ -31,22 +31,31 @@ # use your version of this file under the terms of the MPL, indicate your # decision by deleting the provisions above and replace them with the notice # and other provisions required by the GPL or the LGPL. If you do not delete # the provisions above, a recipient may use your version of this file under # the terms of any one of the MPL, the GPL or the LGPL. # # ***** END LICENSE BLOCK ***** -MOZ_APP_NAME=mozilla +MOZ_APP_NAME=camino ENABLE_TESTS= ACCESSIBILITY= MOZ_JSDEBUGGER= MOZ_PROFILESHARING= -MOZ_APP_DISPLAYNAME=Mozilla +MOZ_APP_DISPLAYNAME=Camino MOZ_APP_VERSION=$MOZILLA_VERSION -MOZ_EXTENSIONS_DEFAULT=" typeaheadfind" -MOZ_XUL_APP= +#MOZ_EXTENSIONS_DEFAULT=" typeaheadfind" +MOZ_XUL_APP=1 MOZ_PREF_EXTENSIONS= MOZ_WEBSERVICES= MOZ_NO_XPCOM_OBSOLETE=1 MOZ_XPINSTALL= MOZ_URL_CLASSIFIER=1 +MOZ_MORKREADER=1 +MOZ_PLACES=1 +# this chrome is still built, but this may disable building the app +MOZ_UPDATER= +# this doesn't seem to disable building crashreporter +MOZ_CRASHREPORTER= +# these don't seem to disable building alerts +ALERTS_SERVICE= +ALERTS_SERVICE_MAC= Index: build.mk =================================================================== RCS file: /cvsroot/mozilla/camino/build.mk,v retrieving revision 1.5 diff -u -8 -r1.5 build.mk --- build.mk 7 Jun 2007 19:36:01 -0000 1.5 +++ build.mk 23 Feb 2010 03:07:22 -0000 @@ -45,14 +45,13 @@ tier_app_dirs += extensions endif ifdef MOZ_BRANDING_DIRECTORY tier_app_dirs += $(MOZ_BRANDING_DIRECTORY) endif tier_app_dirs += \ - embedding/config \ camino \ $(NULL) package: @$(MAKE) -C camino/installer Index: app-config.mk =================================================================== RCS file: app-config.mk diff -N app-config.mk --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ app-config.mk 23 Feb 2010 03:07:22 -0000 @@ -0,0 +1,49 @@ +# ***** BEGIN LICENSE BLOCK ***** +# Version: MPL 1.1/GPL 2.0/LGPL 2.1 +# +# The contents of this file are subject to the Mozilla Public License Version +# 1.1 (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +# for the specific language governing rights and limitations under the +# License. +# +# The Original Code is the Mozilla build system. +# +# The Initial Developer of the Original Code is +# the Mozilla Foundation . +# Portions created by the Initial Developer are Copyright (C) 2008 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Robert Kaiser (Initial Code) +# +# Alternatively, the contents of this file may be used under the terms of +# either the GNU General Public License Version 2 or later (the "GPL"), or +# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +# in which case the provisions of the GPL or the LGPL are applicable instead +# of those above. If you wish to allow use of your version of this file only +# under the terms of either the GPL or the LGPL, and not to allow others to +# use your version of this file under the terms of the MPL, indicate your +# decision by deleting the provisions above and replace them with the notice +# and other provisions required by the GPL or the LGPL. If you do not delete +# the provisions above, a recipient may use your version of this file under +# the terms of any one of the MPL, the GPL or the LGPL. +# +# ***** END LICENSE BLOCK ***** + +MOZ_MACBROWSER = 1 +DEFINES += -DMOZ_MACBROWSER=1 + +# Make the whole tree rebuild if app-config.mk changes +# Use MOZ_BUILD_APP to make life easy +ifeq (,$(wildcard $(topsrcdir)/$(MOZ_BUILD_APP)/app-config.mk)) +#Fail if normal means of finding app-config.mk does not work +$(error Somehow we got included but we can't find ourselves...) +else +GLOBAL_DEPS += $(topsrcdir)/$(MOZ_BUILD_APP)/app-config.mk +endif + Index: config/Camino.xcconfig =================================================================== RCS file: /cvsroot/mozilla/camino/config/Camino.xcconfig,v retrieving revision 1.21 diff -u -8 -r1.21 Camino.xcconfig --- config/Camino.xcconfig 7 Oct 2009 02:10:11 -0000 1.21 +++ config/Camino.xcconfig 23 Feb 2010 03:07:22 -0000 @@ -9,16 +9,16 @@ GCC_ENABLE_OBJC_EXCEPTIONS = YES GCC_ENABLE_CPP_EXCEPTIONS = NO GCC_ENABLE_CPP_RTTI = NO OTHER_CFLAGS = -fshort-wchar GCC_ENABLE_PASCAL_STRINGS = YES GCC_PREPROCESSOR_DEFINITIONS = OSTYPE=Darwin1.4 OSARCH=Darwin MOZILLA_INTERNAL_API=1 OTHER_LDFLAGS = -lpthread -lm -Wl,-executable_path,build/$(CONFIGURATION)/$(WRAPPER_NAME)/Contents/MacOS LIBRARY_SEARCH_PATHS = ../dist/bin ../dist/lib -HEADER_SEARCH_PATHS = ../dist/include ../dist/include/appcomps ../dist/include/camino ../dist/include/caps ../dist/include/chardet ../dist/include/chrome ../dist/include/commandhandler ../dist/include/composer ../dist/include/content ../dist/include/cookie ../dist/include/docshell ../dist/include/dom ../dist/include/downloads ../dist/include/editor ../dist/include/embed_base ../dist/include/exthandler ../dist/include/find ../dist/include/gfx ../dist/include/helperAppDlg ../dist/include/history ../dist/include/htmlparser ../dist/include/intl ../dist/include/js ../dist/include/layout ../dist/include/locale ../dist/include/mimetype ../dist/include/mork ../dist/include/necko ../dist/include/nkcache ../dist/include/nspr ../dist/include/pipboot ../dist/include/pipnss ../dist/include/pref ../dist/include/profdirserviceprovider ../dist/include/shistory ../dist/include/spellchecker ../dist/include/string ../dist/include/thebes ../dist/include/txtsvc ../dist/include/uconv ../dist/include/unicharutil ../dist/include/uriloader ../dist/include/url-classifier ../dist/include/view ../dist/include/webbrowserpersist ../dist/include/webbrwsr ../dist/include/webshell ../dist/include/widget ../dist/include/windowwatcher ../dist/include/xmlextras ../dist/include/xpcom ../dist/include/xpconnect ../dist/include/xultmpl ../dist/public/nss $(SYSTEM_DEVELOPER_DIR)/Headers/FlatCarbon +HEADER_SEARCH_PATHS = ../dist/include ../dist/include/appcomps ../dist/include/camino ../dist/include/caps ../dist/include/chardet ../dist/include/chrome ../dist/include/commandhandler ../dist/include/composer ../dist/include/content ../dist/include/cookie ../dist/include/docshell ../dist/include/dom ../dist/include/downloads ../dist/include/editor ../dist/include/embed_base ../dist/include/exthandler ../dist/include/find ../dist/include/gfx ../dist/include/helperAppDlg ../dist/include/history ../dist/include/htmlparser ../dist/include/intl ../dist/include/js ../dist/include/layout ../dist/include/locale ../dist/include/mimetype ../dist/include/necko ../dist/include/nkcache ../dist/include/nspr ../dist/include/pipboot ../dist/include/pipnss ../dist/include/places ../dist/include/pref ../dist/include/profdirserviceprovider ../dist/include/shistory ../dist/include/spellchecker ../dist/include/string ../dist/include/thebes ../dist/include/txtsvc ../dist/include/uconv ../dist/include/unicharutil ../dist/include/uriloader ../dist/include/url-classifier ../dist/include/view ../dist/include/webbrowserpersist ../dist/include/webbrwsr ../dist/include/webshell ../dist/include/widget ../dist/include/windowwatcher ../dist/include/xpcom ../dist/include/xpconnect ../dist/include/xultmpl ../dist/public/nss $(SYSTEM_DEVELOPER_DIR)/Headers/FlatCarbon FRAMEWORK_SEARCH_PATHS = sparkle/build/Release growl/build/Release google-breakpad/src/client/mac/build/Release // Warning settings GCC_TREAT_WARNINGS_AS_ERRORS = YES GCC_WARN_SIGN_COMPARE = YES WARNING_CFLAGS = -Wall -Wno-four-char-constants OTHER_CPLUSPLUSFLAGS = $(OTHER_CPLUSPLUSFLAGS) -Wno-non-virtual-dtor Index: config/mozconfig =================================================================== RCS file: /cvsroot/mozilla/camino/config/mozconfig,v retrieving revision 1.17 diff -u -8 -r1.17 mozconfig --- config/mozconfig 17 Jul 2007 18:13:40 -0000 1.17 +++ config/mozconfig 23 Feb 2010 03:07:22 -0000 @@ -1,4 +1,7 @@ mk_add_options MOZ_CO_PROJECT=camino ac_add_options --enable-application=camino ac_add_options --with-macos-sdk=/Developer/SDKs/MacOSX10.4u.sdk ac_add_options --enable-macos-target=10.4 +# These should live in confvars.sh, but values there get overridden later on. +ac_add_options --disable-crashreporter +ac_add_options --disable-updater Index: src/extensions/GeckoUtils.cpp =================================================================== RCS file: /cvsroot/mozilla/camino/src/extensions/GeckoUtils.cpp,v retrieving revision 1.13 diff -u -8 -r1.13 GeckoUtils.cpp --- src/extensions/GeckoUtils.cpp 10 Oct 2009 03:51:33 -0000 1.13 +++ src/extensions/GeckoUtils.cpp 23 Feb 2010 03:07:22 -0000 @@ -67,17 +67,17 @@ #include "nsIContent.h" #include "nsIFrame.h" #include "nsIDocument.h" #include "nsIDOMDocument.h" #include "nsIDOMLocation.h" #include "nsIDOMWindowInternal.h" #include "nsIDOMNSDocument.h" -#include "nsIDOMNSHTMLElement.h" +#include "nsIDOMNSElement.h" /* static */ void GeckoUtils::GatherTextUnder(nsIDOMNode* aNode, nsString& aResult) { nsAutoString text; nsCOMPtr node; aNode->GetFirstChild(getter_AddRefs(node)); PRUint32 depth = 1; @@ -285,17 +285,17 @@ if (!domDocument) return; nsCOMPtr docElement; domDocument->GetDocumentElement(getter_AddRefs(docElement)); if (!docElement) return; - nsCOMPtr nsElement = do_QueryInterface(docElement); + nsCOMPtr nsElement = do_QueryInterface(docElement); if (!nsElement) return; // scrollHeight always gets the wanted height but scrollWidth may not if the page contains // non-scrollable elements (eg
), therefor we find the slientWidth and adds the max x
   // offset if the window has a horizontal scroller. For more see bug 155956 and
   // http://developer.mozilla.org/en/docs/DOM:element.scrollWidth
   // http://developer.mozilla.org/en/docs/DOM:element.clientWidth
Index: src/application/nsStaticComponents.cpp
===================================================================
RCS file: /cvsroot/mozilla/camino/src/application/nsStaticComponents.cpp,v
retrieving revision 1.33
diff -u -8 -r1.33 nsStaticComponents.cpp
--- src/application/nsStaticComponents.cpp	2 Feb 2009 18:32:01 -0000	1.33
+++ src/application/nsStaticComponents.cpp	23 Feb 2010 03:07:23 -0000
@@ -70,32 +70,29 @@
     MODULE(nsRDFModule) \
     MODULE(nsParserModule) \
     MODULE(nsGfxModule) \
     MODULE(nsIconDecoderModule) \
     MODULE(nsImageLib2Module) \
     MODULE(nsPluginModule) \
     MODULE(nsWidgetMacModule) \
     MODULE(nsLayoutModule) \
-    MODULE(nsMorkModule) \
     MODULE(docshell_provider) \
     MODULE(embedcomponents) \
     MODULE(Browser_Embedding_Module) \
     MODULE(nsTransactionManagerModule) \
     MODULE(application) \
     MODULE(nsCookieModule) \
-    MODULE(nsXMLExtrasModule) \
     MODULE(nsUniversalCharDetModule) \
-    MODULE(nsTypeAheadFind) \
     MODULE(nsPermissionsModule) \
     MODULE(nsComposerModule) \
-    MODULE(xpAutoComplete) \
     MODULE(mozSpellCheckerModule) \
     MODULE(mozStorageModule) \
     MODULE(nsAuthModule) \
+    MODULE(nsPlacesModule) \
     MODULE(BOOT) \
     MODULE(NSS) \
     /* end of list */
 #else  // _BUILD_STATIC_BIN
 #define MODULES \
     MODULE(CmXULAppInfoModule) \
     /* end of list */
 #endif  // _BUILD_STATIC_BIN
Index: src/application/AppComponents.mm
===================================================================
RCS file: /cvsroot/mozilla/camino/src/application/AppComponents.mm,v
retrieving revision 1.19
diff -u -8 -r1.19 AppComponents.mm
--- src/application/AppComponents.mm	29 Jan 2009 04:05:44 -0000	1.19
+++ src/application/AppComponents.mm	23 Feb 2010 03:07:23 -0000
@@ -45,22 +45,16 @@
 #import "ProgressDlgController.h"
 #import "nsAboutBookmarks.h"
 #import "CHStringBundleOverride.h"
 #import "ContentDispatchChooser.h"
 #import "SafeBrowsingAboutModule.h"
 
 #include "nsIGenericFactory.h"
 
-#include "nsSimpleGlobalHistory.h"
-
-// for some bizarre reason this is in nsDocShellCID.h
-#define NS_GLOBALHISTORY2_CONTRACTID \
-    "@mozilla.org/browser/global-history;2"
-
 // {0ffd3880-7a1a-11d6-a384-975d1d5f86fc}
 #define NS_SECURITYDIALOGS_CID \
   {0x0ffd3880, 0x7a1a, 0x11d6,{0xa3, 0x84, 0x97, 0x5d, 0x1d, 0x5f, 0x86, 0xfc}}
 
 #define NS_PROMPTSERVICE_CID \
   {0xa2112d6a, 0x0e28, 0x421f, {0xb4, 0x6a, 0x25, 0xc0, 0xb3, 0x8, 0xcb, 0xd0}}
 
 // {7F47B9CB-7091-11DA-B9A4-00039386357A}
@@ -109,53 +103,16 @@
 
   NS_ADDREF(inst);
   inst->SetDisplayFactory([ProgressDlgController sharedDownloadController]);
   nsresult rv = inst->QueryInterface(aIID, aResult);
   NS_RELEASE(inst);
   return rv;
 }
 
-// we have to provide a custom constructor to work around a component manager
-// bug (see bug 276956) that can cause more than one instance of nsSimpleGlobalHistory
-// to be created (for each of the 2 services it implements). So we enforce its
-// singleton nature here.
-static nsresult
-nsSimpleGlobalHistoryConstructor(nsISupports *aOuter, REFNSIID aIID, void **aResult)
-{
-  static nsSimpleGlobalHistory*   sGlobalHistorySingleton;
-  
-  *aResult = NULL;
-  if (aOuter)
-      return NS_ERROR_NO_AGGREGATION;
-
-  nsresult rv;
-  if (!sGlobalHistorySingleton)
-  {
-    NS_NEWXPCOM(sGlobalHistorySingleton, nsSimpleGlobalHistory);
-    if (!sGlobalHistorySingleton)
-        return NS_ERROR_OUT_OF_MEMORY;
-
-    // hold a ref to it. it will never go away
-    NS_ADDREF(sGlobalHistorySingleton);
-
-    // if Init fails we'll do this over and over again. Probably not an issue
-    rv = sGlobalHistorySingleton->Init();
-    if (NS_FAILED(rv))
-    {
-      NS_RELEASE(sGlobalHistorySingleton);
-      sGlobalHistorySingleton = NULL;
-      return rv;
-    }
-  }
-
-  // the QI does the AddRef
-  return sGlobalHistorySingleton->QueryInterface(aIID, aResult);
-}
-
 // used by MainController to register the components in which we want to override
 // with the Gecko embed layer.
 
 static const nsModuleComponentInfo gAppComponents[] = {
   {
     "PSM Security Warnings",
     NS_SECURITYDIALOGS_CID,
     NS_SECURITYWARNINGDIALOGS_CONTRACTID,
@@ -229,28 +186,16 @@
   },
   {
   	"Cookie Service",
   	NS_COOKIEPROMPTSERVICE_CID,
   	NS_COOKIEPROMPTSERVICE_CONTRACTID,
   	CocoaPromptServiceConstructor
   },
   {
-    "Global History",
-    NS_SIMPLEGLOBALHISTORY_CID,
-    NS_GLOBALHISTORY2_CONTRACTID,
-    nsSimpleGlobalHistoryConstructor
-  },
-  {
-    "Global History",
-    NS_SIMPLEGLOBALHISTORY_CID,
-    NS_GLOBALHISTORY_AUTOCOMPLETE_CONTRACTID,
-    nsSimpleGlobalHistoryConstructor
-  },
-  {
     "About Bookmarks Module",
     NS_ABOUT_BOOKMARKS_MODULE_CID,
     NS_ABOUT_MODULE_CONTRACTID_PREFIX "bookmarks",
     nsAboutBookmarks::CreateBookmarks,
   },
   {
     "About Bookmarks Module",
     NS_ABOUT_BOOKMARKS_MODULE_CID,
Index: src/browser/BrowserWindowController.mm
===================================================================
RCS file: /cvsroot/mozilla/camino/src/browser/BrowserWindowController.mm,v
retrieving revision 1.422
diff -u -8 -r1.422 BrowserWindowController.mm
--- src/browser/BrowserWindowController.mm	21 Feb 2010 22:56:25 -0000	1.422
+++ src/browser/BrowserWindowController.mm	23 Feb 2010 03:07:35 -0000
@@ -98,17 +98,16 @@
 #include "GeckoUtils.h"
 
 #include "nsString.h"
 #include "nsServiceManagerUtils.h"
 
 #include "nsIWebNavigation.h"
 #include "nsISHistory.h"
 #include "nsIHistoryEntry.h"
-#include "nsIHistoryItems.h"
 #include "nsIDOMDocument.h"
 #include "nsIDOMNSHTMLDocument.h"
 #include "nsIDOMElement.h"
 #include "nsIDOMEvent.h"
 #include "nsIContextMenuListener.h"
 #include "nsIDOMWindow.h"
 #include "nsIDOMPopupBlockedEvent.h"
 #include "nsIDOMHTMLImageElement.h"
@@ -868,23 +867,16 @@
   mClosingWindow = YES;
 
   [self autosaveWindowFrame];
   
   // ensure that the URL auto-complete popup is closed before the mork
   // database is shut down, or we crash
   [mURLBar clearResults];
 
-  if (mDataOwner)
-  {
-    nsCOMPtr history(do_QueryInterface(mDataOwner->mGlobalHistory));
-    if (history)
-      history->Flush();
-  }
-
   delete mDataOwner;
   mDataOwner = NULL;
 
   nsCOMPtr pref(do_GetService(NS_PREF_CONTRACTID));
   if (pref)
     pref->UnregisterCallback(kGeckoPrefAlwaysShowTabBar, TabBarVisiblePrefChangedCallback, self);
       
   // Tell the BrowserTabView the window is closed
@@ -4850,26 +4842,24 @@
                                    getter_AddRefs(computedStyle));
   if (!computedStyle) {
     return NO;
   }
 
   nsCOMPtr cssValue;
   computedStyle->GetPropertyCSSValue(NS_LITERAL_STRING("background-image"),
                                      getter_AddRefs(cssValue));
-  nsCOMPtr primitiveValue;
-  primitiveValue = do_QueryInterface(cssValue);
-  if (!primitiveValue) {
+  if (!cssValue) {
     return NO;
   }
 
   nsAutoString bgStringValue;
-  primitiveValue->GetStringValue(bgStringValue);
+  cssValue->GetCssText(bgStringValue);
   return [[NSString stringWith_nsAString:bgStringValue]
-          hasPrefix:@"chrome://flashblock/content/"];
+          hasPrefix:@"url(\"chrome://flashblock/"];
 }
 
 //
 // -unblockFlashFromCurrentDomain:
 //
 // Context menu action for adding the current domain to the Flashblock whitelist.
 //
 - (IBAction)unblockFlashFromCurrentDomain:(id)sender
Index: src/embedding/CHBrowserService.mm
===================================================================
RCS file: /cvsroot/mozilla/camino/src/embedding/CHBrowserService.mm,v
retrieving revision 1.39
diff -u -8 -r1.39 CHBrowserService.mm
--- src/embedding/CHBrowserService.mm	2 Jun 2009 03:58:12 -0000	1.39
+++ src/embedding/CHBrowserService.mm	23 Feb 2010 03:07:35 -0000
@@ -194,19 +194,20 @@
 }
 
 /* static */
 void CHBrowserService::ShutDown()
 {
   NS_ASSERTION(sCanTerminate, "Should be able to terminate here!");
 
   nsCOMPtr observerService = do_GetService("@mozilla.org/observer-service;1");
-  if (observerService)
+  if (observerService) {
     observerService->NotifyObservers(nsnull, "profile-change-net-teardown", nsnull);
-  
+    observerService->NotifyObservers(nsnull, "quit-application", nsnull);
+  }
   // phase 2 notifcation (we really are about to terminate)
   [[NSNotificationCenter defaultCenter] postNotificationName:XPCOMShutDownNotificationName object:nil];
 
   NS_IF_RELEASE(sSingleton);
   NS_TermEmbedding();
 #if DEBUG
   NSLog(@"Shutting down embedding.");
 #endif
@@ -268,60 +269,64 @@
   StNullJSContextScope hack(&rv);
   NS_ENSURE_SUCCESS(rv, rv);
   
   nsCOMPtr browserChrome(do_QueryInterface(parent));
   return browserChrome->CreateChromeWindow(parent, chromeFlags, _retval);
 }
 
 
-//    void show( in nsIHelperAppLauncher aLauncher, in nsISupports aContext, in unsigned long aReason );
+// void show(in nsIHelperAppLauncher aLauncher, in nsISupports aContext, in unsigned long aReason);
 NS_IMETHODIMP
 CHBrowserService::Show(nsIHelperAppLauncher* inLauncher, nsISupports* inContext, PRUint32 aReason)
 {
   PRBool downloadWithoutDialog = PR_FALSE;
 
-  // Check for pref to download to defined downloads directory
+  // Check for pref to download to defined downloads directory.
   nsCOMPtr prefService (do_GetService(NS_PREF_CONTRACTID));
   if (prefService)
     prefService->GetBoolPref(kGeckoPrefDownloadToDefaultLocation, &downloadWithoutDialog);
 
   nsCOMPtr downloadFile;
   if (downloadWithoutDialog)
   {
-    NS_GetSpecialDirectory(NS_MAC_DEFAULT_DOWNLOAD_DIR, getter_AddRefs(downloadFile));
-    
+    // This respects the gecko pref we set in the Download prefpane, so there's
+    // no need to change it.
+    nsCOMPtr targetFile;
+    inLauncher->GetTargetFile(getter_AddRefs(targetFile));
+    targetFile->GetParent(getter_AddRefs(downloadFile));
     nsAutoString leafName;
     inLauncher->GetSuggestedFileName(leafName);
     if (leafName.IsEmpty())
     {
       nsCOMPtr sourceURI;
       inLauncher->GetSource(getter_AddRefs(sourceURI));
       if (sourceURI)
       {
-        // we know this doesn't have a leaf name, because nsExternalAppHandler::SetUpTempFile would have
-        // got it already.
+        // We know this doesn't have a leaf name, because
+        // nsExternalAppHandler::SetUpTempFile would have got it already.
         nsCAutoString hostName;
         sourceURI->GetHost(hostName);
         leafName = NS_ConvertUTF8toUTF16(hostName);
         leafName.Append(NS_LITERAL_STRING(" download"));
       }
       else
       {
         leafName.Assign(NS_LITERAL_STRING("Camino download"));
       }
     }
 
     downloadFile->Append(leafName);
-    // this will make an empty file, that persists until the download is done, "holding"
-    // a file system location for the final file. Note that if you change this, be
-    // sure to fix nsDownloadListener::DownloadDone not to delete some random file.
+    // This will make an empty file that persists until the download is done,
+    // "holding" a file system location for the final file. Note that if you
+    // change this, be sure to fix nsDownloadListener::DownloadDone not to
+    // delete some random file.
     downloadFile->CreateUnique(nsIFile::NORMAL_FILE_TYPE, 0600);
-  }  
-  
+  }
+
   return inLauncher->SaveToDisk(downloadFile, PR_FALSE);
 }
 
 NS_IMETHODIMP
 CHBrowserService::PromptForSaveToFile(nsIHelperAppLauncher* aLauncher,
 nsISupports *aWindowContext, const PRUnichar *aDefaultFile, const PRUnichar *aSuggestedFileExtension, PRBool aForcePrompt, nsILocalFile **_retval)
 {
   NSString* filename = [NSString stringWithPRUnichars:aDefaultFile];
Index: src/embedding/CHBrowserView.mm
===================================================================
RCS file: /cvsroot/mozilla/camino/src/embedding/CHBrowserView.mm,v
retrieving revision 1.124
diff -u -8 -r1.124 CHBrowserView.mm
--- src/embedding/CHBrowserView.mm	21 Feb 2010 22:56:29 -0000	1.124
+++ src/embedding/CHBrowserView.mm	23 Feb 2010 03:07:40 -0000
@@ -92,17 +92,17 @@
 #include "SaveHeaderSniffer.h"
 #include "nsIWebPageDescriptor.h"
 
 // Find in page
 #include "nsIWebBrowserFind.h"
 #include "nsISelection.h"
 
 // Focus accessors
-#include "nsIFocusController.h"
+#include "nsFocusManager.h"
 #include "nsIDOMElement.h"
 
 // Focus tests
 #include "nsIDOMHTMLInputElement.h"
 #include "nsIDOMHTMLTextAreaElement.h"
 #include "nsIDOMHTMLEmbedElement.h"
 #include "nsIDOMHTMLObjectElement.h"
 #include "nsIDOMHTMLAppletElement.h"
@@ -161,17 +161,16 @@
 - (float)textZoom;
 - (float)pageZoom;
 - (void)incrementTextZoom:(float)increment min:(float)min max:(float)max;
 - (void)incrementPageZoom:(float)increment min:(float)min max:(float)max;
 - (nsIDocShell*)docShell;    // does NOT addref
 - (NSString*)selectedText;
 - (already_AddRefed)focussedDOMWindow;
 - (already_AddRefed)focusedDOMElement;
-- (already_AddRefed)focusController;
 - (already_AddRefed)secureBrowserUI;
 - (NSString*)locationFromDOMWindow:(nsIDOMWindow*)inDOMWindow;
 - (void)ensurePrintSettings;
 - (void)savePrintSettings;
 - (BOOL)isPasswordFieldFocused;
 - (void)collapseSelection;
 
 @end
@@ -689,40 +688,26 @@
     // Hook up the widget hierarchy with us as the parent
     nsCOMPtr baseWin = do_QueryInterface(_webBrowser);
     baseWin->InitWindow((NSView*)self, nsnull, 0, 0, (int)frame.size.width, (int)frame.size.height);
     baseWin->Create();
   }
 
 }
 
-// Returns the focus controller, AddRef'd.
-- (already_AddRefed)focusController
-{
-  if (!_webBrowser)
-    return nsnull;
-  nsCOMPtr domWindow;
-  _webBrowser->GetContentDOMWindow(getter_AddRefs(domWindow));
-  nsCOMPtr privateWindow = do_QueryInterface(domWindow);
-  if (!privateWindow)
-    return nsnull;
-  nsIFocusController* focusController = privateWindow->GetRootFocusController();
-  NS_IF_ADDREF(focusController);
-  return focusController;
-}
-
 // Returns the currently focused DOM element, AddRef'd.
 - (already_AddRefed)focusedDOMElement
 {
-  nsCOMPtr controller = [self focusController];
-  if (!controller)
+  nsresult rv;
+  nsCOMPtr fm(do_GetService("@mozilla.org/focus-manager;1", &rv));
+  if (!fm)
     return nsnull;
-  nsCOMPtr focusedItem;
-  controller->GetFocusedElement(getter_AddRefs(focusedItem));
-  nsIDOMElement* domElement = focusedItem.get();
+  nsCOMPtr focusedElement;
+  fm->GetFocusedElement(getter_AddRefs(focusedElement));
+  nsIDOMElement* domElement = focusedElement.get();
   NS_IF_ADDREF(domElement);
   return domElement;
 }
 
 - (NSImage*)snapshot
 {
   NSSize viewportSize = [self bounds].size;
   // We don't draw scrollbars, so set the snapshot width to be the smaller of
@@ -771,17 +756,20 @@
   PRInt32 scrollX, scrollY;
   domWindow->GetScrollX(&scrollX);
   domWindow->GetScrollY(&scrollY);
   PRInt32 appUnitsPerPixel = presContext->AppUnitsPerDevPixel();
   nsRect viewRect(NSIntPixelsToAppUnits(scrollX, appUnitsPerPixel),
                   NSIntPixelsToAppUnits(scrollY, appUnitsPerPixel),
                   NSIntPixelsToAppUnits(viewportSize.width, appUnitsPerPixel),
                   NSIntPixelsToAppUnits(viewportSize.height, appUnitsPerPixel));
-  presShell->RenderDocument(viewRect, PR_FALSE, PR_TRUE, NS_RGB(255, 255, 255), context);
+  presShell->RenderDocument(viewRect,
+                            nsIPresShell::RENDER_IGNORE_VIEWPORT_SCROLLING,
+                            NS_RGB(255, 255, 255),
+                            context);
 
   // Now transfer the context contents into an NSImage.
   CGContextRef surfaceContext = surface->GetCGContext();
   if (!surfaceContext)
     return nil;
   CGImageRef cgImage = CGBitmapContextCreateImage(surfaceContext);
   NSImage* snapshot = [[[NSImage alloc] initWithSize:snapshotSize] autorelease];
   NSRect imageRect = NSMakeRect(0, 0, snapshotSize.width, snapshotSize.height);
@@ -1388,17 +1376,17 @@
 
 - (BOOL)shouldUnload
 {
   nsCOMPtr contentViewer = dont_AddRef([self contentViewer]);
   if (!contentViewer)
     return YES;
 
   PRBool canUnload;
-  contentViewer->PermitUnload(&canUnload);
+  contentViewer->PermitUnload(PR_FALSE, &canUnload);
   return canUnload ? YES : NO;
 }
 
 // -isPasswordFieldFocused
 //
 // Returs YES if a password field in the content area has focus.
 // We need this only because core believes that password fields are
 // valid cut/copy targets (see bug 217729).
@@ -1441,21 +1429,21 @@
       isFocused = YES;
     if (type == NS_LITERAL_STRING("password"))
       isFocused = YES;
   }
   else if (textArea) {
     isFocused = YES;
   }
   else { // check for Midas
-    nsCOMPtr controller = [self focusController];
-    if (controller) {
-      nsCOMPtr winInternal;
-      controller->GetFocusedWindow(getter_AddRefs(winInternal));
-      nsCOMPtr focusedWindow(do_QueryInterface(winInternal));
+    nsresult rv;
+    nsCOMPtr fm(do_GetService("@mozilla.org/focus-manager;1", &rv));
+    if (fm) {
+      nsCOMPtr focusedWindow;
+      fm->GetFocusedWindow(getter_AddRefs(focusedWindow));
       if (focusedWindow) {
         nsCOMPtr domDoc;
         focusedWindow->GetDocument(getter_AddRefs(domDoc));
         nsCOMPtr htmlDoc(do_QueryInterface(domDoc));
         if (htmlDoc) {
           nsAutoString designMode;
           htmlDoc->GetDesignMode(designMode);
           if (designMode.EqualsLiteral("on"))
Index: src/embedding/CHBrowserView+Spelling.mm
===================================================================
RCS file: /cvsroot/mozilla/camino/src/embedding/CHBrowserView+Spelling.mm,v
retrieving revision 1.1
diff -u -8 -r1.1 CHBrowserView+Spelling.mm
--- src/embedding/CHBrowserView+Spelling.mm	31 Mar 2008 16:18:15 -0000	1.1
+++ src/embedding/CHBrowserView+Spelling.mm	23 Feb 2010 03:07:42 -0000
@@ -37,27 +37,28 @@
  *
  * ***** END LICENSE BLOCK ***** */
 
 #import "CHBrowserView+Spelling.h"
 
 #import "NSString+Gecko.h"
 
 #include "nsCOMPtr.h"
+#include "nsServiceManagerUtils.h"
 #include "nsCRT.h"
+#include "nsFocusManager.h"
 #include "nsIDocShell.h"
 #include "nsIDOMElement.h"
 #include "nsIDOMNSEditableElement.h"
 #include "nsIDOMNSHTMLDocument.h"
 #include "nsIDOMRange.h"
 #include "nsIDOMWindow.h"
 #include "nsIEditingSession.h"
 #include "nsIEditor.h"
 #include "nsIEditorSpellCheck.h"
-#include "nsIFocusController.h"
 #include "nsIInlineSpellChecker.h"
 #include "nsIInterfaceRequestorUtils.h"
 #include "nsISelection.h"
 #include "nsPIDOMWindow.h"
 #include "nsString.h"
 
 #if MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_4
 // Declare private NSSpellChecker method (public as of 10.5).
@@ -72,17 +73,16 @@
 - (void)getMisspelledWordRange:(nsIDOMRange**)outRange
             inlineSpellChecker:(nsIInlineSpellChecker**)outInlineChecker;
 
 @end
 
 @interface CHBrowserView (PrivateCHBrowserViewMethodsUsedForSpelling)
 
 - (already_AddRefed)focusedDOMElement;
-- (already_AddRefed)focusController;
 
 @end
 
 @implementation CHBrowserView (SpellingMethods)
 
 - (void)ignoreCurrentWord
 {
   nsCOMPtr misspelledRange;
@@ -225,23 +225,23 @@
   nsCOMPtr focusedElement = [self focusedDOMElement];
   nsCOMPtr editElement = do_QueryInterface(focusedElement);
 
   if (editElement) {
     editElement->GetEditor(&editor); // addrefs
   }
   else {
     // if there's no element focused, we're probably in a Midas editor
-    nsCOMPtr controller = [self focusController];
-    if (!controller)
+    nsresult rv;
+    nsCOMPtr fm(do_GetService("@mozilla.org/focus-manager;1", &rv));
+    if (!fm)
       return NULL;
 
-    nsCOMPtr winInternal;
-    controller->GetFocusedWindow(getter_AddRefs(winInternal));
-    nsCOMPtr focusedWindow(do_QueryInterface(winInternal));
+    nsCOMPtr focusedWindow;
+    fm->GetFocusedWindow(getter_AddRefs(focusedWindow));
     if (!focusedWindow)
       return NULL;
 
     nsCOMPtr domDoc;
     focusedWindow->GetDocument(getter_AddRefs(domDoc));
     nsCOMPtr htmlDoc(do_QueryInterface(domDoc));
     if (!htmlDoc)
       return NULL;
@@ -294,15 +294,14 @@
   if (!selection)
     return;
 
   nsCOMPtr selectionEndNode;
   PRInt32 selectionEndOffset = 0;
   selection->GetFocusNode(getter_AddRefs(selectionEndNode));
   selection->GetFocusOffset(&selectionEndOffset);
 
-  // The misspelling "mispelled" is (sadly) deliberate; see bug 357465.
-  (*outInlineChecker)->GetMispelledWord(selectionEndNode,
+  (*outInlineChecker)->GetMisspelledWord(selectionEndNode,
                                         (long)selectionEndOffset,
                                         outRange); // addrefs
 }
 
 @end
Index: src/preferences/GeckoPrefConstants.h
===================================================================
RCS file: /cvsroot/mozilla/camino/src/preferences/GeckoPrefConstants.h,v
retrieving revision 1.18
diff -u -8 -r1.18 GeckoPrefConstants.h
--- src/preferences/GeckoPrefConstants.h	16 Feb 2010 22:42:59 -0000	1.18
+++ src/preferences/GeckoPrefConstants.h	23 Feb 2010 03:07:42 -0000
@@ -265,16 +265,26 @@
 // The url of a PAC file to use for proxy settings
 extern const char* const kGeckoPrefProxyAutoconfigURL;                 // string
 
 // A list of sites for which the proxy should not be applied
 extern const char* const kGeckoPrefProxyBypassList;                    // string
 
 #pragma mark Downloads
 
+// A list of possible download directories
+extern const char* const kGeckoPrefDownloadsFolderList;                // int
+// Possible values:
+extern const int kDownloadsFolderDesktop;
+extern const int kDownloadsFolderDownloads;
+extern const int kDownloadsFolderCustom;
+
+// If kGeckoPrefsDownloadsFolderList is kDownloadsFolderCustom
+extern const char* const kGeckoPrefDownloadsDir;                       // nsILocalFile
+
 // Controls whether downloads should be auto-launched
 extern const char* const kGeckoPrefAutoOpenDownloads;                  // bool
 
 // Controls when downloads are removed from the manager
 extern const char* const kGeckoPrefDownloadCleanupPolicy;              // int
 // Possible values:
 extern const int kRemoveDownloadsOnSuccess;
 extern const int kRemoveDownloadsOnQuit;
Index: src/preferences/GeckoPrefConstants.mm
===================================================================
RCS file: /cvsroot/mozilla/camino/src/preferences/GeckoPrefConstants.mm,v
retrieving revision 1.18
diff -u -8 -r1.18 GeckoPrefConstants.mm
--- src/preferences/GeckoPrefConstants.mm	16 Feb 2010 22:42:59 -0000	1.18
+++ src/preferences/GeckoPrefConstants.mm	23 Feb 2010 03:07:43 -0000
@@ -44,16 +44,18 @@
 asm(".no_dead_strip _kGeckoPrefLinkColor");
 asm(".no_dead_strip _kGeckoPrefPageBackgroundColor");
 asm(".no_dead_strip _kGeckoPrefPageForegroundColor");
 asm(".no_dead_strip _kGeckoPrefUnderlineLinks");
 asm(".no_dead_strip _kGeckoPrefUsePageColors");
 asm(".no_dead_strip _kGeckoPrefUsePageFonts");
 asm(".no_dead_strip _kGeckoPrefVisitedLinkColor");
 asm(".no_dead_strip _kGeckoPrefCookieLifetimePolicy");
+asm(".no_dead_strip _kGeckoPrefDownloadsFolderList");
+asm(".no_dead_strip _kGeckoPrefDownloadsDir");
 asm(".no_dead_strip _kGeckoPrefDefaultCertificateBehavior");
 asm(".no_dead_strip _kGeckoPrefBlockPopups");
 asm(".no_dead_strip _kGeckoPrefEnableJava");
 asm(".no_dead_strip _kGeckoPrefImageAnimationBehavior");
 asm(".no_dead_strip _kGeckoPrefPreventDOMStatusChange");
 asm(".no_dead_strip _kGeckoPrefPreventDOMWindowFocus");
 asm(".no_dead_strip _kGeckoPrefPreventDOMWindowResize");
 asm(".no_dead_strip _kGeckoPrefTabFocusBehavior");
@@ -80,16 +82,19 @@
 asm(".no_dead_strip _kBackspaceActionBack");
 asm(".no_dead_strip _kBackspaceActionNone");
 asm(".no_dead_strip _kCookieAcceptAll");
 asm(".no_dead_strip _kCookieAcceptFromOriginatingServer");
 asm(".no_dead_strip _kCookieAcceptNone");
 asm(".no_dead_strip _kCookieLifetimeAsk");
 asm(".no_dead_strip _kCookieLifetimeNormal");
 asm(".no_dead_strip _kCookieLifetimeSession");
+asm(".no_dead_strip _kDownloadsFolderDesktop");
+asm(".no_dead_strip _kDownloadsFolderDownloads");
+asm(".no_dead_strip _kDownloadsFolderCustom");
 
 
 #pragma mark Tab Behavior
 
 const char* const kGeckoPrefAlwaysShowTabBar = "camino.tab_bar_always_visible";
 const char* const kGeckoPrefExternalLoadBehavior = "browser.reuse_window";
 const char* const kGeckoPrefOpenTabsForMiddleClick = "browser.tabs.opentabfor.middleclick";
 const char* const kGeckoPrefOpenTabsInBackground = "browser.tabs.loadInBackground";
@@ -176,16 +181,18 @@
 #pragma mark Proxies
 
 const char* const kGeckoPrefProxyUsesSystemSettings = "camino.use_system_proxy_settings";
 const char* const kGeckoPrefProxyAutoconfigURL = "network.proxy.autoconfig_url";
 const char* const kGeckoPrefProxyBypassList = "network.proxy.no_proxies_on";
 
 #pragma mark Downloads
 
+const char* const kGeckoPrefDownloadsFolderList = "browser.download.folderList";
+const char* const kGeckoPrefDownloadsDir = "browser.download.dir";
 const char* const kGeckoPrefAutoOpenDownloads = "browser.download.manager.openDownloadedFiles";
 const char* const kGeckoPrefDownloadCleanupPolicy = "browser.download.manager.retention";
 const char* const kGeckoPrefFocusDownloadManagerOnDownload = "browser.download.manager.focusWhenStarting";
 const char* const kGeckoPrefOpenDownloadManagerOnDownload = "browser.download.manager.showWhenStarting";
 const char* const kGeckoPrefCloseDownloadManagerWhenDone = "browser.download.manager.closeWhenDone";
 const char* const kGeckoPrefDownloadToDefaultLocation = "browser.download.useDownloadDir";
 
 #pragma mark Page Appearance
@@ -283,16 +290,21 @@
 const int kCookieAcceptFromOriginatingServer = 1;
 const int kCookieAcceptNone = 2;
 
 // kGeckoPrefCookieLifetimePolicy values
 const int kCookieLifetimeNormal = 0;
 const int kCookieLifetimeAsk = 1;
 const int kCookieLifetimeSession = 2;
 
+// kGeckoPrefDownloadsFolderList values
+const int kDownloadsFolderDesktop = 0;
+const int kDownloadsFolderDownloads = 1;
+const int kDownloadsFolderCustom = 2;
+
 // kGeckoPrefDownloadCleanupPolicy values
 // NB: these are the opposite of what they used to be!
 const int kRemoveDownloadsOnSuccess = 0;
 const int kRemoveDownloadsOnQuit = 1;
 const int kRemoveDownloadsManually = 2;
 
 // kOldGeckoPrefDownloadCleanupPolicy values
 // NB: these are the opposite of the new ones!
Index: src/preferences/PreferenceManager.h
===================================================================
RCS file: /cvsroot/mozilla/camino/src/preferences/PreferenceManager.h,v
retrieving revision 1.26
diff -u -8 -r1.26 PreferenceManager.h
--- src/preferences/PreferenceManager.h	24 Jul 2009 21:32:32 -0000	1.26
+++ src/preferences/PreferenceManager.h	23 Feb 2010 03:07:43 -0000
@@ -68,33 +68,41 @@
 + (PreferenceManager*)sharedInstanceDontCreate;
 
 - (BOOL)initMozillaPrefs;
 - (void)syncMozillaPrefs;
 - (void)savePrefsFile;
 
 - (NSString*)homePageUsingStartPage:(BOOL)checkStartupPagePref;
 
+- (NSURL*)getFilePref: (const char*)prefName withSuccess:(BOOL*)outSuccess;
 - (NSString*)getStringPref: (const char*)prefName withSuccess:(BOOL*)outSuccess;
 - (NSColor*)getColorPref: (const char*)prefName withSuccess:(BOOL*)outSuccess;
 - (BOOL)getBooleanPref: (const char*)prefName withSuccess:(BOOL*)outSuccess;
 - (int)getIntPref: (const char*)prefName withSuccess:(BOOL*)outSuccess;
 
+- (void)setPref:(const char*)prefName toFile:(NSURL*)value;
 - (void)setPref:(const char*)prefName toString:(NSString*)value;
 - (void)setPref:(const char*)prefName toInt:(int)value;
 - (void)setPref:(const char*)prefName toBoolean:(BOOL)value;
 
+// Set/Get the directory to download files to.
+- (void)setDownloadDirectoryPrefToPath:(NSString*)aPath;
+- (NSString*)downloadDirectoryPref;
+
 - (void)clearPref:(const char*)prefName;
 
 // the path to the user profile's root folder
 - (NSString*)profilePath;
 // the path to Camino's cache root folder
 - (NSString*)cacheParentDirPath;
-// the path to the user's download folder
+// the path to the default system download folder
 - (NSString*)downloadDirectoryPath;
+// the path to the users's desktop folder
+- (NSString*)desktopDirectoryPath;
 
 // turn notifications on and off when the given pref changes. 
 // if not nil, inObject is used at the 'object' of the resulting notification.
 - (void)addObserver:(id)inObject forPref:(const char*)inPrefName;
 - (void)removeObserver:(id)inObject;    // remove from all prefs that it observes
 - (void)removeObserver:(id)inObject forPref:(const char*)inPrefName;
 
 // Returns a Cocoa font name translated from a Gecko font family name (used in 
Index: src/preferences/PreferenceManager.mm
===================================================================
RCS file: /cvsroot/mozilla/camino/src/preferences/PreferenceManager.mm,v
retrieving revision 1.104
diff -u -8 -r1.104 PreferenceManager.mm
--- src/preferences/PreferenceManager.mm	21 Sep 2009 22:16:21 -0000	1.104
+++ src/preferences/PreferenceManager.mm	23 Feb 2010 03:07:48 -0000
@@ -81,17 +81,17 @@
 
 
 static NSString* const AdBlockingChangedNotificationName = @"AdBlockingChanged";
 static NSString* const kFlashblockChangedNotificationName = @"FlashblockChanged";
 
 // This is an arbitrary version stamp that gets written to the prefs file.
 // It can be used to detect when a new version of Camino is run that needs
 // some prefs to be upgraded.
-static const PRInt32 kCurrentPrefsVersion = 2;
+static const PRInt32 kCurrentPrefsVersion = 3;
 
 // CheckCompatibility and WriteVersion are based on the versions in
 // toolkit/xre/nsAppRunner.cpp.  This is done to provide forward
 // compatibility in anticipation of Camino-on-XULRunner.
 
 #define FILE_COMPATIBILITY_INFO NS_LITERAL_CSTRING("compatibility.ini")
 
 static PRBool
@@ -192,16 +192,18 @@
 }
 
 @interface PreferenceManager(PreferenceManagerPrivate)
 
 - (void)registerNotificationListener;
 - (void)initUpdatePrefs;
 - (void)cleanUpObsoletePrefs;
 - (void)migrateOldDownloadPrefs;
+// Returns the path of the download directory set in Internet Config.
+- (NSString*)internetConfigDownloadDirectoryPref;
 
 - (void)termEmbedding:(NSNotification*)aNotification;
 - (void)xpcomTerminate:(NSNotification*)aNotification;
 
 - (void)showLaunchFailureAndQuitWithErrorTitle:(NSString*)inTitleFormat errorMessage:(NSString*)inMessageFormat;
 
 - (void)setAcceptLanguagesPref;
 - (void)setLocalePref;
@@ -797,16 +799,25 @@
   if (mLastRunPrefsVersion < 1)
     mPrefs->SetCharPref("intl.charset.detector", "");
 
   // Starting with pref version 2, we migrated to the toolkit versions of
   // all our download manager preferences.
   if (mLastRunPrefsVersion < 2)
     [self migrateOldDownloadPrefs];
 
+  // Starting with Gecko 1.9.1, the download directory is set in Gecko prefs,
+  // rather than Internet Config. We need to move the setting over for users
+  // when they upgrade.
+  if (mLastRunPrefsVersion && mLastRunPrefsVersion < 3)
+    [self setDownloadDirectoryPrefToPath:[self internetConfigDownloadDirectoryPref]];
+
+  if (mLastRunPrefsVersion == 0) // New profile, so default to Downloads
+    [self setDownloadDirectoryPrefToPath:[self downloadDirectoryPref]];
+
   mPrefs->SetIntPref("camino.prefs_version", kCurrentPrefsVersion);
 
   // Fix up the cookie prefs. If 'p3p' or 'accept foreign cookies' are on,
   // remap them to something that Camino can deal with.
   PRInt32 acceptCookies = 0;
   static const char* kCookieBehaviorPref = kGeckoPrefCookieDefaultAcceptPolicy;
   mPrefs->GetIntPref(kCookieBehaviorPref, &acceptCookies);
   if (acceptCookies == 3) {     // p3p, assume all cookies on
@@ -956,16 +967,30 @@
   else {
     NSLog(@"Unable to determine user interface locale\n");
     // Fall back to the "en-US" default from all.js.  Clear any existing
     // user pref.
     [self clearPref:kGeckoPrefUserAgentLocale];
   }
 }
 
+- (void)setDownloadDirectoryPrefToPath:(NSString*)aPath
+{
+  if (!aPath || [aPath isEqualToString:[self downloadDirectoryPath]]) {
+    [self setPref:kGeckoPrefDownloadsFolderList toInt:kDownloadsFolderDownloads];
+  }
+  else if ([aPath isEqualToString:[self desktopDirectoryPath]]) {
+    [self setPref:kGeckoPrefDownloadsFolderList toInt:kDownloadsFolderDesktop];
+  }
+  else {
+    [self setPref:kGeckoPrefDownloadsFolderList toInt:kDownloadsFolderCustom];
+    [self setPref:kGeckoPrefDownloadsDir toFile:[NSURL fileURLWithPath:aPath]];
+  }
+}
+
 #pragma mark -
 
 - (void)configureProxies
 {
   [self readSystemProxySettings];
   [self registerForProxyChanges];
 }
 
@@ -1218,16 +1243,31 @@
     ssService->UnregisterSheet(cssFileURI, nsIStyleSheetService::USER_SHEET);
 
   if (inLoad)
     ssService->LoadAndRegisterSheet(cssFileURI, nsIStyleSheetService::USER_SHEET);
 }
 
 #pragma mark -
 
+- (NSURL*)getFilePref:(const char*)prefName withSuccess:(BOOL*)outSuccess
+{
+  NSURL* prefValue = [NSURL URLWithString:@""];
+  if (mPrefs) {
+    nsCOMPtr filePref;
+    mPrefs->GetComplexValue(prefName, NS_GET_IID(nsILocalFile), getter_AddRefs(filePref));
+    if (filePref) {
+      nsAutoString path;
+      filePref->GetPath(path);
+      prefValue = [NSURL fileURLWithPath:[NSString stringWith_nsAString:path]];
+    }
+  }
+  return prefValue;
+}
+
 - (NSString*)getStringPref:(const char*)prefName withSuccess:(BOOL*)outSuccess
 {
   NSString* prefValue = @"";
 
   char* buf = nsnull;
   nsresult rv = NS_ERROR_FAILURE;
   if (mPrefs)
     rv = mPrefs->GetCharPref(prefName, &buf);
@@ -1289,16 +1329,25 @@
     rv = mPrefs->GetIntPref(prefName, &intPref);
 
   if (outSuccess)
     *outSuccess = NS_SUCCEEDED(rv);
 
   return intPref;
 }
 
+- (void)setPref:(const char*)prefName toFile:(NSURL*)value
+{
+  nsCOMPtr filePref(do_CreateInstance("@mozilla.org/file/local;1"));
+  if (mPrefs && filePref) {
+    filePref->InitWithPath(NS_ConvertUTF8toUTF16([[value path] UTF8String]));
+    (void)mPrefs->SetComplexValue(prefName, NS_GET_IID(nsILocalFile), filePref);
+  }
+}
+
 - (void)setPref:(const char*)prefName toString:(NSString*)value
 {
   if (mPrefs)
     (void)mPrefs->SetCharPref(prefName, [value UTF8String]);
 }
 
 - (void)setPref:(const char*)prefName toInt:(int)value
 {
@@ -1358,21 +1407,42 @@
   return mProfilePath;
 }
 
 - (NSString*)cacheParentDirPath
 {
   return [self pathForSpecialDirectory:NS_APP_CACHE_PARENT_DIR];
 }
 
+- (NSString*)downloadDirectoryPref
+{
+  NSString* prefValue = nil;
+  BOOL gotPref;
+  int downloadFolder = [self getIntPref:kGeckoPrefDownloadsFolderList withSuccess:&gotPref];
+
+  if (gotPref && (downloadFolder == kDownloadsFolderDesktop))
+    prefValue = [[PreferenceManager sharedInstance] desktopDirectoryPath];
+  else if (downloadFolder == kDownloadsFolderDownloads)
+    prefValue = [[PreferenceManager sharedInstance] downloadDirectoryPath];
+  else if (downloadFolder == kDownloadsFolderCustom)
+    prefValue = [[self getFilePref:kGeckoPrefDownloadsDir withSuccess:NULL] path];
+
+  return prefValue;
+}
+
 - (NSString*)downloadDirectoryPath
 {
   return [self pathForSpecialDirectory:NS_MAC_DEFAULT_DOWNLOAD_DIR];
 }
 
+- (NSString*)desktopDirectoryPath
+{
+  return [self pathForSpecialDirectory:NS_MAC_DESKTOP_DIR];
+}
+
 - (NSString*)pathForSpecialDirectory:(const char*)specialDirectory
 {
   nsCOMPtr directoryFile;
   nsresult rv = NS_GetSpecialDirectory(specialDirectory,
                                        getter_AddRefs(directoryFile));
   if (NS_FAILED(rv))
     return nil;
   nsCAutoString nativePath;
@@ -1508,16 +1578,57 @@
   // Now remove all the old prefs so we don't leave cruft in the profile.
   [self clearPref:kOldGeckoPrefDownloadCleanupPolicy];
   [self clearPref:kOldGeckoPrefFocusDownloadManagerOnDownload];
   [self clearPref:kOldGeckoPrefLeaveDownloadManagerOpen];
   [self clearPref:kOldGeckoPrefDownloadToDefaultLocation];
   [self clearPref:kOldGeckoPrefAutoOpenDownloads];
 }
 
+-(NSString*)internetConfigDownloadDirectoryPref
+{
+  NSURL* oldDownloadDir = nil;
+  OSErr err;
+  ICInstance icInstance;
+
+  err = ::ICStart(&icInstance, 'XPCM');
+  if (err == noErr) {
+    // ICGetPref() crashes when getting the download directory if the download
+    // directory has never been specified (e.g. a new user account), bug 265903.
+    // To work around this we enumerate through the IC prefs to see if the
+    // download directory has been specified before trying to obtain it.
+    long numPrefs = 0;
+    err = ::ICCountPref(icInstance, &numPrefs);
+    if (err == noErr) {
+      NSString* ICDownloadFolderKey = [NSString stringWithString:@"DownloadFolder"];
+      for ( long i = 0; i < numPrefs; ++i ) {
+        Str255 key;
+        err = ::ICGetIndPref(icInstance, i, key);
+        NSString* keyString = [(NSString*)CFStringCreateWithPascalString(NULL, key, kCFStringEncodingMacRoman) autorelease];
+        if (err == noErr && [keyString isEqualToString:ICDownloadFolderKey]) {
+          ICAttr attrs;
+          ICFileSpec icFileSpec;
+          long size = kICFileSpecHeaderSize;
+          err = ::ICGetPref(icInstance, kICDownloadFolder, &attrs, &icFileSpec, &size);
+          if (err == noErr || (err == icTruncatedErr && size >= kICFileSpecHeaderSize)) {
+            FSRef fsRef;
+            err = ::FSpMakeFSRef(&icFileSpec.fss, &fsRef);
+            if (err == noErr)
+              oldDownloadDir = (NSURL*)CFURLCreateFromFSRef(NULL, &fsRef);
+          }
+          break;
+        }
+      }
+    }
+    ::ICStop(icInstance);
+  }
+
+  return [oldDownloadDir path];
+}
+
 - (NSString*)fontNameForGeckoFontName:(NSString*)geckoFontName
 {
   nsresult rv;
   nsCOMPtr fontEnum = do_GetService("@mozilla.org/gfx/fontenumerator;1", &rv);
   if (NS_FAILED(rv))
     return nil;
 
   PRUnichar* geckoName = [geckoFontName createNewUnicodeBuffer];
Index: PreferencePanes/Downloads/Downloads.mm
===================================================================
RCS file: /cvsroot/mozilla/camino/PreferencePanes/Downloads/Downloads.mm,v
retrieving revision 1.21
diff -u -8 -r1.21 Downloads.mm
--- PreferencePanes/Downloads/Downloads.mm	2 Jun 2009 03:58:10 -0000	1.21
+++ PreferencePanes/Downloads/Downloads.mm	23 Feb 2010 03:07:48 -0000
@@ -38,45 +38,16 @@
  *
  * ***** END LICENSE BLOCK ***** */
 
 #import "Downloads.h"
 
 #import "GeckoPrefConstants.h"
 #import "PreferenceManager.h"
 
-// handy stack-based class to start and stop an Internet Config session
-class StInternetConfigSession
-{
-public:
-
-  StInternetConfigSession(OSType inSignature)
-  : mICInstance(NULL)
-  , mStartedOK(false)
-  {
-    mStartedOK = (::ICStart(&mICInstance, inSignature) == noErr);
-  }
-
-  ~StInternetConfigSession()
-  {
-    if (mStartedOK)
-      ::ICStop(mICInstance);
-  }
-
-  bool        Available() const { return mStartedOK;  }
-  ICInstance  Instance()  const { return mICInstance; }
-
-private:
-
-  ICInstance    mICInstance;
-  bool          mStartedOK;
-};
-
-
-
 @interface OrgMozillaCaminoPreferenceDownloads(Private)
 
 - (void)setupDownloadMenuWithPath:(NSString*)inDLPath;
 - (void)setDownloadFolder:(NSString*)inNewFolder;
 
 @end
 
 @implementation OrgMozillaCaminoPreferenceDownloads
@@ -95,72 +66,36 @@
 - (void)willSelect
 {
   // Our behaviour here should match what the browser does when the prefs don't exist.
   [mAutoCloseDLManager setState:([self getBooleanPref:kGeckoPrefCloseDownloadManagerWhenDone withSuccess:NULL]) ? NSOnState : NSOffState];
   [mEnableHelperApps setState:([self getBooleanPref:kGeckoPrefAutoOpenDownloads withSuccess:NULL]) ? NSOnState : NSOffState];
   [mDownloadRemovalPolicy selectItem:[[mDownloadRemovalPolicy menu] itemWithTag:[self getIntPref:kGeckoPrefDownloadCleanupPolicy
                                                                                      withSuccess:NULL]]];
 
-  NSString* downloadFolderDesc = [[PreferenceManager sharedInstance] downloadDirectoryPath];
+  NSString* downloadFolderDesc = [[PreferenceManager sharedInstance] downloadDirectoryPref];
+
   if ([downloadFolderDesc length] == 0)
     downloadFolderDesc = [self localizedStringForKey:@"MissingDlFolder"];
 
   [self setupDownloadMenuWithPath:downloadFolderDesc];
 }
 
 - (IBAction)checkboxClicked:(id)sender
 {
   if (sender == mAutoCloseDLManager)
     [self setPref:kGeckoPrefCloseDownloadManagerWhenDone toBoolean:[sender state]];
 
   if (sender == mEnableHelperApps)
     [self setPref:kGeckoPrefAutoOpenDownloads toBoolean:[sender state]];
 }
 
-// Sets the IC download pref to the given path. We write to Internet Config
-// because Gecko reads from IC when getting NS_MAC_DEFAULT_DOWNLOAD_DIR.
 - (void)setDownloadFolder:(NSString*)inNewFolder
 {
-  if (!inNewFolder)
-    return;
-
-  // It would be nice to use PreferenceManager, but I don't want to drag
-  // all that code into the plugin.
-  StInternetConfigSession icSession('MOZC');
-  if (!icSession.Available())
-    return;
-
-  // Make a ICFileSpec out of our path and shove it into IC. This requires
-  // creating an FSSpec and an alias.
-  FSRef fsRef;
-  Boolean isDir;
-  OSStatus error = ::FSPathMakeRef((UInt8*)[inNewFolder fileSystemRepresentation], &fsRef, &isDir);
-  if (error != noErr)
-    return;
-
-  FSSpec fsSpec;
-  error = ::FSGetCatalogInfo(&fsRef, kFSCatInfoNone, nil, nil, &fsSpec, nil);
-  if (error != noErr)
-    return;
-
-  AliasHandle alias = nil;
-  error = ::FSNewAlias(nil, &fsRef, &alias);
-
-  // Copy the data out of our variables into the ICFileSpec and hand it to IC.
-  if (error == noErr && alias) {
-    long headerSize = offsetof(ICFileSpec, alias);
-    long aliasSize = ::GetHandleSize((Handle)alias);
-    ICFileSpec* realbuffer = (ICFileSpec*) calloc(headerSize + aliasSize, 1);
-    realbuffer->fss = fsSpec;
-    memcpy(&realbuffer->alias, *alias, aliasSize);
-    ::ICSetPref(icSession.Instance(), kICDownloadFolder, kICAttrNoChange, (const void*)realbuffer, headerSize + aliasSize);
-    free(realbuffer);
-    ::DisposeHandle((Handle)alias);
-  }
+  [[PreferenceManager sharedInstance] setDownloadDirectoryPrefToPath:inNewFolder];
 }
 
 // Given a full path to the d/l dir, display the leaf name and the Finder icon associated
 // with that folder in the first item of the download folder popup.
 //
 - (void)setupDownloadMenuWithPath:(NSString*)inDLPath
 {
   NSMenuItem* placeholder = [mDownloadFolder itemAtIndex:0];
@@ -207,25 +142,25 @@
 {
   // The three options in the popup contains tags 0-2; set the pref according to the
   // selected menu item's tag.
   int selectedTagValue = [mDownloadRemovalPolicy selectedTag];
   [self setPref:kGeckoPrefDownloadCleanupPolicy toInt:selectedTagValue];
 }
 
 // This is called when the user closes the open panel sheet for selecting a new d/l folder.
-// If they clicked ok, change the IC pref and re-display the new choice in the
+// If they clicked ok, change the pref and re-display the new choice in the
 // popup menu.
 - (void)openPanelDidEnd:(NSOpenPanel*)sheet returnCode:(int)returnCode contextInfo:(void*)contextInfo
 {
   if (returnCode == NSOKButton) {
     // stuff path into pref
     NSString* newPath = [[sheet filenames] objectAtIndex:0];
     [self setDownloadFolder:newPath];
-    
+
     // update the menu
     [self setupDownloadMenuWithPath:newPath];
   }
   else {
     [mDownloadFolder selectItemAtIndex:0];
   }
 }
 
Index: src/history/HistoryDataSource.h
===================================================================
RCS file: /cvsroot/mozilla/camino/src/history/HistoryDataSource.h,v
retrieving revision 1.15
diff -u -8 -r1.15 HistoryDataSource.h
--- src/history/HistoryDataSource.h	23 May 2005 03:36:08 -0000	1.15
+++ src/history/HistoryDataSource.h	23 Feb 2010 03:07:48 -0000
@@ -39,45 +39,45 @@
  * ***** END LICENSE BLOCK ***** */
 
 #import 
 
 @class BrowserWindowController;
 @class HistoryItem;
 @class HistorySiteItem;
 
-class nsIBrowserHistory;
-class nsHistoryObserver;
+class nsNavHistoryObserver;
+class nsINavHistoryService;
 
 extern NSString* const kHistoryViewByDate;      // grouped by last visit date
 extern NSString* const kHistoryViewBySite;      // grouped by site
 extern NSString* const kHistoryViewFlat;        // flat
 
 // notification object is the data source.
 extern NSString* const kNotificationNameHistoryDataSourceChanged;
 // if not nil, this userInfo object is the changed item
 extern NSString* const kNotificationHistoryDataSourceChangedUserInfoChangedItem;
 // if true, this indicates that just the item changed, not its children (it's an NSNumber with bool)
 extern NSString* const kNotificationHistoryDataSourceChangedUserInfoChangedItemOnly;
 
 @class HistoryTreeBuilder;
 
 @interface HistoryDataSource : NSObject
 {
-  nsIBrowserHistory*      mGlobalHistory;     // owned (would be an nsCOMPtr)
-  nsHistoryObserver*      mHistoryObserver;   // owned
+  nsINavHistoryService*   mNavHistoryService;         // owned (would be an nsCOMPtr)
+  nsNavHistoryObserver*   mNavHistoryObserver;        // owned
   
   BOOL                    mShowSiteIcons;
   NSString*               mCurrentViewIdentifier;
   
   NSString*               mSortColumn;
   BOOL                    mSortDescending;
 
   NSMutableArray*         mHistoryItems;              // this array owns all the history items
-  NSMutableDictionary*    mHistoryItemsDictionary;    // history items indexed by id
+  NSMutableDictionary*    mHistoryItemsDictionary;    // history items indexed by url
 
   NSMutableArray*         mSearchResultsArray;
 
   // the tree builder encapsulates the logic to build and update different history views
   // (e.g. by date, by site etc), and supply the root object.  
   HistoryTreeBuilder*     mTreeBuilder;
  
   NSString*               mSearchString;
Index: src/history/HistoryDataSource.mm
===================================================================
RCS file: /cvsroot/mozilla/camino/src/history/HistoryDataSource.mm,v
retrieving revision 1.51
diff -u -8 -r1.51 HistoryDataSource.mm
--- src/history/HistoryDataSource.mm	15 Jul 2009 18:41:45 -0000	1.51
+++ src/history/HistoryDataSource.mm	23 Feb 2010 03:07:50 -0000
@@ -35,34 +35,33 @@
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
 #import "NSString+Utils.h"
 #import "NSString+Gecko.h"
 #import "NSPasteboard+Utils.h"
+#import "NSDate+Utils.h"
 
 #import "BrowserWindowController.h"
 #import "HistoryDataSource.h"
 #import "CHBrowserView.h"
 #import "ExtendedOutlineView.h"
 #import "PreferenceManager.h"
 #import "HistoryItem.h"
 #import "SiteIconProvider.h"
 
 #import "BookmarkViewController.h"    // only for +greyStringWithItemCount
 
 #import "nsCOMPtr.h"
 
 #include "nsIBrowserHistory.h"
 #include "nsIServiceManager.h"
-#include "nsIHistoryItems.h"
-#include "nsIHistoryObserver.h"
-#include "nsISimpleEnumerator.h"
+#include "nsINavHistoryService.h"
 
 #include "nsNetUtil.h"
 #include "nsString.h"
 
 #include "nsComponentManagerUtils.h"
 
 NSString* const kHistoryViewByDate    = @"date";
 NSString* const kHistoryViewBySite    = @"site";
@@ -154,16 +153,17 @@
 
 - (void)notifyChanged:(HistoryItem*)changeRoot itemOnly:(BOOL)itemOnly;
 - (SEL)selectorForSortColumn;
 
 - (void)rebuildSearchResults;
 - (void)sortSearchResults;
 
 - (NSArray*)historyItems;
+- (void)removeAllObjects;
 - (HistorySiteItem*)itemWithIdentifier:(NSString*)identifier;
 
 - (void)siteIconLoaded:(NSNotification*)inNotification;
 - (void)checkForNewDay;
 
 @end
 
 #pragma mark -
@@ -521,164 +521,224 @@
 
   [self resortFromItem:mRootItem];
 }
 
 @end
 
 #pragma mark -
 
-class nsHistoryObserver : public nsIHistoryObserver
+class nsNavHistoryObserver : public nsINavHistoryObserver
 {
-public:
 
-  nsHistoryObserver(HistoryDataSource* inDataSource)
+public:
+  nsNavHistoryObserver(HistoryDataSource* inDataSource)
   : mDataSource(inDataSource)
   {
   }
   
-  virtual ~nsHistoryObserver()
+  virtual ~nsNavHistoryObserver()
   {
   }
 
 protected:
 
-  HistorySiteItem* HistoryItemFromItem(nsIHistoryItem* inItem)
+  HistorySiteItem* HistoryItemFromURI(nsIURI* inURI)
   {
-    nsCString identifier;
-    if (NS_SUCCEEDED(inItem->GetID(identifier)))
-      return [mDataSource itemWithIdentifier:[NSString stringWith_nsACString:identifier]];
-  
+    nsCAutoString url;
+    if (inURI && NS_SUCCEEDED(inURI->GetSpec(url))) {
+      NSString* identifierString = [NSString stringWith_nsACString:url];
+      return [mDataSource itemWithIdentifier:identifierString];
+    }
+
     return nil;
   }
-    
+
 public:
 
   NS_DECL_ISUPPORTS
 
-  NS_IMETHOD HistoryLoaded()
+  //
+  // OnVisit
+  //
+  // This is called each time a URI is visited. For the first visit, we need
+  // to create a new HistorySiteItem so we can add it to the data source.
+  // For all subsequent visits, we just need to find that item and update it
+  // with a new last visit date.
+  //
+  NS_IMETHOD OnVisit(nsIURI *aURI, PRInt64 aVisitID, PRTime aTime, PRInt64 aSessionID,
+                     PRInt64 aReferringID, PRUint32 aTransitionType, PRUint32 *aAdded)
   {
-    // we build the Obj-C data source lazily, so do nothing here
-    return NS_OK;
-  }
-
-  NS_IMETHOD HistoryClosing()
-  {
-    [mDataSource cleanupHistory];
-    return NS_OK;
-  }
-
-  NS_IMETHOD ItemLoaded(nsIHistoryItem* inHistoryItem, PRBool inFirstVisit)
-  {
-    // Ignore hidden items
-    PRBool hidden;
-    if (!inHistoryItem || NS_FAILED(inHistoryItem->GetHidden(&hidden)) || hidden)
+    // Ignore embedded objects, such as images.
+    if (aTransitionType == nsINavHistoryService::TRANSITION_EMBED)
       return NS_OK;
 
     @try { // make sure we don't throw out into gecko
+      HistorySiteItem* item = HistoryItemFromURI(aURI);
 
-      // The logic here is slightly odd, because even when inFirstVisit is false,
-      // we can still get an item that we haven't seen before. This can happen
-      // when loading a URL that was typed: it was added first as a typed url,
-      // then is 'converted' when the page loads, at which point we get notified.
-      HistorySiteItem* item = nil;
-      if (!inFirstVisit)
-        item = HistoryItemFromItem(inHistoryItem);
-        
-      if (item)
-      {
-        if ([item updateWith_nsIHistoryItem:inHistoryItem])
+      if (item) {
+        NSDate* newDate = [NSDate dateWithPRTime:aTime];
+        if (![[item lastVisit] isEqual:newDate]) {
+          [item setLastVisitDate:newDate];
           [mDataSource itemChanged:item];
-      }      
-      else
-      {
-        item = [[HistorySiteItem alloc] initWithDataSource:mDataSource historyItem:inHistoryItem];
+        }
+      }
+      else {
+        nsCOMPtr histSvc = do_GetService("@mozilla.org/browser/nav-history-service;1");
+        if (!histSvc)
+          return NS_OK;
+
+        nsCOMPtr query;
+        histSvc->GetNewQuery(getter_AddRefs(query));
+        if (!query)
+          return NS_OK;
+
+        PRBool queryParametersSet = NS_SUCCEEDED(query->SetUri(aURI));
+        queryParametersSet &= NS_SUCCEEDED(query->SetMinVisits(1));
+        queryParametersSet &= NS_SUCCEEDED(query->SetMaxVisits(1));
+        if (!queryParametersSet)
+          return NS_OK;
+
+        nsCOMPtr options;
+        histSvc->GetNewQueryOptions(getter_AddRefs(options));
+        if (!options)
+          return NS_OK;
+
+        nsCOMPtr result;
+        histSvc->ExecuteQuery(query, options, getter_AddRefs(result));
+        if (!result)
+          return NS_OK;
+
+        nsCOMPtr rootNode;
+        result->GetRoot(getter_AddRefs(rootNode));
+        if (!rootNode)
+          return NS_OK;
+
+        rootNode->SetContainerOpen(PR_TRUE);
+        PRUint32 childCount = 0;
+        rootNode->GetChildCount(&childCount);
+        if (childCount != 1)
+          return NS_OK;
+
+        nsCOMPtr resultNode;
+        rootNode->GetChild(0, getter_AddRefs(resultNode));
+        if(!resultNode)
+          return NS_OK;
+
+        item = [[HistorySiteItem alloc] initWithDataSource:mDataSource resultNode:resultNode];
+
         [mDataSource itemAdded:item];
         [item release];
       }
     }
     @catch (id exception) {
       NSLog(@"Exception caught in ItemLoaded: %@", exception);
     }
-    
+
+    return NS_OK;
+  }
+
+  NS_IMETHOD OnBeginUpdateBatch()
+  {
+    [mDataSource startBatching];
+    return NS_OK;
+  }
+
+  NS_IMETHOD OnEndUpdateBatch()
+  {
+    [mDataSource endBatching];
     return NS_OK;
   }
 
-  NS_IMETHOD ItemRemoved(nsIHistoryItem* inHistoryItem)
+  NS_IMETHOD OnTitleChanged(nsIURI *aURI, const nsAString & aPageTitle)
   {
+    HistorySiteItem* item = HistoryItemFromURI(aURI);
+    if (!item)
+      return NS_OK;
+
     @try { // make sure we don't throw out into gecko
-      HistorySiteItem* item = HistoryItemFromItem(inHistoryItem);
-      if (item)
-        [mDataSource itemRemoved:item];
+      NSString* newTitle = [NSString stringWith_nsAString:aPageTitle];
+      BOOL titleChanged = ![newTitle isEqualToString:[item title]];
+      if (titleChanged) {
+        [item setTitle:newTitle];
+        [mDataSource itemChanged:item];
+      }
     }
     @catch (id exception) {
-      NSLog(@"Exception caught in ItemRemoved: %@", exception);
+      NSLog(@"Exception caught in ItemTitleChanged: %@", exception);
     }
     return NS_OK;
   }
 
-  NS_IMETHOD ItemTitleChanged(nsIHistoryItem* inHistoryItem)
+  NS_IMETHOD OnBeforeDeleteURI(nsIURI *aURI)
   {
-    HistorySiteItem* item = HistoryItemFromItem(inHistoryItem);
-    if (!item) return NS_OK;
+    return NS_OK;
+  }
 
+  NS_IMETHOD OnDeleteURI(nsIURI *aURI)
+  {
     @try { // make sure we don't throw out into gecko
-      if ([item updateWith_nsIHistoryItem:inHistoryItem])
-        [mDataSource itemChanged:item];
+      HistorySiteItem* item = HistoryItemFromURI(aURI);
+      if (item)
+        [mDataSource itemRemoved:item];
     }
     @catch (id exception) {
-      NSLog(@"Exception caught in ItemTitleChanged: %@", exception);
+      NSLog(@"Exception caught in ItemRemoved: %@", exception);
     }
     return NS_OK;
   }
 
-  NS_IMETHOD StartBatchChanges()
+  NS_IMETHOD OnClearHistory()
+  { 
+    // Rather than calling |itemRemoved| for every item, just remove
+    // all the items at once and rebuild.
+    [mDataSource removeAllObjects];
+    [mDataSource rebuildHistory];
+    return NS_OK;
+  }
+
+  NS_IMETHOD OnPageChanged(nsIURI *aURI, PRUint32 aWhat, const nsAString & aValue)
   {
-    [mDataSource startBatching];
     return NS_OK;
   }
-  
-  NS_IMETHOD EndBatchChanges()
+
+  NS_IMETHOD OnPageExpired(nsIURI *aURI, PRTime aVisitTime, PRBool aWholeEntry)
   {
-    [mDataSource endBatching];
     return NS_OK;
   }
 
 protected:
 
-  HistoryDataSource*    mDataSource;
+  HistoryDataSource* mDataSource;
 };
 
-NS_IMPL_ISUPPORTS1(nsHistoryObserver, nsIHistoryObserver);
+NS_IMPL_ISUPPORTS1(nsNavHistoryObserver, nsINavHistoryObserver);
 
 #pragma mark -
 
 @implementation HistoryDataSource
 
 - (id)init
 {
   if ((self = [super init]))
   {
-    nsCOMPtr globalHist = do_GetService("@mozilla.org/browser/global-history;2");
-    mGlobalHistory = globalHist;
-    if (!mGlobalHistory)
+    nsCOMPtr histSvc = do_GetService("@mozilla.org/browser/nav-history-service;1");
+    mNavHistoryService = histSvc;
+    if (!mNavHistoryService)
     {
       NSLog(@"Failed to initialize HistoryDataSource (couldn't get global history)");
       [self autorelease];
       return nil;
     }
-    NS_IF_ADDREF(mGlobalHistory);
-    
-    mHistoryObserver = new nsHistoryObserver(self);
-    NS_ADDREF(mHistoryObserver);
+    NS_IF_ADDREF(mNavHistoryService);
+
+    mNavHistoryObserver = new nsNavHistoryObserver(self);
+    NS_ADDREF(mNavHistoryObserver);
+    mNavHistoryService->AddObserver(mNavHistoryObserver, PR_FALSE);
     
-    nsCOMPtr historyItems = do_QueryInterface(mGlobalHistory);
-    if (historyItems)
-      historyItems->AddObserver(mHistoryObserver);
-      
     mCurrentViewIdentifier = [kHistoryViewByDate retain];
     
     mSortColumn = [[NSString stringWithString:@"last_visit"] retain];    // save last settings in prefs?
     mSortDescending = YES;
 
     mSearchString = nil;
     
     mLastDayOfCommonEra = [[NSCalendarDate calendarDate] dayOfCommonEra];
@@ -718,25 +778,24 @@
 
   [super dealloc];
 }
 
 - (void)cleanupHistory
 {
   [[NSNotificationCenter defaultCenter] removeObserver:self];
 
-  if (mHistoryObserver)
+  if (mNavHistoryObserver)
   {
-    nsCOMPtr historyItems = do_QueryInterface(mGlobalHistory);
-    if (historyItems)
-      historyItems->RemoveObserver(mHistoryObserver);
-    NS_RELEASE(mHistoryObserver);
+    if (mNavHistoryService)
+      mNavHistoryService->RemoveObserver(mNavHistoryObserver);
+    NS_RELEASE(mNavHistoryObserver);
   }
 
-  NS_IF_RELEASE(mGlobalHistory);
+  NS_IF_RELEASE(mNavHistoryService);
   
   [mHistoryItems release];
   mHistoryItems = nil;
 
   [mHistoryItemsDictionary release];
   mHistoryItemsDictionary = nil;
   
   [mSearchResultsArray release];
@@ -807,56 +866,59 @@
 
   [self notifyChanged:oldParent itemOnly:NO];
   if (oldParent != newParent)
     [self notifyChanged:newParent itemOnly:NO];
 }
 
 - (void)loadLazily
 {
-  nsCOMPtr historyItems = do_QueryInterface(mGlobalHistory);
-  if (!historyItems) return;
+  nsCOMPtr query;
+  mNavHistoryService->GetNewQuery(getter_AddRefs(query));
+  if (!query)
+    return;
 
-  PRUint32 maxItems;
-  if (NS_FAILED(historyItems->GetMaxItemCount(&maxItems)))
-    maxItems = 100;
+  nsCOMPtr options;
+  mNavHistoryService->GetNewQueryOptions(getter_AddRefs(options));
+  if (!options)
+    return;
+
+  nsCOMPtr result;
+  mNavHistoryService->ExecuteQuery(query, options, getter_AddRefs(result));
+  if (!result)
+    return;
+
+  nsCOMPtr rootNode;
+  result->GetRoot(getter_AddRefs(rootNode));
+  if (!rootNode)
+    return;
+
+  rootNode->SetContainerOpen(PR_TRUE);
+  PRUint32 childCount = 0;
+  rootNode->GetChildCount(&childCount);
 
   if (!mHistoryItems)
-    mHistoryItems = [[NSMutableArray alloc] initWithCapacity:maxItems];
+    mHistoryItems = [[NSMutableArray alloc] initWithCapacity:childCount];
   else
     [mHistoryItems removeAllObjects];
-  
+
   if (!mHistoryItemsDictionary)
-    mHistoryItemsDictionary = [[NSMutableDictionary alloc] initWithCapacity:maxItems];
+    mHistoryItemsDictionary = [[NSMutableDictionary alloc] initWithCapacity:childCount];
   else
     [mHistoryItemsDictionary removeAllObjects];
-    
-  nsCOMPtr historyEnumerator;
-  historyItems->GetItemEnumerator(getter_AddRefs(historyEnumerator));
-  if (!historyEnumerator) return;
 
-  PRBool hasMore;
-  while (PR_TRUE)
-  {
-    historyEnumerator->HasMoreElements(&hasMore);
-    if (!hasMore) break;
-    
-    // addref's each entry as it enters 'array'
-    nsCOMPtr thisEntry;
-    historyEnumerator->GetNext(getter_AddRefs(thisEntry));
-
-    nsCOMPtr thisItem = do_QueryInterface(thisEntry);
-    PRBool hidden;
-    if (thisItem && NS_SUCCEEDED(thisItem->GetHidden(&hidden)) && !hidden)
-    {
-      HistorySiteItem* item = [[HistorySiteItem alloc] initWithDataSource:self historyItem:thisItem];
-      [mHistoryItems addObject:item];
-      [mHistoryItemsDictionary setObject:item forKey:[item identifier]];
-      [item release];
-    }
+  for (uint i = 0; i < childCount; i++) {
+    nsCOMPtr child;
+    rootNode->GetChild(i, getter_AddRefs(child));
+    if (!child)
+      continue;
+    HistorySiteItem* item = [[HistorySiteItem alloc] initWithDataSource:self resultNode:child];
+    [mHistoryItems addObject:item];
+    [mHistoryItemsDictionary setObject:item forKey:[item identifier]];
+    [item release];
   }
 
   [self rebuildHistory];
 }
 
 - (HistoryItem*)rootItem
 {
   return [mTreeBuilder rootItem];
@@ -1057,21 +1119,29 @@
 }
 
 - (void)removeItem:(HistorySiteItem*)item
 {
   nsCOMPtr doomedURI;
   NS_NewURI(getter_AddRefs(doomedURI), [[item url] UTF8String]);
   if (doomedURI)
   {
-    mGlobalHistory->RemovePage(doomedURI);
+    nsCOMPtr hist(do_QueryInterface(mNavHistoryService));
+    if (hist)
+      hist->RemovePage(doomedURI);
     [self itemRemoved:item];
   }
 }
 
+- (void)removeAllObjects
+{
+  [mHistoryItems removeAllObjects];
+  [mHistoryItemsDictionary removeAllObjects];
+}
+
 #pragma mark -
 
 // Implementation of NSOutlineViewDataSource protocol
 
 - (id)outlineView:(NSOutlineView*)aOutlineView child:(int)aIndex ofItem:(id)item
 {
   if (mSearchResultsArray)
   {
Index: src/history/HistoryItem.h
===================================================================
RCS file: /cvsroot/mozilla/camino/src/history/HistoryItem.h,v
retrieving revision 1.8
diff -u -8 -r1.8 HistoryItem.h
--- src/history/HistoryItem.h	15 Jul 2009 18:41:46 -0000	1.8
+++ src/history/HistoryItem.h	23 Feb 2010 03:07:50 -0000
@@ -33,18 +33,18 @@
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
 #import 
 
-class nsIHistoryItem;
 @class HistoryDataSource;
+class nsINavHistoryResultNode;
 
 // HistoryItem is the base class for every object in the history outliner
 
 @interface HistoryItem : NSObject
 {
   HistoryItem*        mParentItem;    // our parent item (not retained)
   HistoryDataSource*  mDataSource;    // the data source that owns us (not retained)
 }
@@ -137,17 +137,17 @@
   NSDate*           mFirstVisitDate;
   NSDate*           mLastVisitDate;
   NSNumber*         mVisitCount;
   
   NSImage*          mSiteIcon;
   BOOL              mAttemptedIconLoad;
 }
 
-- (id)initWithDataSource:(HistoryDataSource*)inDataSource historyItem:(nsIHistoryItem*)inItem;
-// return YES if anything changed
-- (BOOL)updateWith_nsIHistoryItem:(nsIHistoryItem*)inItem;
+- (id)initWithDataSource:(HistoryDataSource*)inDataSource resultNode:(nsINavHistoryResultNode*)inNode;
 
 - (BOOL)matchesString:(NSString*)searchString inFieldWithTag:(int)tag;
 
 - (void)setSiteIcon:(NSImage*)inImage;
+- (void)setTitle:(NSString*)inTitle;
+- (void)setLastVisitDate:(NSDate*)inDate;
 
 @end
Index: src/history/HistoryItem.mm
===================================================================
RCS file: /cvsroot/mozilla/camino/src/history/HistoryItem.mm,v
retrieving revision 1.16
diff -u -8 -r1.16 HistoryItem.mm
--- src/history/HistoryItem.mm	29 Jul 2009 17:13:01 -0000	1.16
+++ src/history/HistoryItem.mm	23 Feb 2010 03:07:51 -0000
@@ -42,17 +42,21 @@
 #import "NSImage+Utils.h"
 
 #import "HistoryItem.h"
 #import "HistoryDataSource.h"
 
 #import "SiteIconProvider.h"
 
 #import "nsString.h"
-#import "nsIHistoryItems.h"
+
+#import "nsINavHistoryService.h"
+#import "nsIURI.h"
+#import "nsCOMPtr.h"
+#import "nsNetUtil.h"
 
 
 // search field tags, used in search field context menu item tags
 enum
 {
   eHistorySearchFieldAll = 1,
   eHistorySearchFieldTitle,
   eHistorySearchFieldURL
@@ -482,86 +486,52 @@
 }
 
 @end // HistoryDateCategoryItem
 
 #pragma mark -
 
 @implementation HistorySiteItem
 
-- (id)initWithDataSource:(HistoryDataSource*)inDataSource historyItem:(nsIHistoryItem*)inItem
+- (id)initWithDataSource:(HistoryDataSource*)inDataSource resultNode:(nsINavHistoryResultNode*)inNode
 {
   if ((self = [super initWithDataSource:inDataSource]))
   {
-    nsCString identifier;
-    if (NS_SUCCEEDED(inItem->GetID(identifier)))
-      mItemIdentifier = [[NSString alloc] initWith_nsACString:identifier];
-
-    nsCString url;
-    if (NS_SUCCEEDED(inItem->GetURL(url)))
+    nsCAutoString url;
+    if (NS_SUCCEEDED(inNode->GetUri(url))) {
       mURL = [[NSString alloc] initWith_nsACString:url];
+      // nsINavHistoryResultNodes don't have any other unique identifier.
+      mItemIdentifier = [[NSString alloc] initWith_nsACString:url];
+    }
 
-    nsString title;
-    if (NS_SUCCEEDED(inItem->GetTitle(title)))
-      mTitle = [[NSString alloc] initWith_nsAString:title];
-
-    nsCString hostname;
-    if (NS_SUCCEEDED(inItem->GetHostname(hostname)))
+    nsCAutoString title;
+    if (NS_SUCCEEDED(inNode->GetTitle(title)))
+      mTitle = [[NSString alloc] initWith_nsACString:title];
+
+    nsCOMPtr uri;
+    if (NS_SUCCEEDED(NS_NewURI(getter_AddRefs(uri), url))) {
+      nsCAutoString hostname;
+      uri->GetHost(hostname);
       mHostname = [[NSString alloc] initWith_nsACString:hostname];
+    }
 
     if ([mHostname length] == 0 && [mURL hasPrefix:@"file://"])
       mHostname = [[NSString alloc] initWithString:@"local_file"];
 
-    PRTime firstVisit;
-    if (NS_SUCCEEDED(inItem->GetFirstVisitDate(&firstVisit)))
-      mFirstVisitDate = [[NSDate dateWithPRTime:firstVisit] retain];
-
     PRTime lastVisit;
-    if (NS_SUCCEEDED(inItem->GetLastVisitDate(&lastVisit)))
+    if (NS_SUCCEEDED(inNode->GetTime(&lastVisit)))
       mLastVisitDate = [[NSDate dateWithPRTime:lastVisit] retain];
 
-    PRInt32 visitCount;
-    if (NS_SUCCEEDED(inItem->GetVisitCount(&visitCount)))
-      mVisitCount = [[NSNumber numberWithInt:visitCount] retain];
+    PRUint32 visitCount;
+    if (NS_SUCCEEDED(inNode->GetAccessCount(&visitCount)))
+      mVisitCount = [[NSNumber numberWithUnsignedInt:visitCount] retain];
   }
   return self;
 }
 
-- (BOOL)updateWith_nsIHistoryItem:(nsIHistoryItem*)inItem
-{
-  // only the title and last visit date can change
-  BOOL somethingChanged = NO;
-
-  nsString title;
-  if (NS_SUCCEEDED(inItem->GetTitle(title)))
-  {
-    NSString* newTitle = [NSString stringWith_nsAString:title];
-    if (!mTitle || ![mTitle isEqualToString:newTitle])
-    {
-      [mTitle release];
-      mTitle = [newTitle retain];
-      somethingChanged = YES;
-    }
-  }
-  
-  PRTime lastVisit;
-  if (NS_SUCCEEDED(inItem->GetLastVisitDate(&lastVisit)))
-  {
-    NSDate* newDate = [NSDate dateWithPRTime:lastVisit];
-    if (![mLastVisitDate isEqual:newDate])
-    {
-      [mLastVisitDate release];
-      mLastVisitDate = [newDate retain];
-      somethingChanged = YES;
-    }
-  }
-  
-  return somethingChanged;
-}
-
 - (void)dealloc
 {
   [mItemIdentifier release];
   [mURL release];
   [mTitle release];
   [mHostname release];
   [mFirstVisitDate release];
   [mLastVisitDate release];
@@ -576,18 +546,86 @@
   return mURL;
 }
 
 - (NSString*)title
 {
   return mTitle;
 }
 
+//
+// -firstVisit
+//
+// Returns the date of the first visit to this item. Finding this date involves
+// querying Places for the earliest visit to the item's URL. Doing this when
+// initializing the item is slower by an order of magnitude, presumably because
+// we are already accessing the database.
+//
 - (NSDate*)firstVisit
 {
+  if (!mFirstVisitDate) {
+    // First set up a sensible default in case we can't get the true date.
+    mFirstVisitDate = [[NSDate alloc] init];
+
+    nsCOMPtr histSvc = do_GetService("@mozilla.org/browser/nav-history-service;1");
+    if (!histSvc)
+      return mFirstVisitDate;
+
+    nsCOMPtr query;
+    histSvc->GetNewQuery(getter_AddRefs(query));
+    if (!query)
+      return mFirstVisitDate;
+
+    nsCOMPtr uri;
+    if (NS_FAILED(NS_NewURI(getter_AddRefs(uri), [mURL UTF8String])))
+      return mFirstVisitDate;
+
+    if (NS_FAILED(query->SetUri(uri)))
+      return mFirstVisitDate;
+
+    nsCOMPtr options;
+    histSvc->GetNewQueryOptions(getter_AddRefs(options));
+    if (!options)
+      return mFirstVisitDate;
+
+    if (NS_FAILED(options->SetResultType(nsINavHistoryQueryOptions::RESULTS_AS_VISIT)))
+      return mFirstVisitDate;
+
+    if (NS_FAILED(options->SetSortingMode(nsINavHistoryQueryOptions::SORT_BY_DATE_ASCENDING)))
+      return mFirstVisitDate;
+
+    // We only want one result: the oldest.
+    if (NS_FAILED(options->SetMaxResults(1)))
+      return mFirstVisitDate;
+
+    nsCOMPtr result;
+    histSvc->ExecuteQuery(query, options, getter_AddRefs(result));
+    if (!result)
+      return mFirstVisitDate;
+
+    nsCOMPtr rootNode;
+    result->GetRoot(getter_AddRefs(rootNode));
+    if (!rootNode)
+      return mFirstVisitDate;
+
+    rootNode->SetContainerOpen(PR_TRUE);
+    PRUint32 childCount = 0;
+    rootNode->GetChildCount(&childCount);
+
+    nsCOMPtr resultNode;
+    if (childCount)
+      rootNode->GetChild(0, getter_AddRefs(resultNode));
+
+    PRTime firstVisit;
+    if (resultNode && NS_SUCCEEDED(resultNode->GetTime(&firstVisit))) {
+      [mFirstVisitDate autorelease];
+      mFirstVisitDate = [[NSDate dateWithPRTime:firstVisit] retain];
+    }
+  }
+
   return mFirstVisitDate;
 }
 
 - (NSDate*)lastVisit
 {
   return mLastVisitDate;
 }
 
@@ -647,16 +685,29 @@
 }
 
 - (void)setSiteIcon:(NSImage*)inImage
 {
   [mSiteIcon autorelease];
   mSiteIcon = [inImage retain];
 }
 
+- (void)setTitle:(NSString*)inTitle
+{
+  [mTitle autorelease];
+  mTitle = [inTitle retain];
+}
+
+- (void)setLastVisitDate:(NSDate*)inDate
+{
+  [mLastVisitDate release];
+  mLastVisitDate = [inDate retain];
+}
+
+
 // ideally, we'd strip the protocol from the URL before comparing so that https:// doesn't
 // sort after http://
 - (NSComparisonResult)compareURL:(HistoryItem *)aItem sortDescending:(NSNumber*)inDescending
 {
   NSComparisonResult result;
   // sort categories before sites
   if ([aItem isKindOfClass:[HistoryCategoryItem class]])
     result = NSOrderedDescending;
Index: src/history/nsIHistoryDisplay.h
===================================================================
RCS file: src/history/nsIHistoryDisplay.h
diff -N src/history/nsIHistoryDisplay.h
--- src/history/nsIHistoryDisplay.h	11 Nov 2005 14:35:52 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,78 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is Mozilla Communicator client code.
- *
- * The Initial Developer of the Original Code is
- * Netscape Communications Corporation.
- * Portions created by the Initial Developer are Copyright (C) 1998
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *   Simon Fraser 
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either of the GNU General Public License Version 2 or later (the "GPL"),
- * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-
-
-#ifndef __gen_nsISupports_h__
-#include "nsISupports.h"
-#endif
-
-
-// 06A993AC-5BB0-11D9-85E7-000393D7254A
-#define NS_IHISTORYDISPLAY_IID_STR "06a993ac-5bb0-11d9-85e7-000393d7254a"
-
-#define NS_IHISTORYDISPLAY_IID \
-  {0x06a993ac, 0x5bb0, 0x11d9, \
-    { 0x85, 0xe7, 0x00, 0x03, 0x39, 0xd7, 0x25, 0x4a }}
-
-
-class NS_NO_VTABLE nsIHistoryDisplay : public nsISupports
-{
- public: 
-
-  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IHISTORYDISPLAY_IID)
-
-
-  /**
-     * GetItemCount
-     * Get the number of entries in global history
-     */
-  NS_IMETHOD GetItemCount(PRUint32 *outCount) = 0;
-
-  /**
-     * GetItemEnumerator
-     * Get an enumerator for all the items in global history
-     */
-  NS_IMETHOD GetItemEnumerator(nsISimpleEnumerator** outEnumerator) = 0;
-
-};
-
-NS_DEFINE_STATIC_IID_ACCESSOR(nsIHistoryDisplay, NS_IHISTORYDISPLAY_IID)
-
-#define NS_DECL_NSIHISTORYDISPLAY \
-  NS_IMETHOD GetItemCount(PRUint32 *outCount); \
-  NS_IMETHOD GetItemEnumerator(nsISimpleEnumerator** outEnumerator);
Index: src/history/nsIHistoryItems.h
===================================================================
RCS file: src/history/nsIHistoryItems.h
diff -N src/history/nsIHistoryItems.h
--- src/history/nsIHistoryItems.h	11 Nov 2005 14:35:52 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,163 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is Mozilla Communicator client code.
- *
- * The Initial Developer of the Original Code is
- * Netscape Communications Corporation.
- * Portions created by the Initial Developer are Copyright (C) 1998
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *   Simon Fraser 
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either of the GNU General Public License Version 2 or later (the "GPL"),
- * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-
-#ifndef nsihistoryitems_h__
-#define nsihistoryitems_h__
-
-
-#ifndef __gen_nsISupports_h__
-#include "nsISupports.h"
-#endif
-
-// 5D46D8CA-5BB2-11D9-A79E-000393D7254A
-#define NS_IHISTORYITEM_IID_STR "5d46d8ca-5bb2-11d9-a79e-000393d7254a"
-
-#define NS_IHISTORYITEM_IID \
-  {0x5d46d8ca, 0x5bb2, 0x11d9, \
-    { 0xa7, 0x9e, 0x00, 0x03, 0x39, 0xd7, 0x25, 0x4a }}
-
-// 06A993AC-5BB0-11D9-85E7-000393D7254A
-#define NS_IHISTORYITEMS_IID_STR "06a993ac-5bb0-11d9-85e7-000393d7254a"
-
-#define NS_IHISTORYITEMS_IID \
-  {0x06a993ac, 0x5bb0, 0x11d9, \
-    { 0x85, 0xe7, 0x00, 0x03, 0x39, 0xd7, 0x25, 0x4a }}
-
-
-// 
-// nsIHistoryItem is used to communicate details about history
-// items to clients.
-// 
-// Instances of nsIHistoryItem are _not_ persistent, so you cannot
-// rely on getting the same nsIHistoryItem back from the enumerator
-// a second time. Use the unique identifiers for this purpose.
-// 
-// (This saves us from having to maintain a collection of nsIHistoryItem
-// objects that do little more than reflect the db row objects, but we
-// should probably do this to remove the burdern from the client.)
-//
-
-class NS_NO_VTABLE nsIHistoryItem : public nsISupports
-{
-public:
-
-  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IHISTORYITEM_IID)
-
-  NS_IMETHOD GetURL(nsACString& outURL) = 0;
-  NS_IMETHOD GetReferrer(nsACString& outReferrer) = 0;
-
-  NS_IMETHOD GetLastVisitDate(PRTime* outLastVisit) = 0;
-  NS_IMETHOD GetFirstVisitDate(PRTime* outFirstVisit) = 0;
-  NS_IMETHOD GetVisitCount(PRInt32* outVisitCount) = 0;
-
-  NS_IMETHOD GetTitle(nsAString& outURL) = 0;
-  NS_IMETHOD GetHostname(nsACString& outURL) = 0;
-
-  NS_IMETHOD GetHidden(PRBool* outHidden) = 0;
-  NS_IMETHOD GetTyped(PRBool* outTyped) = 0;
-
-  // return a unique, persistent (within sessions) ID for this item
-  NS_IMETHOD GetID(nsACString& outIDString) = 0;
-};
-
-NS_DEFINE_STATIC_IID_ACCESSOR(nsIHistoryItem, NS_IHISTORYITEM_IID)
-
-#define NS_DECL_NSIHISTORYITEM \
-  NS_IMETHOD GetURL(nsACString& outURL); \
-  NS_IMETHOD GetReferrer(nsACString& outReferrer); \
-  NS_IMETHOD GetLastVisitDate(PRTime* outLastVisit); \
-  NS_IMETHOD GetFirstVisitDate(PRTime* outFirstVisit); \
-  NS_IMETHOD GetVisitCount(PRInt32* outVisitCount); \
-  NS_IMETHOD GetTitle(nsAString& outURL); \
-  NS_IMETHOD GetHostname(nsACString& outURL); \
-  NS_IMETHOD GetHidden(PRBool* outHidden); \
-  NS_IMETHOD GetTyped(PRBool* outTyped); \
-  NS_IMETHOD GetID(nsACString& outIDString);
-
-class nsISimpleEnumerator;
-class nsIHistoryObserver;
-
-class NS_NO_VTABLE nsIHistoryItems : public nsISupports
-{
-public:
-
-  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IHISTORYITEMS_IID)
-
-  /**
-     * GetMaxItemCount
-     * Get the max number of entries in global history (the real number
-     * may be less because of hidden rows).
-     */
-  NS_IMETHOD GetMaxItemCount(PRUint32 *outCount) = 0;
-
-  /**
-     * GetItemEnumerator
-     * Get an enumerator for all the items in global history. 
-     * Enumerator items are instances of nsIHistoryItem
-     */
-  NS_IMETHOD GetItemEnumerator(nsISimpleEnumerator** outEnumerator) = 0;
-  
-  /**
-     * Flush
-     * Save the history database
-     */
-  NS_IMETHOD Flush() = 0;
-
-  /**
-     * AddObserver
-     */
-  NS_IMETHOD AddObserver(nsIHistoryObserver* inObserver) = 0;
-
-  /**
-     * RemoveObserver
-     */
-  NS_IMETHOD RemoveObserver(nsIHistoryObserver* inObserver) = 0;
-
-};
-
-NS_DEFINE_STATIC_IID_ACCESSOR(nsIHistoryItems, NS_IHISTORYITEMS_IID)
-
-#define NS_DECL_NSIHISTORYITEMS \
-  NS_IMETHOD GetMaxItemCount(PRUint32 *outCount); \
-  NS_IMETHOD GetItemEnumerator(nsISimpleEnumerator** outEnumerator); \
-  NS_IMETHOD Flush(); \
-  NS_IMETHOD AddObserver(nsIHistoryObserver* inObserver); \
-  NS_IMETHOD RemoveObserver(nsIHistoryObserver* inObserver);
-
-
-#endif // nsihistoryitems_h__
Index: src/history/nsIHistoryObserver.h
===================================================================
RCS file: src/history/nsIHistoryObserver.h
diff -N src/history/nsIHistoryObserver.h
--- src/history/nsIHistoryObserver.h	11 Nov 2005 14:35:52 -0000	1.3
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,85 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is Mozilla Communicator client code.
- *
- * The Initial Developer of the Original Code is
- * Netscape Communications Corporation.
- * Portions created by the Initial Developer are Copyright (C) 1998
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *   Simon Fraser 
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either of the GNU General Public License Version 2 or later (the "GPL"),
- * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-
-#ifndef nsihistoryobserver_h__
-#define nsihistoryobserver_h__
-
-#ifndef __gen_nsISupports_h__
-#include "nsISupports.h"
-#endif
-
-#include "nsIHistoryItems.h"
-
-// BDF54C7D-83C6-406F-84D3-D5ABB9D978B2
-#define NS_IHISTORYOBSERVER_IID_STR "bdf54c7d-83c6-406f-84d3-d5abb9d978b2"
-
-#define NS_IHISTORYOBSERVER_IID \
-  {0xbdf54c7d, 0x83c6, 0x406f, \
-    { 0x84, 0xd3, 0xd5, 0xab, 0xb9, 0xd9, 0x78, 0xb2 }}
-
-class nsIHistoryObserver : public nsISupports
-{
-public:
-
-  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IHISTORYOBSERVER_IID)
-
-  NS_IMETHOD HistoryLoaded() = 0;
-  NS_IMETHOD HistoryClosing() = 0;
-
-  NS_IMETHOD ItemLoaded(nsIHistoryItem* inHistoryItem, PRBool inFirstVisit) = 0;
-
-  NS_IMETHOD ItemRemoved(nsIHistoryItem* inHistoryItem) = 0;
-
-  NS_IMETHOD ItemTitleChanged(nsIHistoryItem* inHistoryItem) = 0;
-
-  NS_IMETHOD  StartBatchChanges() = 0;
-  NS_IMETHOD  EndBatchChanges() = 0;
-  
-};
-
-NS_DEFINE_STATIC_IID_ACCESSOR(nsIHistoryObserver, NS_IHISTORYOBSERVER_IID)
-
-#define NS_DECL_NSIHISTORYOBSERVER \
-  NS_IMETHOD HistoryLoaded(); \
-  NS_IMETHOD ItemLoaded(nsIHistoryItem* inHistoryItem, PRBool inFirstVisit); \
-  NS_IMETHOD ItemRemoved(nsIHistoryItem* inHistoryItem); \
-  NS_IMETHOD ItemTitleChanged(nsIHistoryItem* inHistoryItem); \
-  NS_IMETHOD  StartBatchChanges(); \
-  NS_IMETHOD  EndBatchChanges();
-
-#endif // nsihistoryobserver_h__
Index: src/history/nsSimpleGlobalHistory.h
===================================================================
RCS file: src/history/nsSimpleGlobalHistory.h
diff -N src/history/nsSimpleGlobalHistory.h
--- src/history/nsSimpleGlobalHistory.h	29 Aug 2007 01:11:51 -0000	1.12
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,321 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is Mozilla Communicator client code.
- *
- * The Initial Developer of the Original Code is
- * Netscape Communications Corporation.
- * Portions created by the Initial Developer are Copyright (C) 1998
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *   Chris Waterson 
- *   Blake Ross 
- *   Simon Fraser 
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either of the GNU General Public License Version 2 or later (the "GPL"),
- * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-
-#ifndef nssimpleglobalhistory__h____
-#define nssimpleglobalhistory__h____
-
-#include "nsAString.h"
-#include "nsITimer.h"
-
-#include "nsWeakReference.h"
-#include "mdb.h"
-#include "nsIPrefBranch.h"
-#include "nsIBrowserHistory.h"
-#include "nsIGlobalHistory3.h"
-#include "nsIHistoryItems.h"
-#include "nsIHistoryObserver.h"
-
-#include "nsIObserver.h"
-#include "nsIAutoCompleteSession.h"
-
-#include "nsString.h"
-#include "nsVoidArray.h"
-#include "nsHashSets.h"
-#include "nsCOMArray.h"
-
-struct MatchHostData;
-struct SearchQueryData;
-struct AutocompleteExcludeData;
-
-typedef PRBool (*rowMatchCallback)(nsIMdbRow *aRow, void *closure);
-
-// 0049433E-5B6A-11D9-BE15-000393D7254A
-#define NS_SIMPLEGLOBALHISTORY_CID \
-    { 0x0049433E, 0x5B6A, 0x11D9, { 0xBE, 0x15, 0x00, 0x03, 0x93, 0xD7, 0x25, 0x4A } }
-
-
-class nsSimpleGlobalHistory;
-
-class nsHistoryItem : public nsIHistoryItem
-{
-public:
-
-                  nsHistoryItem();
-  virtual         ~nsHistoryItem();
-
-  NS_METHOD       InitWithRow(nsSimpleGlobalHistory* inHistory, nsIMdbEnv* inEnv, nsIMdbRow* inRow);
-  
-  // nsISupports methods 
-  NS_DECL_ISUPPORTS
-  NS_DECL_NSIHISTORYITEM
-
-protected:
-
-  nsSimpleGlobalHistory*    mHistory;   // not owned
-  
-  nsIMdbEnv*                mEnv;
-  nsCOMPtr       mRow;
-
-};
-
-
-#pragma mark -
-
-// this is an RDF-free version of nsGlobalHistory.
-class nsSimpleGlobalHistory : nsSupportsWeakReference,
-                        public nsIBrowserHistory,
-                        public nsIHistoryItems,
-                        public nsIObserver,
-                        public nsIAutoCompleteSession,
-                        public nsIGlobalHistory3
-{
-friend class HistoryAutoCompleteEnumerator;
-friend class nsHistoryItem;
-
-public:
-                    nsSimpleGlobalHistory();
-  virtual           ~nsSimpleGlobalHistory();
-
-  NS_METHOD         Init();
-
-  // nsISupports methods 
-  NS_DECL_ISUPPORTS
-
-  NS_DECL_NSIGLOBALHISTORY2
-  NS_DECL_NSIGLOBALHISTORY3
-  NS_DECL_NSIBROWSERHISTORY
-  NS_DECL_NSIHISTORYITEMS
-  NS_DECL_NSIOBSERVER
-  NS_DECL_NSIAUTOCOMPLETESESSION
-
-public:
-
-  // these must be public so that the callbacks can call them
-  PRBool MatchExpiration(nsIMdbRow *row, PRTime* expirationDate);
-  PRBool MatchHost(nsIMdbRow *row, MatchHostData *hostInfo);
-  PRBool RowMatches(nsIMdbRow* aRow, SearchQueryData *aQuery);
-  
-  nsresult CreateHistoryItemForRow(nsIMdbRow* inRow, nsIHistoryItem** outItem);
-
-protected:
-
-  //
-  // database stuff
-  //
-  enum eCommitType 
-  {
-    kLargeCommit = 0,
-    kSessionCommit = 1,
-    kCompressCommit = 2
-  };
-  
-  nsresult OpenDB();
-  nsresult OpenExistingFile(nsIMdbFactory *factory, const char *filePath);
-  nsresult OpenNewFile(nsIMdbFactory *factory, const char *filePath);
-  nsresult CreateTokens();
-  nsresult CloseDB();
-  nsresult CheckHostnameEntries();
-  nsresult Commit(eCommitType commitType);
-
-  //
-  // expiration/removal stuff
-  //
-  nsresult ExpireEntries(PRBool notify);
-  nsresult SetPendingExpireEntries();
-  nsresult RemoveMatchingRows(rowMatchCallback aMatchFunc, void *aClosure, PRBool notify);
-
-  // 
-  // autocomplete stuff
-  //
-  nsresult    AutoCompleteSearch(const nsACString& aSearchString,
-                              AutocompleteExcludeData* aExclude,
-                              nsIAutoCompleteResults* aPrevResults,
-                              nsIAutoCompleteResults* aResults);
-  void        AutoCompleteCutPrefix(nsACString& aURL, AutocompleteExcludeData* aExclude);
-  void        AutoCompleteGetExcludeInfo(const nsACString& aURL, AutocompleteExcludeData* aExclude);
-  void        AutoCompletePrefilter(const nsACString& aSearchString, nsACString &outFilteredString);
-  PRBool      AutoCompleteCompare(nsACString& aHistoryURL, 
-                             const nsACString& aUserURL,
-                             AutocompleteExcludeData* aExclude);
-  PR_STATIC_CALLBACK(int)   AutoCompleteSortComparison(nsIHistoryItem *v1, nsIHistoryItem *v2, void *unused);
-
-  //
-  // sync stuff to write the db to disk every so often
-  //
-  void          Sync();
-  nsresult      SetDirty();
-  
-  static void   FireSyncTimer(nsITimer *aTimer, void *aClosure);
-  static void   FireExpireTimer(nsITimer *aTimer, void *aClosure);
-
-  //
-  // AddPage-oriented stuff
-  //
-  nsresult AddExistingPageToDatabase(nsIMdbRow *row,
-                                     PRTime aDate,
-                                     const char *aReferrer,
-                                     PRTime *aOldDate,
-                                     PRInt32 *aOldCount);
-  nsresult AddNewPageToDatabase(const char *aURL,
-                                PRTime aDate,
-                                const char *aReferrer,
-                                nsIMdbRow **aResult);
-
-  nsresult RemovePageInternal(const char *aSpec);
-
-  //
-  // Row to history item
-  //
-
-  nsresult StartBatching();
-  nsresult EndBatching();
-  
-  // 
-  // observer utilities
-  // 
-  
-  nsresult NotifyObserversHistoryLoaded();
-  nsresult NotifyObserversHistoryClosing();
-  nsresult NotifyObserversItemLoaded(nsIMdbRow* inRow, PRBool inFirstVisit);
-  nsresult NotifyObserversItemRemoved(nsIMdbRow* inRow);
-  nsresult NotifyObserversItemTitleChanged(nsIMdbRow* inRow);
-  nsresult NotifyObserversBatchingStarted();
-  nsresult NotifyObserversBatchingFinished();
-  
-  //
-  // generic routines for setting/retrieving various datatypes
-  //
-  nsresult SetRowValue(nsIMdbRow *aRow, mdb_column aCol, const PRTime& aValue);
-  nsresult SetRowValue(nsIMdbRow *aRow, mdb_column aCol, const PRInt32 aValue);
-  nsresult SetRowValue(nsIMdbRow *aRow, mdb_column aCol, const char *aValue);
-  nsresult SetRowValue(nsIMdbRow *aRow, mdb_column aCol, const PRUnichar *aValue);
-
-  nsresult GetRowValue(nsIMdbRow *aRow, mdb_column aCol, nsAString& aResult);
-  nsresult GetRowValue(nsIMdbRow *aRow, mdb_column aCol, nsACString& aResult);
-  nsresult GetRowValue(nsIMdbRow *aRow, mdb_column aCol, PRTime* aResult);
-  nsresult GetRowValue(nsIMdbRow *aRow, mdb_column aCol, PRInt32* aResult);
-
-  nsresult RowHasCell(nsIMdbRow *aRow, mdb_column aCol, PRBool* aResult);
-
-  nsresult FindRow(mdb_column aCol, const char *aURL, nsIMdbRow **aResult);
-
-  //
-  // convenient getter for tokens
-  //
-  enum EColumn
-  {
-    eColumnURL,
-    eColumnReferrer,
-    eColumnLastVisitDate,
-    eColumnFirstVisitDate,
-    eColumnVisitCount,
-    eColumnTitle,     // aka name
-    eColumnHostname,
-    eColumnHidden,
-    eColumnTyped
-  };
-  
-  mdb_column TokenForColumn(EColumn inColumn);
-  
-  //
-  // byte order
-  //
-  nsresult  SaveByteOrder(const char *aByteOrder);
-  nsresult  GetByteOrder(nsACString & aRetVal);
-  nsresult  InitByteOrder(PRBool aForce);
-  void      SwapBytes(const PRUnichar *source, PRUnichar *dest, PRInt32 aLen);
-
-protected:
-
-  static PRInt32      gRefCnt;
-
-  static nsIMdbFactory* gMdbFactory;
-  static nsIPrefBranch* gPrefBranch;
-  
-  nsCStringArray      *mHostNamePrefixes;
-  nsCStringArray      *mSchemePrefixes;
-
-  PRInt64             mFileSizeOnDisk;
-  PRInt32             mExpireDays;
-
-  PRInt32             mBatchesInProgress;
-  PRBool              mDirty;             // if we've changed history
-  PRBool              mPagesRemoved;      // true if we've removed pages but not committed.
-  nsCOMPtr  mSyncTimer;
-  nsCOMPtr  mExpireTimer;
-
-  // observers
-  nsCOMArray mHistoryObservers;
-  
-  // autocomplete stuff
-  PRBool              mAutocompleteOnlyTyped;
-
-  // N.B., these are MDB interfaces
-  nsIMdbEnv*          mEnv;       // OWNER
-  nsIMdbStore*        mStore;     // OWNER
-  nsIMdbTable*        mTable;     // OWNER
-
-  PRBool              mReverseByteOrder;
-  
-  nsCOMPtr mMetaRow;
-  
-  mdb_scope  kToken_HistoryRowScope;
-  mdb_kind   kToken_HistoryKind;
-
-  mdb_column kToken_URLColumn;
-  mdb_column kToken_ReferrerColumn;
-  mdb_column kToken_LastVisitDateColumn;
-  mdb_column kToken_FirstVisitDateColumn;
-  mdb_column kToken_VisitCountColumn;
-  mdb_column kToken_NameColumn;
-  mdb_column kToken_HostnameColumn;
-  mdb_column kToken_HiddenColumn;
-  mdb_column kToken_TypedColumn;
-  mdb_column kToken_GeckoFlagsColumn;
-
-  // meta-data tokens
-  mdb_column kToken_LastPageVisited;
-  mdb_column kToken_ByteOrder;
-
-  nsCStringHashSet mTypedHiddenURIs;
-};
-
-
-#endif // nssimpleglobalhistory__h____
Index: src/history/nsSimpleGlobalHistory.cpp
===================================================================
RCS file: src/history/nsSimpleGlobalHistory.cpp
diff -N src/history/nsSimpleGlobalHistory.cpp
--- src/history/nsSimpleGlobalHistory.cpp	21 Jan 2009 19:09:02 -0000	1.35
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,2917 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is Mozilla Communicator client code.
- *
- * The Initial Developer of the Original Code is
- * Netscape Communications Corporation.
- * Portions created by the Initial Developer are Copyright (C) 1998
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *   Chris Waterson 
- *   Blake Ross 
- *   Simon Fraser 
- *   Josh Aas 
- *   Håkan Waara 
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either of the GNU General Public License Version 2 or later (the "GPL"),
- * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-
-#include "plstr.h"
-#include "prprf.h"
-
-#include "nsNetUtil.h"
-#include "nsCRT.h"
-#include "nsQuickSort.h"
-#include "nsPrintfCString.h"
-#include "nsReadableUtils.h"
-#include "nsUnicharUtils.h"
-
-#include "nsIURL.h"
-#include "nsNetCID.h"
-
-#include "nsInt64.h"
-#include "nsMorkCID.h"
-#include "nsIMdbFactoryFactory.h"
-
-#include "nsIPrefService.h"
-#include "nsIPrefBranch2.h"
-
-#include "nsIDirectoryService.h"
-#include "nsAppDirectoryServiceDefs.h"
-
-#include "nsIObserverService.h"
-#include "nsITextToSubURI.h"
-
-#include "nsTArray.h"
-
-#include "nsSimpleGlobalHistory.h"
-
-#define PREF_BRANCH_BASE                        "browser."
-#define PREF_BROWSER_HISTORY_EXPIRE_DAYS        "history_expire_days"
-#define PREF_AUTOCOMPLETE_ONLY_TYPED            "urlbar.matchOnlyTyped"
-#define PREF_AUTOCOMPLETE_ENABLED               "urlbar.autocomplete.enabled"
-
-// see bug #319004 -- clamp title and URL to generously-large but not too large
-// length
-#define HISTORY_URI_LENGTH_MAX 65536
-#define HISTORY_TITLE_LENGTH_MAX 4096
-
-// sync history every 10 seconds
-#define HISTORY_SYNC_TIMEOUT (10 * PR_MSEC_PER_SEC)
-//#define HISTORY_SYNC_TIMEOUT 3000 // every 3 seconds - testing only!
-
-// the value of mLastNow expires every 3 seconds
-#define HISTORY_EXPIRE_NOW_TIMEOUT (3 * PR_MSEC_PER_SEC)
-
-static const PRInt64 MSECS_PER_DAY = LL_INIT(20, 500654080);  // (1000000LL * 60 * 60 * 24)
-
-PRInt32 nsSimpleGlobalHistory::gRefCnt;
-nsIMdbFactory* nsSimpleGlobalHistory::gMdbFactory = nsnull;
-nsIPrefBranch* nsSimpleGlobalHistory::gPrefBranch = nsnull;
-
-// list of terms, plus an optional groupby column
-struct SearchQueryData {
-  nsVoidArray   terms;            // array of searchTerms
-  mdb_column    groupBy;           // column to group by
-};
-
-
-// individual search term, pulled from token/value structs
-class HistorySearchTerm
-{
-public:
-  HistorySearchTerm(const char* aDatasource, PRUint32 aDatasourceLen,
-             const char *aProperty, PRUint32 aPropertyLen,
-             const char* aMethod, PRUint32 aMethodLen,
-             const char* aText, PRUint32 aTextLen)
-  : datasource(aDatasource, aDatasource + aDatasourceLen)
-  , property(aProperty, aProperty + aPropertyLen)
-  , method(aMethod, aMethod + aMethodLen)
-  {
-    MOZ_COUNT_CTOR(HistorySearchTerm);
-    nsresult rv;
-    nsCOMPtr textToSubURI = do_GetService(NS_ITEXTTOSUBURI_CONTRACTID, &rv);
-    if (NS_SUCCEEDED(rv))
-      textToSubURI->UnEscapeAndConvert("UTF-8",  PromiseFlatCString(Substring(aText, aText + aTextLen)).get(), getter_Copies(text));
-  }
-
-  ~HistorySearchTerm()
-  {
-    MOZ_COUNT_DTOR(HistorySearchTerm);
-  }
-  
-  nsDependentCSubstring   datasource;  // should always be "history" ?
-  nsDependentCSubstring   property;    // AgeInDays, Hostname, etc
-  nsDependentCSubstring   method;      // is, isgreater, isless
-  nsString                text;
-  rowMatchCallback        match;       // matching callback if needed
-};
-
-
-// closure structures for RemoveMatchingRows
-struct MatchExpirationData {
-  PRTime                  expirationDate;
-  nsSimpleGlobalHistory*  history;
-};
-
-struct MatchHostData {
-  const char*             host;
-  PRBool                  entireDomain;          // should we delete the entire domain?
-  nsSimpleGlobalHistory*  history;
-};
-
-struct MatchSearchTermData {
-  nsIMdbEnv*              env;
-  nsIMdbStore*            store;
-  
-  HistorySearchTerm*             term;
-  PRBool                  haveClosure;           // are the rest of the fields valid?
-  PRTime                  now;
-  PRInt32                 intValue;
-};
-
-struct MatchQueryData {
-  SearchQueryData*            query;
-  nsSimpleGlobalHistory*  history;
-};
-
-// Used to describe what prefixes shouldn't be cut from
-// history urls when doing an autocomplete url comparison.
-struct AutocompleteExcludeData {
-  PRUint32                 schemePrefix;
-  PRUint32                 hostnamePrefix;
-};
-
-
-#pragma mark -
-
-static PRBool
-matchExpirationCallback(nsIMdbRow *row, void *aClosure)
-{
-  MatchExpirationData *expires = (MatchExpirationData*)aClosure;
-  return expires->history->MatchExpiration(row, &expires->expirationDate);
-}
-
-static PRBool
-matchAllCallback(nsIMdbRow *row, void *aClosure)
-{
-  return PR_TRUE;
-}
-
-static PRBool
-matchHostCallback(nsIMdbRow *row, void *aClosure)
-{
-  MatchHostData *hostInfo = (MatchHostData*)aClosure;
-  return hostInfo->history->MatchHost(row, hostInfo);
-}
-
-static PRBool HasCell(nsIMdbEnv *aEnv, nsIMdbRow* aRow, mdb_column aCol)
-{
-  mdbYarn yarn;
-  mdb_err err = aRow->AliasCellYarn(aEnv, aCol, &yarn);
-
-  // no cell
-  if (err != 0)
-    return PR_FALSE;
-
-  // if we have the cell, make sure it has a value??
-  return (yarn.mYarn_Fill != 0);
-}
-
-
-#pragma mark -
-
-//----------------------------------------------------------------------
-//
-//  nsHistoryMdbTableEnumerator
-//
-//    An nsISimpleEnumerator implementation that returns the value of
-//    a column as an nsISupports. Allows for some simple selection.
-//
-
-class nsHistoryMdbTableEnumerator : public nsISimpleEnumerator
-{
-public:
-  nsHistoryMdbTableEnumerator(nsSimpleGlobalHistory *aHistory,
-                              nsIMdbTable* aTable) : mHistory(aHistory),
-                                                     mTable(aTable)
-  {
-  }
-  
-  virtual nsresult Init (nsIMdbEnv *aEnv) {
-    mEnv = aEnv;
-    
-    mdb_err err = mTable->GetTableRowCursor(mEnv, -1, getter_AddRefs(mCursor));
-    if (err != 0)
-      return NS_ERROR_FAILURE;
-    
-    return NS_OK;
-  }
-  
-protected:
-  virtual     ~nsHistoryMdbTableEnumerator();
-
-public:
-  NS_DECL_ISUPPORTS
-  NS_DECL_NSISIMPLEENUMERATOR
-
-protected:
-  virtual PRBool   IsResult(nsIMdbRow* aRow) = 0;
-
-protected:
-
-  nsCOMPtr   mEnv;
-  nsSimpleGlobalHistory *mHistory; // weak ptr
-
-private:
-  nsCOMPtr           mTable;
-  nsCOMPtr  mCursor;
-  nsCOMPtr             mCurrent;
-
-};
-
-//----------------------------------------------------------------------
-
-nsHistoryMdbTableEnumerator::~nsHistoryMdbTableEnumerator()
-{
-}
-
-
-NS_IMPL_ISUPPORTS1(nsHistoryMdbTableEnumerator, nsISimpleEnumerator)
-
-NS_IMETHODIMP
-nsHistoryMdbTableEnumerator::HasMoreElements(PRBool* _result)
-{
-  if (! mCurrent) {
-    while (1) {
-      mdb_pos pos;
-      mdb_err err = mCursor->NextRow(mEnv, getter_AddRefs(mCurrent), &pos);
-      if (err != 0) return NS_ERROR_FAILURE;
-
-      // If there are no more rows, then bail.
-      if (! mCurrent)
-        break;
-
-      // If this is a result, then stop.
-      if (IsResult(mCurrent))
-        break;
-
-      // Otherwise, drop the ref to the row we retrieved, and continue
-      // on to the next one.
-      mCurrent = nsnull;
-    }
-  }
-
-  *_result = (mCurrent != nsnull);
-  return NS_OK;
-}
-
-
-NS_IMETHODIMP
-nsHistoryMdbTableEnumerator::GetNext(nsISupports** _result)
-{
-  nsresult rv;
-
-  PRBool hasMore;
-  rv = HasMoreElements(&hasMore);
-  if (NS_FAILED(rv)) return rv;
-
-  if (! hasMore)
-    return NS_ERROR_UNEXPECTED;
-
-  nsIHistoryItem *item;
-  rv = mHistory->CreateHistoryItemForRow(mCurrent, &item); // addrefs item
-  if (item)
-    *_result = static_cast(item);
-    
-  mCurrent = nsnull;
-
-  return rv;
-}
-
-
-#pragma mark -
-
-class nsMdbTableAllRowsEnumerator : public nsHistoryMdbTableEnumerator
-{
-public:
-  nsMdbTableAllRowsEnumerator(nsSimpleGlobalHistory* inHistory,
-                              nsIMdbTable* aTable,
-                              mdb_column inHiddenColumnToken)
-              : nsHistoryMdbTableEnumerator(inHistory, aTable),
-                mHiddenColumnToken(inHiddenColumnToken)
-              {}
-  virtual     ~nsMdbTableAllRowsEnumerator() 
-              {}
-
-protected:
-  virtual PRBool IsResult(nsIMdbRow* aRow)
-  {
-    // history doesn't show hidden items (autocomplete does though).
-    return !HasCell(mEnv, aRow, mHiddenColumnToken);
-  }
-
-protected:
-  mdb_column                mHiddenColumnToken;
-};
-
-
-
-#pragma mark -
-
-
-nsHistoryItem::nsHistoryItem()
-: mHistory(nsnull)
-{
-}
-
-nsHistoryItem::~nsHistoryItem()
-{
-}
-
-
-NS_IMPL_ISUPPORTS1(nsHistoryItem, nsIHistoryItem);
-
-NS_IMETHODIMP
-nsHistoryItem::InitWithRow(nsSimpleGlobalHistory* inHistory, nsIMdbEnv* inEnv, nsIMdbRow* inRow)
-{
-  mHistory = inHistory;
-  mEnv = inEnv;
-  mRow = inRow;
-  return NS_OK;
-}
-
-NS_IMETHODIMP
-nsHistoryItem::GetURL(nsACString& outURL)
-{
-  return mHistory->GetRowValue(mRow, mHistory->TokenForColumn(nsSimpleGlobalHistory::eColumnURL), outURL);
-}
-
-NS_IMETHODIMP
-nsHistoryItem::GetReferrer(nsACString& outReferrer)
-{
-  return mHistory->GetRowValue(mRow, mHistory->TokenForColumn(nsSimpleGlobalHistory::eColumnReferrer), outReferrer);
-}
-
-NS_IMETHODIMP
-nsHistoryItem::GetLastVisitDate(PRTime* outLastVisit)
-{
-  return mHistory->GetRowValue(mRow, mHistory->TokenForColumn(nsSimpleGlobalHistory::eColumnLastVisitDate), outLastVisit);
-}
-
-NS_IMETHODIMP
-nsHistoryItem::GetFirstVisitDate(PRTime* outFirstVisit)
-{
-  return mHistory->GetRowValue(mRow, mHistory->TokenForColumn(nsSimpleGlobalHistory::eColumnFirstVisitDate), outFirstVisit);
-}
-
-NS_IMETHODIMP
-nsHistoryItem::GetVisitCount(PRInt32* outVisitCount)
-{
-  return mHistory->GetRowValue(mRow, mHistory->TokenForColumn(nsSimpleGlobalHistory::eColumnVisitCount), outVisitCount);
-}
-
-NS_IMETHODIMP
-nsHistoryItem::GetTitle(nsAString& outURL)
-{
-  return mHistory->GetRowValue(mRow, mHistory->TokenForColumn(nsSimpleGlobalHistory::eColumnTitle), outURL);
-}
-
-NS_IMETHODIMP
-nsHistoryItem::GetHostname(nsACString& outURL)
-{
-  return mHistory->GetRowValue(mRow, mHistory->TokenForColumn(nsSimpleGlobalHistory::eColumnHostname), outURL);
-}
-
-NS_IMETHODIMP
-nsHistoryItem::GetHidden(PRBool* outHidden)
-{
-  return mHistory->RowHasCell(mRow, mHistory->TokenForColumn(nsSimpleGlobalHistory::eColumnHidden), outHidden);
-}
-
-NS_IMETHODIMP
-nsHistoryItem::GetTyped(PRBool* outTyped)
-{
-  return mHistory->RowHasCell(mRow, mHistory->TokenForColumn(nsSimpleGlobalHistory::eColumnTyped), outTyped);
-}
-
-NS_IMETHODIMP
-nsHistoryItem::GetID(nsACString& outIDString)
-{
-  mdbOid    oid;
-  mRow->GetOid(mEnv, &oid);
-  outIDString = nsPrintfCString(17, "%08x_%08x", oid.mOid_Scope, oid.mOid_Id);
-  return NS_OK;
-}
-
-
-#pragma mark -
-
-
-//----------------------------------------------------------------------
-//
-// nsSimpleGlobalHistory
-//
-//   ctor dtor etc.
-//
-
-
-nsSimpleGlobalHistory::nsSimpleGlobalHistory()
-  : mExpireDays(9), // make default be nine days
-    mBatchesInProgress(0),
-    mDirty(PR_FALSE),
-    mPagesRemoved(PR_FALSE),
-    mAutocompleteOnlyTyped(PR_FALSE),
-    mEnv(nsnull),
-    mStore(nsnull),
-    mTable(nsnull)
-{
-  LL_I2L(mFileSizeOnDisk, 0);
-  
-  // these strings can't be static global, because then they'd
-  // be inited before XPCOM, and things will crash.
-  mSchemePrefixes = new nsCStringArray(3);
-  mSchemePrefixes->ParseString("http:// https:// ftp://", " ");
-
-  mHostNamePrefixes = new nsCStringArray(2);
-  mHostNamePrefixes->ParseString("www. ftp.", " ");
-}
-
-nsSimpleGlobalHistory::~nsSimpleGlobalHistory()
-{
-  nsresult rv;
-  rv = CloseDB();
-
-  NS_IF_RELEASE(mTable);
-  NS_IF_RELEASE(mStore);
-  
-  if (--gRefCnt == 0) {
-    NS_IF_RELEASE(gMdbFactory);
-    NS_IF_RELEASE(gPrefBranch);
-  }
-
-  NS_IF_RELEASE(mEnv);
-  if (mSyncTimer)
-    mSyncTimer->Cancel();
-
-  if (mExpireTimer)
-    mExpireTimer->Cancel();
-}
-
-//----------------------------------------------------------------------
-//
-// nsSimpleGlobalHistory
-//
-//   nsISupports methods
-
-NS_IMPL_ADDREF(nsSimpleGlobalHistory)
-NS_IMPL_RELEASE(nsSimpleGlobalHistory)
-
-NS_INTERFACE_MAP_BEGIN(nsSimpleGlobalHistory)
-  NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsIGlobalHistory2, nsIGlobalHistory3)
-  NS_INTERFACE_MAP_ENTRY(nsIGlobalHistory3)
-  NS_INTERFACE_MAP_ENTRY(nsIBrowserHistory)
-  NS_INTERFACE_MAP_ENTRY(nsIHistoryItems)
-  NS_INTERFACE_MAP_ENTRY(nsIObserver)
-  NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference)
-  NS_INTERFACE_MAP_ENTRY(nsIAutoCompleteSession)
-  NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIBrowserHistory)
-NS_INTERFACE_MAP_END
-
-//----------------------------------------------------------------------
-//
-// nsSimpleGlobalHistory
-//
-//   nsIGlobalHistory2 methods
-//
-
-
-NS_IMETHODIMP
-nsSimpleGlobalHistory::AddURI(nsIURI *aURI, PRBool aRedirect, PRBool aTopLevel, nsIURI *aReferrer)
-{
-  nsresult rv;
-  NS_ENSURE_ARG_POINTER(aURI);
-
-  // If history is set to expire after 0 days,
-  // then it's technically disabled. Don't even
-  // bother adding the page
-  if (mExpireDays == 0)
-    return NS_OK;
-
-  // filter out unwanted URIs such as chrome: mailbox: etc
-  // The model is really if we don't know differently then add which basically
-  // means we are suppose to try all the things we know not to allow in and
-  // then if we don't bail go on and allow it in.  But here lets compare
-  // against the most common case we know to allow in and go on and say yes
-  // to it.
-
-  PRBool isHTTP = PR_FALSE;
-  PRBool isHTTPS = PR_FALSE;
-
-  NS_ENSURE_SUCCESS(rv = aURI->SchemeIs("http", &isHTTP), rv);
-  NS_ENSURE_SUCCESS(rv = aURI->SchemeIs("https", &isHTTPS), rv);
-
-  if (!isHTTP && !isHTTPS) {
-    PRBool isAbout, isImap, isNews, isMailbox, isViewSource, isChrome, isData;
-
-    rv = aURI->SchemeIs("about", &isAbout);
-    rv |= aURI->SchemeIs("imap", &isImap);
-    rv |= aURI->SchemeIs("news", &isNews);
-    rv |= aURI->SchemeIs("mailbox", &isMailbox);
-    rv |= aURI->SchemeIs("view-source", &isViewSource);
-    rv |= aURI->SchemeIs("chrome", &isChrome);
-    rv |= aURI->SchemeIs("data", &isData);
-    NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
-
-    if (isAbout || isImap || isNews || isMailbox || isViewSource || isChrome || isData) {
-      return NS_OK;
-    }
-  }
-
-  rv = OpenDB();
-  NS_ENSURE_SUCCESS(rv, rv);
-
-  nsCAutoString URISpec;
-  rv = aURI->GetSpec(URISpec);
-  NS_ENSURE_SUCCESS(rv, rv);
-
-  if (URISpec.Length() > HISTORY_URI_LENGTH_MAX)
-     return NS_OK;
-
-  nsCAutoString referrerSpec;
-  if (aReferrer) {
-    rv = aReferrer->GetSpec(referrerSpec);
-    NS_ENSURE_SUCCESS(rv, rv);
-  }
-
-  PRTime now = PR_Now();
-
-  nsCOMPtr row;
-  rv = FindRow(kToken_URLColumn, URISpec.get(), getter_AddRefs(row));
-
-  if (NS_SUCCEEDED(rv))
-  {
-    // update the database, and get the old info back
-    PRTime oldDate;
-    PRInt32 oldCount;
-    rv = AddExistingPageToDatabase(row, now, referrerSpec.get(), &oldDate, &oldCount);
-    NS_ASSERTION(NS_SUCCEEDED(rv), "AddExistingPageToDatabase failed; see bug 88961");
-    if (NS_FAILED(rv)) return rv;
-    
-    // Notify observers
-    NotifyObserversItemLoaded(row, PR_FALSE);
-  }
-  else
-  {
-    rv = AddNewPageToDatabase(URISpec.get(), now, referrerSpec.get(), getter_AddRefs(row));
-    NS_ASSERTION(NS_SUCCEEDED(rv), "AddNewPageToDatabase failed; see bug 88961");
-    if (NS_FAILED(rv)) return rv;
-    
-    PRBool isJavascript;
-    rv = aURI->SchemeIs("javascript", &isJavascript);
-    NS_ENSURE_SUCCESS(rv, rv);
-
-    if (isJavascript || aRedirect || !aTopLevel) {
-      // if this is a JS url, or a redirected URI or in a frame, hide it in
-      // global history so that it doesn't show up in the autocomplete
-      // dropdown. AddExistingPageToDatabase has logic to override this
-      // behavior for URIs which were typed. See bug 197127 and bug 161531
-      // for details.
-      rv = SetRowValue(row, kToken_HiddenColumn, 1);
-      NS_ENSURE_SUCCESS(rv, rv);
-    }
-    else
-    {
-      // Notify observers
-      NotifyObserversItemLoaded(row, PR_TRUE);
-    }
-  }
-
-  // Store last visited page if we have the pref set accordingly
-  if (aTopLevel)
-  {
-    PRInt32 choice = 0;
-    if (NS_SUCCEEDED(gPrefBranch->GetIntPref("startup.page", &choice))) {
-      if (choice != 2) {
-        if (NS_SUCCEEDED(gPrefBranch->GetIntPref("windows.loadOnNewWindow", &choice))) {
-          if (choice != 2) {
-            gPrefBranch->GetIntPref("tabs.loadOnNewTab", &choice);
-          }
-        }
-      }
-    }
-    if (choice == 2) {
-      NS_ENSURE_STATE(mMetaRow);
-
-      SetRowValue(mMetaRow, kToken_LastPageVisited, URISpec.get());
-    }
-  }
- 
-  SetDirty();
-  
-  return NS_OK;
-}
-
-nsresult
-nsSimpleGlobalHistory::AddExistingPageToDatabase(nsIMdbRow *row,
-                                           PRTime aDate,
-                                           const char *aReferrer,
-                                           PRTime *aOldDate,
-                                           PRInt32 *aOldCount)
-{
-  nsresult rv;
-  nsCAutoString oldReferrer;
-  
-  // if the page was typed, unhide it now because it's
-  // known to be valid
-  if (HasCell(mEnv, row, kToken_TypedColumn)) {
-    nsCAutoString URISpec;
-    rv = GetRowValue(row, kToken_URLColumn, URISpec);
-    NS_ENSURE_SUCCESS(rv, rv);
-
-    mTypedHiddenURIs.Remove(URISpec);
-    row->CutColumn(mEnv, kToken_HiddenColumn);
-  }
-
-  // Update last visit date.
-  // First get the old date so we can update observers...
-  rv = GetRowValue(row, kToken_LastVisitDateColumn, aOldDate);
-  if (NS_FAILED(rv)) return rv;
-
-  // get the old count, so we can update it
-  rv = GetRowValue(row, kToken_VisitCountColumn, aOldCount);
-  if (NS_FAILED(rv) || *aOldCount < 1)
-    *aOldCount = 1;             // assume we've visited at least once
-
-  // ...now set the new date.
-  SetRowValue(row, kToken_LastVisitDateColumn, aDate);
-  SetRowValue(row, kToken_VisitCountColumn, (*aOldCount) + 1);
-
-  if (aReferrer && *aReferrer) {
-    rv = GetRowValue(row, kToken_ReferrerColumn, oldReferrer);
-    // No referrer? Now there is!
-    if (NS_FAILED(rv) || oldReferrer.IsEmpty())
-      SetRowValue(row, kToken_ReferrerColumn, aReferrer);
-  }
-
-  return NS_OK;
-}
-
-nsresult
-nsSimpleGlobalHistory::AddNewPageToDatabase(const char *aURL,
-                                      PRTime aDate,
-                                      const char *aReferrer,
-                                      nsIMdbRow **aResult)
-{
-  mdb_err err;
-  
-  // Create a new row
-  mdbOid rowId;
-  rowId.mOid_Scope = kToken_HistoryRowScope;
-  rowId.mOid_Id    = mdb_id(-1);
-  
-  NS_PRECONDITION(mTable != nsnull, "not initialized");
-  if (! mTable)
-    return NS_ERROR_NOT_INITIALIZED;
-
-  nsCOMPtr row;
-  err = mTable->NewRow(mEnv, &rowId, getter_AddRefs(row));
-  if (err != 0) return NS_ERROR_FAILURE;
-
-  // Set the URL
-  SetRowValue(row, kToken_URLColumn, aURL);
-  
-  // Set the date.
-  SetRowValue(row, kToken_LastVisitDateColumn, aDate);
-  SetRowValue(row, kToken_FirstVisitDateColumn, aDate);
-
-  // Set the referrer if there is one.
-  if (aReferrer && *aReferrer)
-    SetRowValue(row, kToken_ReferrerColumn, aReferrer);
-
-  nsCOMPtr uri;
-  NS_NewURI(getter_AddRefs(uri), nsDependentCString(aURL), nsnull, nsnull);
-  nsCAutoString hostname;
-  if (uri)
-      uri->GetHost(hostname);
-
-  SetRowValue(row, kToken_HostnameColumn, hostname.get());
-
-  *aResult = row;
-  NS_ADDREF(*aResult);
-
-  return NS_OK;
-}
-
-nsresult
-nsSimpleGlobalHistory::RemovePageInternal(const char *aSpec)
-{
-  if (!mTable) return NS_ERROR_NOT_INITIALIZED;
-  // find the old row, ignore it if we don't have it
-  nsCOMPtr row;
-  nsresult rv = FindRow(kToken_URLColumn, aSpec, getter_AddRefs(row));
-  if (NS_FAILED(rv)) return NS_OK;
-
-  // remove the row
-  mdb_err err = mTable->CutRow(mEnv, row);
-  NS_ENSURE_TRUE(err == 0, NS_ERROR_FAILURE);
-
-  NotifyObserversItemRemoved(row);
-
-  // not a fatal error if we can't cut all column
-  err = row->CutAllColumns(mEnv);
-  NS_ASSERTION(err == 0, "couldn't cut all columns");
-
-  mPagesRemoved = PR_TRUE;
-  SetDirty();
-
-  return NS_OK;
-}
-
-nsresult
-nsSimpleGlobalHistory::CreateHistoryItemForRow(nsIMdbRow* inRow, nsIHistoryItem** outItem)
-{
-  // XXX get from array
-  nsHistoryItem* thisItem = new nsHistoryItem;
-  thisItem->InitWithRow(this, mEnv, inRow);
-  
-  NS_ADDREF(thisItem);
-  *outItem = thisItem;
-  
-  return NS_OK;
-}
-
-#pragma mark -
-
-nsresult
-nsSimpleGlobalHistory::StartBatching()
-{
-  if (mBatchesInProgress == 0)
-    NotifyObserversBatchingStarted();
-
-  ++mBatchesInProgress;
-  return NS_OK;
-}
-
-nsresult
-nsSimpleGlobalHistory::EndBatching()
-{
-  --mBatchesInProgress;
-  NS_ASSERTION(mBatchesInProgress >= 0, "Batch count went negative");
-
-  if (mBatchesInProgress == 0)
-    NotifyObserversBatchingFinished();
-
-  return NS_OK;
-}
-
-nsresult
-nsSimpleGlobalHistory::NotifyObserversHistoryLoaded()
-{
-  PRUint32 numObservers = mHistoryObservers.Count();
-  
-  for (PRUint32 i = 0; i < numObservers; i ++)
-  {
-    nsIHistoryObserver* historyObserver = mHistoryObservers[i];
-    if (historyObserver)
-      historyObserver->HistoryLoaded(); 
-  }
-  return NS_OK;
-}
-
-nsresult
-nsSimpleGlobalHistory::NotifyObserversHistoryClosing()
-{
-  // copy the array to avoid problems when implementors of
-  // HistoryClosing() use it to remove observers
-  nsCOMArray observersCopy(mHistoryObservers);
-
-  PRUint32 numObservers = observersCopy.Count();
-  
-  for (PRUint32 i = 0; i < numObservers; i ++)
-  {
-    nsIHistoryObserver* historyObserver = observersCopy[i];
-    if (historyObserver)
-      historyObserver->HistoryClosing(); 
-  }
-  return NS_OK;
-}
-
-nsresult
-nsSimpleGlobalHistory::NotifyObserversItemLoaded(nsIMdbRow* inRow, PRBool inFirstVisit)
-{
-  if (mBatchesInProgress > 0)
-    return NS_OK;
-  
-  nsCOMPtr historyItem;
-  nsresult rv = CreateHistoryItemForRow(inRow, getter_AddRefs(historyItem));
-  NS_ENSURE_SUCCESS(rv, rv);
-  
-  PRUint32 numObservers = mHistoryObservers.Count();
-  
-  for (PRUint32 i = 0; i < numObservers; i ++)
-  {
-    nsIHistoryObserver* historyObserver = mHistoryObservers[i];
-    if (historyObserver)
-      historyObserver->ItemLoaded(historyItem, inFirstVisit);
-  }
-  
-  return NS_OK;
-}
-
-nsresult
-nsSimpleGlobalHistory::NotifyObserversItemRemoved(nsIMdbRow* inRow)
-{
-  if (mBatchesInProgress > 0)
-    return NS_OK;
-
-  // we assume that the row is still valid at this point
-  nsCOMPtr historyItem;
-  nsresult rv = CreateHistoryItemForRow(inRow, getter_AddRefs(historyItem));
-  NS_ENSURE_SUCCESS(rv, rv);
-
-  PRUint32 numObservers = mHistoryObservers.Count();
-  
-  for (PRUint32 i = 0; i < numObservers; i ++)
-  {
-    nsIHistoryObserver* historyObserver = mHistoryObservers[i];
-    if (historyObserver)
-      historyObserver->ItemRemoved(historyItem); 
-  }
-
-  return NS_OK;
-}
-
-nsresult
-nsSimpleGlobalHistory::NotifyObserversItemTitleChanged(nsIMdbRow* inRow)
-{
-  if (mBatchesInProgress > 0)
-    return NS_OK;
-  
-  // we assume that the row is still valid at this point
-  nsCOMPtr historyItem;
-  nsresult rv = CreateHistoryItemForRow(inRow, getter_AddRefs(historyItem));
-  NS_ENSURE_SUCCESS(rv, rv);
-
-  PRUint32 numObservers = mHistoryObservers.Count();
-  
-  for (PRUint32 i = 0; i < numObservers; i ++)
-  {
-    nsIHistoryObserver* historyObserver = mHistoryObservers[i];
-    if (historyObserver)
-      historyObserver->ItemTitleChanged(historyItem);
-  }
-  
-  return NS_OK;
-}
-
-nsresult
-nsSimpleGlobalHistory::NotifyObserversBatchingStarted()
-{
-  PRUint32 numObservers = mHistoryObservers.Count();
-  
-  for (PRUint32 i = 0; i < numObservers; i ++)
-  {
-    nsIHistoryObserver* historyObserver = mHistoryObservers[i];
-    if (historyObserver)
-      historyObserver->StartBatchChanges(); 
-  }
-  
-  return NS_OK;
-}
-
-nsresult
-nsSimpleGlobalHistory::NotifyObserversBatchingFinished()
-{
-  PRUint32 numObservers = mHistoryObservers.Count();
-  
-  for (PRUint32 i = 0; i < numObservers; i ++)
-  {
-    nsIHistoryObserver* historyObserver = mHistoryObservers[i];
-    if (historyObserver)
-      historyObserver->EndBatchChanges(); 
-  }
-
-  return NS_OK;
-}
-
-#pragma mark -
-
-nsresult
-nsSimpleGlobalHistory::SetRowValue(nsIMdbRow *aRow, mdb_column aCol, const PRTime& aValue)
-{
-  mdb_err err;
-  nsCAutoString val;
-  val.AppendInt(aValue);
-
-  mdbYarn yarn = { (void *)val.get(), val.Length(), val.Length(), 0, 0, nsnull };
-  
-  err = aRow->AddColumn(mEnv, aCol, &yarn);
-
-  if ( err != 0 ) return NS_ERROR_FAILURE;
-  
-  return NS_OK;
-}
-
-nsresult
-nsSimpleGlobalHistory::SetRowValue(nsIMdbRow *aRow, mdb_column aCol,
-                             const PRUnichar* aValue)
-{
-  mdb_err err;
-
-  PRInt32 len = (nsCRT::strlen(aValue) * sizeof(PRUnichar));
-  PRUnichar *swapval = nsnull;
-
-  // eventually turn this on when we're confident in mork's ability
-  // to handle yarn forms properly
-#if 0
-  NS_ConvertUTF16toUTF8 utf8Value(aValue);
-  printf("Storing utf8 value %s\n", utf8Value.get());
-  mdbYarn yarn = { (void *)utf8Value.get(), utf8Value.Length(), utf8Value.Length(), 0, 1, nsnull };
-#else
-
-  if (mReverseByteOrder) {
-    // The file is other-endian.  Byte-swap the value.
-    swapval = (PRUnichar *)malloc(len);
-    if (!swapval)
-      return NS_ERROR_OUT_OF_MEMORY;
-    SwapBytes(aValue, swapval, len / sizeof(PRUnichar));
-    aValue = swapval;
-  }
-  mdbYarn yarn = { (void *)aValue, len, len, 0, 0, nsnull };
-  
-#endif
-  err = aRow->AddColumn(mEnv, aCol, &yarn);
-  if (swapval)
-    free(swapval);
-  if (err != 0) return NS_ERROR_FAILURE;
-  return NS_OK;
-}
-
-nsresult
-nsSimpleGlobalHistory::SetRowValue(nsIMdbRow *aRow, mdb_column aCol,
-                             const char* aValue)
-{
-  mdb_err err;
-  PRInt32 len = PL_strlen(aValue);
-  mdbYarn yarn = { (void*) aValue, len, len, 0, 0, nsnull };
-  err = aRow->AddColumn(mEnv, aCol, &yarn);
-  if (err != 0) return NS_ERROR_FAILURE;
-
-  return NS_OK;
-}
-
-nsresult
-nsSimpleGlobalHistory::SetRowValue(nsIMdbRow *aRow, mdb_column aCol, const PRInt32 aValue)
-{
-  mdb_err err;
-  
-  nsCAutoString buf; buf.AppendInt(aValue);
-  mdbYarn yarn = { (void *)buf.get(), buf.Length(), buf.Length(), 0, 0, nsnull };
-
-  err = aRow->AddColumn(mEnv, aCol, &yarn);
-  
-  if (err != 0) return NS_ERROR_FAILURE;
-
-  return NS_OK;
-}
-
-nsresult
-nsSimpleGlobalHistory::GetRowValue(nsIMdbRow *aRow, mdb_column aCol,
-                             nsAString& aResult)
-{
-  mdb_err err;
-  
-  mdbYarn yarn;
-  err = aRow->AliasCellYarn(mEnv, aCol, &yarn);
-  if (err != 0) return NS_ERROR_FAILURE;
-
-  aResult.Truncate(0);
-  if (!yarn.mYarn_Fill)
-    return NS_OK;
-  
-  switch (yarn.mYarn_Form) {
-  case 0:                       // unicode
-    if (mReverseByteOrder) {
-      // The file is other-endian; we must byte-swap the result.
-      PRUnichar *swapval;
-      int len = yarn.mYarn_Fill / sizeof(PRUnichar);
-      swapval = (PRUnichar *)malloc(yarn.mYarn_Fill);
-      if (!swapval)
-        return NS_ERROR_OUT_OF_MEMORY;
-      SwapBytes((const PRUnichar *)yarn.mYarn_Buf, swapval, len);
-      aResult.Assign(swapval, len);
-      free(swapval);
-    }
-    else
-      aResult.Assign((const PRUnichar *)yarn.mYarn_Buf, yarn.mYarn_Fill/sizeof(PRUnichar));
-    break;
-
-    // eventually we'll be supporting this in SetRowValue()
-  case 1:                       // UTF8
-    CopyUTF8toUTF16(Substring((const char*)yarn.mYarn_Buf,
-                              (const char*)yarn.mYarn_Buf + yarn.mYarn_Fill),
-                    aResult);
-    break;
-
-  default:
-    return NS_ERROR_UNEXPECTED;
-  }
-  return NS_OK;
-}
-
-// Copy an array of 16-bit values, reversing the byte order.
-void
-nsSimpleGlobalHistory::SwapBytes(const PRUnichar *source, PRUnichar *dest,
-                           PRInt32 aLen)
-{
-  PRUint16 c;
-  const PRUnichar *inp;
-  PRUnichar *outp;
-  PRInt32 i;
-
-  inp = source;
-  outp = dest;
-  for (i = 0; i < aLen; i++) {
-    c = *inp++;
-    *outp++ = (((c >> 8) & 0xff) | (c << 8));
-  }
-  return;
-}
-      
-nsresult
-nsSimpleGlobalHistory::GetRowValue(nsIMdbRow *aRow, mdb_column aCol,
-                             PRTime *aResult)
-{
-  mdb_err err;
-  
-  mdbYarn yarn;
-  err = aRow->AliasCellYarn(mEnv, aCol, &yarn);
-  if (err != 0) return NS_ERROR_FAILURE;
-
-  *aResult = LL_ZERO;
-  
-  if (!yarn.mYarn_Fill || !yarn.mYarn_Buf)
-    return NS_OK;
-
-  long long ld;
-  PR_sscanf((const char*)yarn.mYarn_Buf, "%lld", &ld);
-  *aResult = ld;
-
-  return NS_OK;
-}
-
-nsresult
-nsSimpleGlobalHistory::GetRowValue(nsIMdbRow *aRow, mdb_column aCol,
-                             PRInt32 *aResult)
-{
-  mdb_err err;
-  
-  mdbYarn yarn;
-  err = aRow->AliasCellYarn(mEnv, aCol, &yarn);
-  if (err != 0) return NS_ERROR_FAILURE;
-
-  if (yarn.mYarn_Buf)
-    *aResult = atoi((char *)yarn.mYarn_Buf);
-  else
-    *aResult = 0;
-  
-  return NS_OK;
-}
-
-nsresult
-nsSimpleGlobalHistory::GetRowValue(nsIMdbRow *aRow, mdb_column aCol,
-                             nsACString& aResult)
-{
-  mdb_err err;
-  
-  mdbYarn yarn;
-  err = aRow->AliasCellYarn(mEnv, aCol, &yarn);
-  if (err != 0) return NS_ERROR_FAILURE;
-
-  const char* startPtr = (const char*)yarn.mYarn_Buf;
-  if (startPtr)
-    aResult.Assign(Substring(startPtr, startPtr + yarn.mYarn_Fill));
-  else
-    aResult.Truncate();
-  
-  return NS_OK;
-}
-
-nsresult
-nsSimpleGlobalHistory::RowHasCell(nsIMdbRow *aRow, mdb_column aCol, PRBool* aResult)
-{
-  *aResult = HasCell(mEnv, aRow, aCol);
-  return NS_OK;
-}
-
-NS_IMETHODIMP
-nsSimpleGlobalHistory::GetCount(PRUint32* aCount)
-{
-  NS_ENSURE_ARG_POINTER(aCount);
-  NS_ENSURE_SUCCESS(OpenDB(), NS_ERROR_FAILURE);
-  if (!mTable) return NS_ERROR_FAILURE;
-
-  mdb_err err = mTable->GetCount(mEnv, aCount);
-  return (err == 0) ? NS_OK : NS_ERROR_FAILURE;
-}
-
-NS_IMETHODIMP
-nsSimpleGlobalHistory::SetPageTitle(nsIURI *aURI, const nsAString& aTitle)
-{
-  nsresult rv;
-  NS_ENSURE_ARG_POINTER(aURI);
-
-  nsAutoString titleString(StringHead(aTitle, HISTORY_TITLE_LENGTH_MAX));
-
-  // skip about: URIs to avoid reading in the db (about:blank, especially)
-  PRBool isAbout;
-  rv = aURI->SchemeIs("about", &isAbout);
-  NS_ENSURE_SUCCESS(rv, rv);
-  if (isAbout) return NS_OK;
-
-  NS_ENSURE_SUCCESS(OpenDB(), NS_ERROR_FAILURE);
-  
-  nsCAutoString URISpec;
-  rv = aURI->GetSpec(URISpec);
-  NS_ENSURE_SUCCESS(rv, rv);
-
-  nsCOMPtr row;
-  rv = FindRow(kToken_URLColumn, URISpec.get(), getter_AddRefs(row));
-
-  // if the row doesn't exist, we silently succeed
-  if (rv == NS_ERROR_NOT_AVAILABLE) return NS_OK;
-  NS_ENSURE_SUCCESS(rv, rv);
-
-  // Get the old title so we can notify observers
-  nsAutoString oldtitle;
-  rv = GetRowValue(row, kToken_NameColumn, oldtitle);
-  if (NS_FAILED(rv)) return rv;
-
-  SetRowValue(row, kToken_NameColumn, titleString.get());
-
-  // ...and update observers
-  NotifyObserversItemTitleChanged(row);
-
-  SetDirty();
-
-  return NS_OK;
-}
-
-
-NS_IMETHODIMP
-nsSimpleGlobalHistory::RemovePage(nsIURI *aURI)
-{
-  nsCAutoString spec;
-  nsresult rv = aURI->GetSpec(spec);
-  if (NS_SUCCEEDED(rv))
-    rv = RemovePageInternal(spec.get());
-  return rv;
-}
-
-NS_IMETHODIMP
-nsSimpleGlobalHistory::RemovePagesFromHost(const nsACString &aHost, PRBool aEntireDomain)
-{
-  const nsCString &host = PromiseFlatCString(aHost);
-
-  MatchHostData hostInfo;
-  hostInfo.history = this;
-  hostInfo.entireDomain = aEntireDomain;
-  hostInfo.host = host.get();
-  
-  nsresult rv = RemoveMatchingRows(matchHostCallback, (void *)&hostInfo, PR_TRUE);
-  if (NS_FAILED(rv)) return rv;
-
-  mPagesRemoved = PR_TRUE;
-  SetDirty();
-
-  return NS_OK;
-}
-
-PRBool
-nsSimpleGlobalHistory::MatchExpiration(nsIMdbRow *row, PRTime* expirationDate)
-{
-  nsresult rv;
-  
-  // hidden and typed urls always match because they're invalid,
-  // so we want to expire them asap.  (if they were valid, they'd
-  // have been unhidden -- see AddExistingPageToDatabase)
-  if (HasCell(mEnv, row, kToken_HiddenColumn) && HasCell(mEnv, row, kToken_TypedColumn))
-    return PR_TRUE;
-
-  PRTime lastVisitedTime;
-  rv = GetRowValue(row, kToken_LastVisitDateColumn, &lastVisitedTime);
-
-  if (NS_FAILED(rv)) 
-    return PR_FALSE;
-  
-  PRBool matches = LL_CMP(lastVisitedTime, <, (*expirationDate));
-#if 0
-  if (matches)
-  {
-    nsCAutoString url;
-    GetRowValue(row, kToken_URLColumn, url);
-    printf("  Removing history row for %s\n", url.get());
-  }
-#endif
-  return matches;
-}
-
-
-
-PRBool
-nsSimpleGlobalHistory::MatchHost(nsIMdbRow *aRow,
-                           MatchHostData *hostInfo)
-{
-  mdb_err err;
-  nsresult rv;
-
-  mdbYarn yarn;
-  err = aRow->AliasCellYarn(mEnv, kToken_URLColumn, &yarn);
-  if (err != 0) return PR_FALSE;
-
-  nsCOMPtr uri;
-  // do smart zero-termination
-  const char* startPtr = (const char *)yarn.mYarn_Buf;
-  rv = NS_NewURI(getter_AddRefs(uri),
-                 Substring(startPtr, startPtr + yarn.mYarn_Fill));
-  if (NS_FAILED(rv)) return PR_FALSE;
-
-  nsCAutoString urlHost;
-  rv = uri->GetHost(urlHost);
-  if (NS_FAILED(rv)) return PR_FALSE;
-
-  if (PL_strcmp(urlHost.get(), hostInfo->host) == 0)
-    return PR_TRUE;
-
-  // now try for a domain match, if necessary
-  if (hostInfo->entireDomain) {
-    // do a reverse-search to match the end of the string
-    const char *domain = PL_strrstr(urlHost.get(), hostInfo->host);
-    
-    // now verify that we're matching EXACTLY the domain, and
-    // not some random string inside the hostname
-    if (domain && (PL_strcmp(domain, hostInfo->host) == 0))
-      return PR_TRUE;
-  }
-  
-  return PR_FALSE;
-}
-
-NS_IMETHODIMP
-nsSimpleGlobalHistory::RemoveAllPages()
-{
-  nsresult rv;
-
-  rv = RemoveMatchingRows(matchAllCallback, nsnull, PR_FALSE);
-  if (NS_FAILED(rv)) return rv;
-  
-  // Reset the file byte order.
-  rv = InitByteOrder(PR_TRUE);
-  if (NS_FAILED(rv)) return rv;
-
-  return Commit(kCompressCommit);
-}
-
-nsresult
-nsSimpleGlobalHistory::RemoveMatchingRows(rowMatchCallback aMatchFunc,
-                                    void *aClosure,
-                                    PRBool inNotify)
-{
-  NS_ENSURE_SUCCESS(OpenDB(), NS_ERROR_FAILURE);
-  if (!mTable) return NS_OK;
-
-  mdb_err err;
-  mdb_count count;
-  err = mTable->GetCount(mEnv, &count);
-  if (err != 0) return NS_ERROR_FAILURE;
-
-  if (!inNotify)
-    StartBatching();
-
-  // Begin the batch.
-  int marker;
-  err = mTable->StartBatchChangeHint(mEnv, &marker);
-  NS_ASSERTION(err == 0, "unable to start batch");
-  if (err != 0) return NS_ERROR_FAILURE;
-
-  // XXX from here until end batch, no early returns!
-  for (mdb_pos pos = count - 1; pos >= 0; --pos)
-  {
-    nsCOMPtr row;
-    err = mTable->PosToRow(mEnv, pos, getter_AddRefs(row));
-    NS_ASSERTION(err == 0, "unable to get row");
-    if (err != 0)
-      break;
-
-    NS_ASSERTION(row != nsnull, "no row");
-    if (! row)
-      continue;
-
-    // now we actually do the match. If this row doesn't match, loop again
-    if (!(aMatchFunc)(row, aClosure))
-      continue;
-
-    if (inNotify)
-      NotifyObserversItemRemoved(row);
-
-#if 0
-    nsCAutoString url;
-    GetRowValue(row, kToken_URLColumn, url);
-    printf("Removing row %s\n", url.get());
-#endif
-
-    // Officially cut the row *now*, before notifying any observers:
-    // that way, any re-entrant calls won't find the row.
-    err = mTable->CutRow(mEnv, row);
-    NS_ASSERTION(err == 0, "couldn't cut row");
-    if (err != 0)
-      continue;
-  
-    // possibly avoid leakage
-    err = row->CutAllColumns(mEnv);
-    NS_ASSERTION(err == 0, "couldn't cut all columns");
-    // we'll notify regardless of whether we could successfully
-    // CutAllColumns or not.
-    // XXX notify?
-  }
-  
-  // Finish the batch.
-  err = mTable->EndBatchChangeHint(mEnv, &marker);
-  NS_ASSERTION(err == 0, "error ending batch");
-
-  if (!inNotify)
-    EndBatching();
-
-  return ( err == 0) ? NS_OK : NS_ERROR_FAILURE;
-}
-
-NS_IMETHODIMP
-nsSimpleGlobalHistory::IsVisited(nsIURI* aURI, PRBool *_retval)
-{
-  NS_ENSURE_ARG_POINTER(aURI);
-
-  nsresult rv;
-  NS_ENSURE_SUCCESS(OpenDB(), NS_ERROR_NOT_INITIALIZED);
-
-  nsCAutoString URISpec;
-  rv = aURI->GetSpec(URISpec);
-  NS_ENSURE_SUCCESS(rv, rv);
-
-  rv = FindRow(kToken_URLColumn, URISpec.get(), nsnull);
-  *_retval = NS_SUCCEEDED(rv);
-  
-  // Hidden, typed URIs haven't really been visited yet. They've only
-  // been typed in and the actual load hasn't happened yet. We maintain
-  // the list of hidden+typed URIs in memory in mTypedHiddenURIs because
-  // the list will usually be small and checking the actual Mork row
-  // would require several dynamic memory allocations.
-  if (*_retval && mTypedHiddenURIs.Contains(URISpec))
-  {
-    *_retval = PR_FALSE;
-  }
-  
-  return NS_OK;
-}
-
-NS_IMETHODIMP
-nsSimpleGlobalHistory::GetLastPageVisited(nsACString& _retval)
-{ 
-  NS_ENSURE_SUCCESS(OpenDB(), NS_ERROR_FAILURE);
-
-  NS_ENSURE_STATE(mMetaRow);
-
-  mdb_err err = GetRowValue(mMetaRow, kToken_LastPageVisited, _retval);
-  NS_ENSURE_TRUE(err == 0, NS_ERROR_FAILURE);
-
-  return NS_OK;
-}
-
-#pragma mark -
-
-NS_IMETHODIMP
-nsSimpleGlobalHistory::GetMaxItemCount(PRUint32 *outCount)
-{
-  NS_ENSURE_ARG_POINTER(outCount);
-  NS_ENSURE_SUCCESS(OpenDB(), NS_ERROR_FAILURE);
-  if (!mTable) return NS_ERROR_FAILURE;
-
-  mdb_err err = mTable->GetCount(mEnv, outCount);
-  return (err == 0) ? NS_OK : NS_ERROR_FAILURE;
-}
-
-NS_IMETHODIMP
-nsSimpleGlobalHistory::GetItemEnumerator(nsISimpleEnumerator** outEnumerator)
-{
-  NS_ENSURE_ARG_POINTER(outEnumerator);
-  *outEnumerator = nsnull;
-
-  NS_ENSURE_SUCCESS(OpenDB(), NS_ERROR_FAILURE);
-  if (!mTable) return NS_ERROR_FAILURE;
-
-  nsMdbTableAllRowsEnumerator* allRowsEnum 
-      = new nsMdbTableAllRowsEnumerator(this, mTable, kToken_HiddenColumn);
-  
-  if (!allRowsEnum)
-    return NS_ERROR_FAILURE;
-  
-  nsresult rv = allRowsEnum->Init(mEnv);
-  if (NS_FAILED(rv)) {
-    delete allRowsEnum;
-    return rv;
-  }
-  
-  NS_ADDREF(*outEnumerator = allRowsEnum);
-  return NS_OK;
-}
-
-NS_IMETHODIMP
-nsSimpleGlobalHistory::Flush()
-{
-  Sync();
-  return NS_OK;
-}
-
-NS_IMETHODIMP
-nsSimpleGlobalHistory::AddObserver(nsIHistoryObserver* inObserver)
-{
-  if (mHistoryObservers.IndexOfObject(inObserver) == -1)
-    return mHistoryObservers.AppendObject(inObserver);
-    
-  return NS_OK;
-}
-
-NS_IMETHODIMP
-nsSimpleGlobalHistory::RemoveObserver(nsIHistoryObserver* inObserver)
-{
-  mHistoryObservers.RemoveObject(inObserver);
-  return NS_OK;
-}
-
-
-#pragma mark -
-
-// Set the byte order in the history file.  The given string value should
-// be either "BE" (big-endian) or "LE" (little-endian).
-nsresult
-nsSimpleGlobalHistory::SaveByteOrder(const char *aByteOrder)
-{
-  if (strcmp(aByteOrder, "BE") != 0 && strcmp(aByteOrder, "LE") != 0) {
-    NS_WARNING("Invalid byte order argument.");
-    return NS_ERROR_INVALID_ARG;
-  }
-  NS_ENSURE_STATE(mMetaRow);
-
-  mdb_err err = SetRowValue(mMetaRow, kToken_ByteOrder, aByteOrder);
-  NS_ENSURE_TRUE(err == 0, NS_ERROR_FAILURE);
-
-  return NS_OK;
-}
-
-// Get the file byte order.
-nsresult
-nsSimpleGlobalHistory::GetByteOrder(nsACString & aRetVal)
-{ 
-  NS_ENSURE_SUCCESS(OpenDB(), NS_ERROR_FAILURE);
-  NS_ENSURE_STATE(mMetaRow);
-
-  nsCAutoString byteOrder;
-  mdb_err err = GetRowValue(mMetaRow, kToken_ByteOrder, byteOrder);
-  NS_ENSURE_TRUE(err == 0, NS_ERROR_FAILURE);
-
-  aRetVal.Assign(byteOrder);
-  return NS_OK;
-}
-
-NS_IMETHODIMP
-nsSimpleGlobalHistory::HidePage(nsIURI *aURI)
-{
-  nsresult rv;
-  NS_ENSURE_ARG_POINTER(aURI);
-
-  nsCAutoString URISpec;
-  rv = aURI->GetSpec(URISpec);
-  NS_ENSURE_SUCCESS(rv, rv);
-  
-  if (URISpec.Length() > HISTORY_URI_LENGTH_MAX)
-     return NS_OK;
-
-  nsCOMPtr row;
-
-  rv = FindRow(kToken_URLColumn, URISpec.get(), getter_AddRefs(row));
-
-  if (NS_FAILED(rv)) {
-    // it hasn't been visited yet, but if one ever comes in, we need
-    // to hide it when it is visited
-    rv = AddURI(aURI, PR_FALSE, PR_FALSE, nsnull);
-    if (NS_FAILED(rv)) return rv;
-    
-    rv = FindRow(kToken_URLColumn, URISpec.get(), getter_AddRefs(row));
-    if (NS_FAILED(rv)) return rv;
-  }
-
-  rv = SetRowValue(row, kToken_HiddenColumn, 1);
-  if (NS_FAILED(rv)) return rv;
-
-  // now pretend as if this row was deleted (notify)
-
-  SetDirty();
-  return NS_OK;
-}
-
-NS_IMETHODIMP
-nsSimpleGlobalHistory::MarkPageAsTyped(nsIURI *aURI)
-{
-  nsCAutoString spec;
-  nsresult rv = aURI->GetSpec(spec);
-  if (NS_FAILED(rv)) return rv;
-
-  if (spec.Length() > HISTORY_URI_LENGTH_MAX)
-     return NS_OK;
-
-  nsCOMPtr row;
-  rv = FindRow(kToken_URLColumn, spec.get(), getter_AddRefs(row));
-  if (NS_FAILED(rv))
-  {
-    rv = AddNewPageToDatabase(spec.get(), PR_Now(), nsnull, getter_AddRefs(row));
-    NS_ENSURE_SUCCESS(rv, rv);
-
-    // We don't know if this is a valid URI yet. Hide it until it finishes
-    // loading.
-    SetRowValue(row, kToken_HiddenColumn, 1);
-    mTypedHiddenURIs.Put(spec);
-  }
-  
-  rv = SetRowValue(row, kToken_TypedColumn, 1);
-  if (NS_FAILED(rv)) return rv;
-
-  SetDirty();
-  return NS_OK;
-}
-
-NS_IMETHODIMP
-nsSimpleGlobalHistory::AddDocumentRedirect(nsIChannel *aOldChannel,
-                                           nsIChannel *aNewChannel,
-                                           PRInt32 aFlags,
-                                           PRBool aTopLevel)
-{
-  return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP
-nsSimpleGlobalHistory::SetURIGeckoFlags(nsIURI *aURI, PRUint32 aFlags)
-{
-  nsCAutoString spec;
-  nsresult rv = aURI->GetSpec(spec);
-  if (NS_FAILED(rv)) return rv;
-
-  nsCOMPtr row;
-  rv = FindRow(kToken_URLColumn, spec.get(), getter_AddRefs(row));
-  if (NS_FAILED(rv)) {
-    return rv;
-  }
-
-  rv = SetRowValue(row, kToken_GeckoFlagsColumn, (PRInt32)aFlags);
-  SetDirty();
-  return rv;
-}
-
-NS_IMETHODIMP
-nsSimpleGlobalHistory::GetURIGeckoFlags(nsIURI *aURI, PRUint32* aFlags)
-{
-  nsCAutoString spec;
-  nsresult rv = aURI->GetSpec(spec);
-  if (NS_FAILED(rv)) return rv;
-
-  nsCOMPtr row;
-  rv = FindRow(kToken_URLColumn, spec.get(), getter_AddRefs(row));
-  if (NS_FAILED(rv)) {
-    return rv;
-  }
-
-  if (!HasCell(mEnv, row, kToken_GeckoFlagsColumn))
-    return NS_ERROR_FAILURE;
-
-  PRInt32 val;
-  mdb_err err = GetRowValue(row, kToken_GeckoFlagsColumn, &val);
-  NS_ENSURE_TRUE(err == 0, NS_ERROR_FAILURE);
-  *aFlags = val;
-  return NS_OK;
-}
-
-//----------------------------------------------------------------------
-//
-// nsGlobalHistory
-//
-//   Miscellaneous implementation methods
-//
-
-nsresult
-nsSimpleGlobalHistory::Init()
-{
-  nsresult rv;
-
-  // we'd like to get this pref when we need it, but at that point,
-  // we can't get the pref service. register a pref observer so we update
-  // if the pref changes
-
-  if (!gPrefBranch)
-  {
-    nsCOMPtr prefs = do_GetService(NS_PREFSERVICE_CONTRACTID, &rv);
-    NS_ENSURE_SUCCESS(rv, rv);
-    rv = prefs->GetBranch(PREF_BRANCH_BASE, &gPrefBranch);
-    NS_ENSURE_SUCCESS(rv, rv);
-  }
-
-  gPrefBranch->GetIntPref(PREF_BROWSER_HISTORY_EXPIRE_DAYS, &mExpireDays);  
-  gPrefBranch->GetBoolPref(PREF_AUTOCOMPLETE_ONLY_TYPED, &mAutocompleteOnlyTyped);
-  nsCOMPtr pbi = do_QueryInterface(gPrefBranch);
-  if (pbi) {
-    pbi->AddObserver(PREF_AUTOCOMPLETE_ONLY_TYPED, this, PR_FALSE);
-    pbi->AddObserver(PREF_BROWSER_HISTORY_EXPIRE_DAYS, this, PR_FALSE);
-  }
-
-  if (gRefCnt++ == 0)
-  {
-  }
-
-  // register to observe profile changes
-  nsCOMPtr observerService = 
-           do_GetService("@mozilla.org/observer-service;1", &rv);
-  NS_ASSERTION(observerService, "failed to get observer service");
-  if (observerService) {
-    observerService->AddObserver(this, "profile-before-change", PR_TRUE);
-    observerService->AddObserver(this, "profile-do-change", PR_TRUE);
-  }
-
-  mTypedHiddenURIs.Init(3);
-
-  return NS_OK;
-}
-
-
-nsresult
-nsSimpleGlobalHistory::OpenDB()
-{
-  nsresult rv;
-
-  if (mStore) return NS_OK;
-  
-  nsCOMPtr  historyFile;
-  rv = NS_GetSpecialDirectory(NS_APP_HISTORY_50_FILE, getter_AddRefs(historyFile));
-  NS_ENSURE_SUCCESS(rv, rv);
-
-  nsCOMPtr  factoryfactory = do_GetService(NS_MORK_CONTRACTID, &rv);
-  NS_ENSURE_SUCCESS(rv, rv);
-
-  rv = factoryfactory->GetMdbFactory(&gMdbFactory);
-  NS_ENSURE_SUCCESS(rv, rv);
-
-  mdb_err err;
-
-  err = gMdbFactory->MakeEnv(nsnull, &mEnv);
-  mEnv->SetAutoClear(PR_TRUE);
-  NS_ASSERTION((err == 0), "unable to create mdb env");
-  if (err != 0) return NS_ERROR_FAILURE;
-
-  // MDB requires native file paths
-
-  nsCAutoString filePath;
-  rv = historyFile->GetNativePath(filePath);
-  NS_ENSURE_SUCCESS(rv, rv);
-
-  PRBool exists = PR_TRUE;
-  historyFile->Exists(&exists);
-
-  if (exists && NS_FAILED(rv = OpenExistingFile(gMdbFactory, filePath.get())))
-  {
-    // we couldn't open the file, so it might be corrupt.
-    // attempt to delete the file, but ignore the error
-    NS_ASSERTION(0, "Failed to open history.dat file");
-#if DEBUG
-    nsCOMPtr fileCopy;
-    historyFile->Clone(getter_AddRefs(fileCopy));
-    fileCopy->SetLeafName(NS_LITERAL_STRING("history_BAD.dat"));
-    fileCopy->CreateUnique(nsIFile::NORMAL_FILE_TYPE, 0600);
-    nsString uniqueFileName;
-    fileCopy->GetLeafName(uniqueFileName);
-    historyFile->MoveTo(nsnull, uniqueFileName);
-#else
-    historyFile->Remove(PR_FALSE);
-#endif
-    // generate a new history file.
-    exists = PR_FALSE;
-  } 
-  
-  if (!exists)
-    rv = OpenNewFile(gMdbFactory, filePath.get());
-
-  NS_ENSURE_SUCCESS(rv, rv);
-
-  // get the initial filesize. Used in Commit() to determine type of commit.
-  rv = historyFile->GetFileSize(&mFileSizeOnDisk);
-  if (NS_FAILED(rv)) {
-    LL_I2L(mFileSizeOnDisk, 0);
-  }
-  
-  // See if we need to byte-swap.
-  InitByteOrder(PR_FALSE);
-
-  NotifyObserversHistoryLoaded();
-  return NS_OK;
-}
-
-nsresult
-nsSimpleGlobalHistory::OpenExistingFile(nsIMdbFactory *factory, const char *filePath)
-{
-  mdb_err err;
-  nsresult rv;
-  mdb_bool canopen = 0;
-  mdbYarn outfmt = { nsnull, 0, 0, 0, 0, nsnull };
-
-  nsIMdbHeap* dbHeap = 0;
-  mdb_bool dbFrozen = mdbBool_kFalse; // not readonly, we want modifiable
-  nsCOMPtr oldFile; // ensures file is released
-  err = factory->OpenOldFile(mEnv, dbHeap, filePath,
-                             dbFrozen, getter_AddRefs(oldFile));
-
-  // don't assert, the file might just not be there
-  if ((err !=0) || !oldFile) return NS_ERROR_FAILURE;
-
-  err = factory->CanOpenFilePort(mEnv, oldFile, // the file to investigate
-                                 &canopen, &outfmt);
-
-  // XXX possible that format out of date, in which case we should
-  // just re-write the file.
-  if ((err !=0) || !canopen) return NS_ERROR_FAILURE;
-
-  nsIMdbThumb* thumb = nsnull;
-  mdbOpenPolicy policy = { { 0, 0 }, 0, 0 };
-
-  err = factory->OpenFileStore(mEnv, dbHeap, oldFile, &policy, &thumb);
-  if ((err !=0) || !thumb) return NS_ERROR_FAILURE;
-
-  mdb_count total;
-  mdb_count current;
-  mdb_bool done;
-  mdb_bool broken;
-
-  do {
-    err = thumb->DoMore(mEnv, &total, ¤t, &done, &broken);
-  } while ((err == 0) && !broken && !done);
-
-  if ((err == 0) && done) {
-    err = factory->ThumbToOpenStore(mEnv, thumb, &mStore);
-  }
-
-  NS_IF_RELEASE(thumb);
-
-  if (err != 0) return NS_ERROR_FAILURE;
-
-  rv = CreateTokens();
-
-  NS_ENSURE_SUCCESS(rv, rv);
-
-  mdbOid oid = { kToken_HistoryRowScope, 1 };
-  err = mStore->GetTable(mEnv, &oid, &mTable);
-  NS_ENSURE_TRUE(err == 0, NS_ERROR_FAILURE);
-  if (!mTable) {
-    NS_WARNING("Your history file is somehow corrupt.. deleting it.");
-    return NS_ERROR_FAILURE;
-  }
-
-  err = mTable->GetMetaRow(mEnv, &oid, nsnull, getter_AddRefs(mMetaRow));
-  if (err != 0)
-    NS_WARNING("Could not get meta row\n");
-
-  CheckHostnameEntries();
-
-  if (err != 0) return NS_ERROR_FAILURE;
-  
-  return NS_OK;
-}
-
-nsresult
-nsSimpleGlobalHistory::OpenNewFile(nsIMdbFactory *factory, const char *filePath)
-{
-  nsresult rv;
-  mdb_err err;
-  
-  nsIMdbHeap* dbHeap = 0;
-  nsCOMPtr newFile; // ensures file is released
-  err = factory->CreateNewFile(mEnv, dbHeap, filePath,
-                               getter_AddRefs(newFile));
-
-  if ((err != 0) || !newFile) return NS_ERROR_FAILURE;
-  
-  mdbOpenPolicy policy = { { 0, 0 }, 0, 0 };
-  err = factory->CreateNewFileStore(mEnv, dbHeap, newFile, &policy, &mStore);
-  
-  if (err != 0) return NS_ERROR_FAILURE;
-  
-  rv = CreateTokens();
-  NS_ENSURE_SUCCESS(rv, rv);
-
-  // Create the one and only table in the history db
-  err = mStore->NewTable(mEnv, kToken_HistoryRowScope, kToken_HistoryKind, PR_TRUE, nsnull, &mTable);
-  if (err != 0) return NS_ERROR_FAILURE;
-  if (!mTable) return NS_ERROR_FAILURE;
-
-  // Create the meta row.
-  mdbOid oid = { kToken_HistoryRowScope, 1 };
-  err = mTable->GetMetaRow(mEnv, &oid, nsnull, getter_AddRefs(mMetaRow));
-  if (err != 0)
-    NS_WARNING("Could not get meta row\n");
-
-  // Force a commit now to get it written out.
-  nsCOMPtr thumb;
-  err = mStore->LargeCommit(mEnv, getter_AddRefs(thumb));
-  if (err != 0) return NS_ERROR_FAILURE;
-
-  mdb_count total;
-  mdb_count current;
-  mdb_bool done;
-  mdb_bool broken;
-
-  do {
-    err = thumb->DoMore(mEnv, &total, ¤t, &done, &broken);
-  } while ((err == 0) && !broken && !done);
-
-  if ((err != 0) || !done) return NS_ERROR_FAILURE;
-
-  return NS_OK;
-}
-
-// Set the history file byte order if necessary, and determine if
-// we need to byte-swap Unicode values.
-// If the force argument is true, the file byte order will be set
-// to that of this machine.
-nsresult
-nsSimpleGlobalHistory::InitByteOrder(PRBool aForce)
-{
-#ifdef IS_LITTLE_ENDIAN
-  NS_NAMED_LITERAL_CSTRING(machine_byte_order, "LE");
-#endif
-#ifdef IS_BIG_ENDIAN
-  NS_NAMED_LITERAL_CSTRING(machine_byte_order, "BE");
-#endif
-  nsCAutoString fileByteOrder;
-  nsresult rv = NS_OK;
-
-  if (!aForce)
-    rv = GetByteOrder(fileByteOrder);
-  if (aForce || NS_FAILED(rv) ||
-      !(fileByteOrder.EqualsLiteral("BE") ||
-        fileByteOrder.EqualsLiteral("LE"))) 
-  {
-    // Byte order is not yet set, or needs to be reset; initialize it.
-    mReverseByteOrder = PR_FALSE;
-    rv = SaveByteOrder(machine_byte_order.get());
-    if (NS_FAILED(rv))
-      return rv;
-  }
-  else
-    mReverseByteOrder = !fileByteOrder.Equals(machine_byte_order);
-
-  return NS_OK;
-}
-
-// for each row, we need to parse out the hostname from the url
-// then store it in a column
-nsresult
-nsSimpleGlobalHistory::CheckHostnameEntries()
-{
-  nsresult rv = NS_OK;
-
-  mdb_err err;
-
-  nsCOMPtr cursor;
-  nsCOMPtr row;
-
-  err = mTable->GetTableRowCursor(mEnv, -1, getter_AddRefs(cursor));
-  if (err != 0) return NS_ERROR_FAILURE;
-
-  int marker;
-  err = mTable->StartBatchChangeHint(mEnv, &marker);
-  NS_ASSERTION(err == 0, "unable to start batch");
-  if (err != 0) return NS_ERROR_FAILURE;
-  
-  mdb_pos pos;
-  err = cursor->NextRow(mEnv, getter_AddRefs(row), &pos);
-  if (err != 0) return NS_ERROR_FAILURE;
-
-  // comment out this code to rebuild the hostlist at startup
-#if 1
-  // bail early if the first row has a hostname
-  if (row) {
-    nsCAutoString hostname;
-    rv = GetRowValue(row, kToken_HostnameColumn, hostname);
-    if (NS_SUCCEEDED(rv) && !hostname.IsEmpty())
-      return NS_OK;
-  }
-#endif
-  
-  // cached variables used in the loop
-  nsCAutoString url;
-  nsCAutoString hostname;
-
-  nsCOMPtr ioService = do_GetService(NS_IOSERVICE_CONTRACTID);
-  if (!ioService) return NS_ERROR_FAILURE;
-  
-
-  while (row) {
-#if 0
-    rv = GetRowValue(row, kToken_URLColumn, url);
-    if (NS_FAILED(rv)) break;
-
-    ioService->ExtractUrlPart(url, nsIIOService::url_Host, 0, 0, getter_Copies(hostname));
-
-    SetRowValue(row, kToken_HostnameColumn, hostname);
-    
-#endif
-
-    // to be turned on when we're confident in mork's ability
-    // to handle yarn forms properly
-#if 0
-    nsAutoString title;
-    rv = GetRowValue(row, kToken_NameColumn, title);
-    // reencode back into UTF8
-    if (NS_SUCCEEDED(rv))
-      SetRowValue(row, kToken_NameColumn, title.get());
-#endif
-    cursor->NextRow(mEnv, getter_AddRefs(row), &pos);
-  }
-
-  // Finish the batch.
-  err = mTable->EndBatchChangeHint(mEnv, &marker);
-  NS_ASSERTION(err == 0, "error ending batch");
-  
-  return rv;
-}
-
-nsresult
-nsSimpleGlobalHistory::CreateTokens()
-{
-  mdb_err err;
-
-  NS_PRECONDITION(mStore != nsnull, "not initialized");
-  if (! mStore)
-    return NS_ERROR_NOT_INITIALIZED;
-
-  err = mStore->StringToToken(mEnv, "ns:history:db:row:scope:history:all", &kToken_HistoryRowScope);
-  if (err != 0) return NS_ERROR_FAILURE;
-  
-  err = mStore->StringToToken(mEnv, "ns:history:db:table:kind:history", &kToken_HistoryKind);
-  if (err != 0) return NS_ERROR_FAILURE;
-  
-  err = mStore->StringToToken(mEnv, "URL", &kToken_URLColumn);
-  if (err != 0) return NS_ERROR_FAILURE;
-
-  err = mStore->StringToToken(mEnv, "Referrer", &kToken_ReferrerColumn);
-  if (err != 0) return NS_ERROR_FAILURE;
-
-  err = mStore->StringToToken(mEnv, "LastVisitDate", &kToken_LastVisitDateColumn);
-  if (err != 0) return NS_ERROR_FAILURE;
-
-  err = mStore->StringToToken(mEnv, "FirstVisitDate", &kToken_FirstVisitDateColumn);
-  if (err != 0) return NS_ERROR_FAILURE;
-
-  err = mStore->StringToToken(mEnv, "VisitCount", &kToken_VisitCountColumn);
-  if (err != 0) return NS_ERROR_FAILURE;
-
-  err = mStore->StringToToken(mEnv, "Name", &kToken_NameColumn);
-  if (err != 0) return NS_ERROR_FAILURE;
-
-  err = mStore->StringToToken(mEnv, "Hostname", &kToken_HostnameColumn);
-  if (err != 0) return NS_ERROR_FAILURE;
-  
-  err = mStore->StringToToken(mEnv, "Hidden", &kToken_HiddenColumn);
-  if (err != 0) return NS_ERROR_FAILURE;
-
-  err = mStore->StringToToken(mEnv, "Typed", &kToken_TypedColumn);
-  if (err != 0) return NS_ERROR_FAILURE;
-
-  err = mStore->StringToToken(mEnv, "GeckoFlags", &kToken_GeckoFlagsColumn);
-  if (err != 0) return NS_ERROR_FAILURE;
-
-  // meta-data tokens
-  err = mStore->StringToToken(mEnv, "LastPageVisited", &kToken_LastPageVisited);
-  err = mStore->StringToToken(mEnv, "ByteOrder", &kToken_ByteOrder);
-
-  return NS_OK;
-}
-
-
-nsresult
-nsSimpleGlobalHistory::Commit(eCommitType commitType)
-{
-  if (!mStore || !mTable)
-    return NS_OK;
-
-  nsresult	err = NS_OK;
-  nsCOMPtr thumb;
-
-  if (commitType == kLargeCommit || commitType == kSessionCommit)
-  {
-    mdb_percent outActualWaste = 0;
-    mdb_bool outShould;
-    if (mStore) 
-    {
-      // check how much space would be saved by doing a compress commit.
-      // If it's more than 30%, go for it.
-      // N.B. - I'm not sure this calls works in Mork for all cases.
-      err = mStore->ShouldCompress(mEnv, 30, &outActualWaste, &outShould);
-      if (NS_SUCCEEDED(err) && outShould)
-      {
-          commitType = kCompressCommit;
-      }
-      else
-      {
-        mdb_count count;
-        err = mTable->GetCount(mEnv, &count);
-        // Since Mork's shouldCompress doesn't work, we need to look
-        // at the file size and the number of rows, and make a stab
-        // at guessing if we've got a lot of deleted rows. The file
-        // size is the size when we opened the db, and we really want
-        // it to be the size after we've written out the file,
-        // but I think this is a good enough approximation.
-        if (count > 0)
-        {
-          PRInt64 numRows;
-          PRInt64 bytesPerRow;
-          PRInt64 desiredAvgRowSize;
-
-          LL_UI2L(numRows, count);
-          LL_DIV(bytesPerRow, mFileSizeOnDisk, numRows);
-          LL_I2L(desiredAvgRowSize, 400);
-          if (LL_CMP(bytesPerRow, >, desiredAvgRowSize))
-            commitType = kCompressCommit;
-        }
-      }
-    }
-  }
-
-  switch (commitType)
-  {
-    case kLargeCommit:
-      err = mStore->LargeCommit(mEnv, getter_AddRefs(thumb));
-      break;
-    case kSessionCommit:
-      err = mStore->SessionCommit(mEnv, getter_AddRefs(thumb));
-      break;
-    case kCompressCommit:
-      err = mStore->CompressCommit(mEnv, getter_AddRefs(thumb));
-      break;
-  }
-  if (err == 0) {
-    mdb_count total;
-    mdb_count current;
-    mdb_bool done;
-    mdb_bool broken;
-
-    do {
-      err = thumb->DoMore(mEnv, &total, ¤t, &done, &broken);
-    } while ((err == 0) && !broken && !done);
-  }
-
-  if (err != 0) // mork doesn't return NS error codes. Yet.
-    return NS_ERROR_FAILURE;
-
-  return NS_OK;
-}
-
-// if notify is true, we'll notify observers of deleted rows.
-// If we're shutting down history, then (maybe?) we don't
-// need or want to notify rdf.
-nsresult
-nsSimpleGlobalHistory::ExpireEntries(PRBool inNotify)
-{
-  if (mExpireTimer)
-  {
-    mExpireTimer->Cancel();
-    mExpireTimer = nsnull;
-  }
-  
-  PRTime expirationDate;
-  PRInt64 microSecondsPerSecond, secondsInDays, microSecondsInExpireDays;
-  
-  LL_I2L(microSecondsPerSecond, PR_USEC_PER_SEC);
-  LL_UI2L(secondsInDays, 60 * 60 * 24 * mExpireDays);
-  LL_MUL(microSecondsInExpireDays, secondsInDays, microSecondsPerSecond);
-  LL_SUB(expirationDate, PR_Now(), microSecondsInExpireDays);
-
-  MatchExpirationData expiration;
-  expiration.history = this;
-  expiration.expirationDate = expirationDate;
-  
-  return RemoveMatchingRows(matchExpirationCallback, (void *)&expiration, inNotify);
-}
-
-nsresult
-nsSimpleGlobalHistory::SetPendingExpireEntries()
-{
-  if (mExpireTimer)
-    return NS_OK;   // we've already queued it
-
-  nsresult rv;
-  mExpireTimer = do_CreateInstance("@mozilla.org/timer;1", &rv);
-  if (NS_FAILED(rv)) return rv;
-  
-  return mExpireTimer->InitWithFuncCallback(FireExpireTimer, this, 0, nsITimer::TYPE_ONE_SHOT);
-}
-
-void
-nsSimpleGlobalHistory::Sync()
-{
-  if (mDirty)
-    Commit(mPagesRemoved ? kCompressCommit : kLargeCommit);
-  
-  mPagesRemoved = PR_FALSE;
-  mDirty = PR_FALSE;
-  mSyncTimer = nsnull;
-}
-
-// when we're dirty, we want to make sure we sync again soon,
-// but make sure that we don't keep syncing if someone is surfing
-// a lot, so cancel the existing timer if any is still waiting to fire
-nsresult
-nsSimpleGlobalHistory::SetDirty()
-{
-  nsresult rv;
-
-  if (mSyncTimer)
-    mSyncTimer->Cancel();
-
-  if (!mSyncTimer) {
-    mSyncTimer = do_CreateInstance("@mozilla.org/timer;1", &rv);
-    if (NS_FAILED(rv)) return rv;
-  }
-  
-  mDirty = PR_TRUE;
-  mSyncTimer->InitWithFuncCallback(FireSyncTimer, this, HISTORY_SYNC_TIMEOUT, nsITimer::TYPE_ONE_SHOT);
-
-  return NS_OK;
-}
-
-/* static */
-void
-nsSimpleGlobalHistory::FireSyncTimer(nsITimer *aTimer, void *aClosure)
-{
-  ((nsSimpleGlobalHistory *)aClosure)->Sync();
-}
-
-/* static */
-void
-nsSimpleGlobalHistory::FireExpireTimer(nsITimer *aTimer, void *aClosure)
-{
-  ((nsSimpleGlobalHistory *)aClosure)->ExpireEntries(PR_FALSE);
-}
-
-nsresult
-nsSimpleGlobalHistory::CloseDB()
-{
-  if (!mStore)
-    return NS_OK;
-
-  NotifyObserversHistoryClosing();
-
-  ExpireEntries(PR_FALSE /* don't notify */);
-  Commit(kSessionCommit);
-
-  // order is important here - logically smallest objects first
-  mMetaRow = nsnull;
-  
-  if (mTable)
-    mTable->Release();
-
-  mStore->Release();
-
-  if (mEnv)
-    mEnv->Release();
-
-  mTable = nsnull;
-  mEnv = nsnull;
-  mStore = nsnull;
-
-  return NS_OK;
-}
-
-nsresult
-nsSimpleGlobalHistory::FindRow(mdb_column aCol,
-                         const char *aValue, nsIMdbRow **aResult)
-{
-  if (! mStore)
-    return NS_ERROR_NOT_INITIALIZED;
-
-  mdb_err err;
-  PRInt32 len = PL_strlen(aValue);
-  mdbYarn yarn = { (void*) aValue, len, len, 0, 0, nsnull };
-
-  mdbOid rowId;
-  nsCOMPtr row;
-  if (aResult) {
-    err = mStore->FindRow(mEnv, kToken_HistoryRowScope,
-                          aCol, &yarn,
-                          &rowId, getter_AddRefs(row));
-
-    if (!row) return NS_ERROR_NOT_AVAILABLE;
-  } else {
-    err = mStore->FindRow(mEnv, kToken_HistoryRowScope,
-                          aCol, &yarn, &rowId, nsnull);
-  }
-
-  // make sure it's actually stored in the main table
-  mdb_bool hasRow;
-  mTable->HasOid(mEnv, &rowId, &hasRow);
-
-  if (!hasRow) return NS_ERROR_NOT_AVAILABLE;
-  
-  if (aResult) {
-    *aResult = row;
-    (*aResult)->AddRef();
-  }
-    
-  return NS_OK;
-}
-
-mdb_column
-nsSimpleGlobalHistory::TokenForColumn(EColumn inColumn)
-{
-  switch (inColumn)
-  {
-    case eColumnURL:                return kToken_URLColumn;
-    case eColumnReferrer:           return kToken_ReferrerColumn;
-    case eColumnLastVisitDate:      return kToken_LastVisitDateColumn;
-    case eColumnFirstVisitDate:     return kToken_FirstVisitDateColumn;
-    case eColumnVisitCount:         return kToken_VisitCountColumn;
-    case eColumnTitle:              return kToken_NameColumn;
-    case eColumnHostname:           return kToken_HostnameColumn;
-    case eColumnHidden:             return kToken_HiddenColumn;
-    case eColumnTyped:              return kToken_TypedColumn;
-    default:
-      NS_ERROR("Unknown column type");
-  }
-  return 0;
-}
-
-//
-// determines if the row matches the given terms, used above
-//
-PRBool
-nsSimpleGlobalHistory::RowMatches(nsIMdbRow *aRow, SearchQueryData *aQuery)
-{
-  PRUint32 length = aQuery->terms.Count();
-  PRUint32 i;
-
-  for (i = 0; i < length; i++)
-  {
-    HistorySearchTerm *term = (HistorySearchTerm*)aQuery->terms[i];
-
-    if (!term->datasource.Equals("history"))
-      continue;                 // we only match against history queries
-    
-    // use callback if it exists
-    if (term->match) {
-      // queue up some values just in case callback needs it
-      // (how would we do this dynamically?)
-      MatchSearchTermData matchSearchTerm = { mEnv, mStore, term, PR_FALSE, 0, 0 };
-      
-      if (!term->match(aRow, (void *)&matchSearchTerm))
-        return PR_FALSE;
-    } else {
-      mdb_err err;
-
-      mdb_column property_column;
-      nsCAutoString property_name(term->property);
-      property_name.Append(char(0));
-      
-      err = mStore->QueryToken(mEnv, property_name.get(), &property_column);
-      if (err != 0) {
-        NS_WARNING("Unrecognized column!");
-        continue;               // assume we match???
-      }
-      
-      // match the term directly against the column?
-      mdbYarn yarn;
-      err = aRow->AliasCellYarn(mEnv, property_column, &yarn);
-      if (err != 0 || !yarn.mYarn_Buf) return PR_FALSE;
-
-      const char* startPtr;
-      PRInt32 yarnLength = yarn.mYarn_Fill;
-      nsCAutoString titleStr;
-      if (property_column == kToken_NameColumn) {
-        AppendUTF16toUTF8(Substring((const PRUnichar*)yarn.mYarn_Buf,
-                                    (const PRUnichar*)yarn.mYarn_Buf + yarnLength),
-                          titleStr);
-        startPtr = titleStr.get();
-        yarnLength = titleStr.Length();
-      }
-      else {
-        // account for null strings
-        if (yarn.mYarn_Buf)
-          startPtr = (const char *)yarn.mYarn_Buf;
-        else 
-          startPtr = "";
-      }
-      
-      const nsASingleFragmentCString& rowVal =
-          Substring(startPtr, startPtr + yarnLength);
-
-      // set up some iterators
-      nsASingleFragmentCString::const_iterator start, end;
-      rowVal.BeginReading(start);
-      rowVal.EndReading(end);
-  
-      nsCAutoString utf8Value;
-      CopyUTF16toUTF8(term->text, utf8Value);
-      
-      if (term->method.Equals("is")) {
-        if (!utf8Value.Equals(rowVal, nsCaseInsensitiveCStringComparator()))
-          return PR_FALSE;
-      }
-
-      else if (term->method.Equals("isnot")) {
-        if (utf8Value.Equals(rowVal, nsCaseInsensitiveCStringComparator()))
-          return PR_FALSE;
-      }
-
-      else if (term->method.Equals("contains")) {
-        if (!FindInReadable(utf8Value, start, end, nsCaseInsensitiveCStringComparator()))
-          return PR_FALSE;
-      }
-
-      else if (term->method.Equals("doesntcontain")) {
-        if (FindInReadable(utf8Value, start, end, nsCaseInsensitiveCStringComparator()))
-          return PR_FALSE;
-      }
-
-      else if (term->method.Equals("startswith")) {
-        // need to make sure that the found string is 
-        // at the beginning of the string
-        nsACString::const_iterator real_start = start;
-        if (!(FindInReadable(utf8Value, start, end, nsCaseInsensitiveCStringComparator()) &&
-              real_start == start))
-          return PR_FALSE;
-      }
-
-      else if (term->method.Equals("endswith")) {
-        // need to make sure that the found string ends
-        // at the end of the string
-        nsACString::const_iterator real_end = end;
-        if (!(RFindInReadable(utf8Value, start, end, nsCaseInsensitiveCStringComparator()) &&
-              real_end == end))
-          return PR_FALSE;
-      }
-
-      else {
-        NS_WARNING("Unrecognized search method in SearchEnumerator::RowMatches");
-        // don't handle other match types like isgreater/etc yet,
-        // so assume the match failed and bail
-        return PR_FALSE;
-      }
-      
-    }
-  }
-  
-  // we've gone through each term and didn't bail, so they must have
-  // all matched!
-  return PR_TRUE;
-}
-
-
-
-#pragma mark -
-
-NS_IMETHODIMP
-nsSimpleGlobalHistory::Observe(nsISupports *aSubject, 
-                         const char *aTopic,
-                         const PRUnichar *aSomeData)
-{
-  nsresult rv;
-  // pref changing - update member vars
-  if (!nsCRT::strcmp(aTopic, "nsPref:changed")) {
-    NS_ENSURE_STATE(gPrefBranch);
-
-    // expiration date
-    if (!nsCRT::strcmp(aSomeData, NS_LITERAL_STRING(PREF_BROWSER_HISTORY_EXPIRE_DAYS).get()))
-    {
-      PRInt32 newExpireDays;
-      gPrefBranch->GetIntPref(PREF_BROWSER_HISTORY_EXPIRE_DAYS, &newExpireDays);
-      if (mExpireDays != newExpireDays)
-      {
-        mExpireDays = newExpireDays;
-        SetPendingExpireEntries();
-      }
-    }
-    else if (!nsCRT::strcmp(aSomeData, NS_LITERAL_STRING(PREF_AUTOCOMPLETE_ONLY_TYPED).get())) {
-      gPrefBranch->GetBoolPref(PREF_AUTOCOMPLETE_ONLY_TYPED, &mAutocompleteOnlyTyped);
-    }
-  }
-  else if (!nsCRT::strcmp(aTopic, "profile-before-change")) {
-    rv = CloseDB();    
-    if (!nsCRT::strcmp(aSomeData, NS_LITERAL_STRING("shutdown-cleanse").get())) {
-      nsCOMPtr  historyFile;
-      rv = NS_GetSpecialDirectory(NS_APP_HISTORY_50_FILE, getter_AddRefs(historyFile));
-      if (NS_SUCCEEDED(rv))
-        rv = historyFile->Remove(PR_FALSE);
-    }
-  }
-  else if (!nsCRT::strcmp(aTopic, "profile-do-change"))
-    rv = OpenDB();
-
-  return NS_OK;
-}
-
-#pragma mark -
-
-
-//----------------------------------------------------------------------
-//
-// HistoryAutoCompleteEnumerator
-//
-//   Implementation
-
-// HistoryAutoCompleteEnumerator - for searching for a partial url match  
-class HistoryAutoCompleteEnumerator : public nsHistoryMdbTableEnumerator
-{
-protected:
-  mdb_column mURLColumn;
-  mdb_column mHiddenColumn;
-  mdb_column mTypedColumn;
-  mdb_column mCommentColumn;
-  AutocompleteExcludeData* mExclude;
-  const nsACString& mSelectValue;
-  PRBool mMatchOnlyTyped;
-
-public:
-  HistoryAutoCompleteEnumerator(nsSimpleGlobalHistory* aHistory,
-                                nsIMdbTable* aTable,
-                                mdb_column aURLColumn,
-                         mdb_column aCommentColumn,
-                         mdb_column aHiddenColumn,
-                         mdb_column aTypedColumn,
-                         PRBool aMatchOnlyTyped,
-                         const nsACString& aSelectValue,
-                         AutocompleteExcludeData* aExclude) :
-    nsHistoryMdbTableEnumerator(aHistory, aTable),
-    mURLColumn(aURLColumn),
-    mHiddenColumn(aHiddenColumn),
-    mTypedColumn(aTypedColumn),
-    mCommentColumn(aCommentColumn),
-    mExclude(aExclude),
-    mSelectValue(aSelectValue), 
-    mMatchOnlyTyped(aMatchOnlyTyped) 
-  {}
-
-protected:
-  virtual PRBool    IsResult(nsIMdbRow* aRow);
-};
-
-
-PRBool
-HistoryAutoCompleteEnumerator::IsResult(nsIMdbRow* aRow)
-{
-  if (!HasCell(mEnv, aRow, mTypedColumn))
-  {
-    if (mMatchOnlyTyped || HasCell(mEnv, aRow, mHiddenColumn))
-      return PR_FALSE;
-  }
-
-  nsCAutoString url;
-  mHistory->GetRowValue(aRow, mURLColumn, url);
-  return mHistory->AutoCompleteCompare(url, mSelectValue, mExclude);
-}
-
-// Size of visit count boost to give to urls which are sites or paths
-#define AUTOCOMPLETE_NONPAGE_VISIT_COUNT_BOOST 5
-
-#pragma mark -
-
-//----------------------------------------------------------------------
-//
-// nsIAutoCompleteSession implementation
-//
-
-NS_IMETHODIMP 
-nsSimpleGlobalHistory::OnStartLookup(const PRUnichar *searchString,
-                               nsIAutoCompleteResults *previousSearchResult,
-                               nsIAutoCompleteListener *listener)
-{
-  NS_ASSERTION(searchString, "searchString can't be null, fix your caller");
-  NS_ENSURE_ARG_POINTER(listener);
-  NS_ENSURE_STATE(gPrefBranch);
-
-  NS_ENSURE_SUCCESS(OpenDB(), NS_ERROR_FAILURE);
-
-  PRBool enabled = PR_FALSE;
-  gPrefBranch->GetBoolPref(PREF_AUTOCOMPLETE_ENABLED, &enabled);      
-
-  if (!enabled || searchString[0] == 0) {
-    listener->OnAutoComplete(nsnull, nsIAutoCompleteStatus::ignored);
-    return NS_OK;
-  }
-  
-  nsresult rv = NS_OK;
-  nsCOMPtr results;
-  results = do_CreateInstance(NS_AUTOCOMPLETERESULTS_CONTRACTID, &rv);
-  NS_ENSURE_SUCCESS(rv, rv);
-
-  AutoCompleteStatus status = nsIAutoCompleteStatus::failed;
-
-  // if the search string is empty after it has had prefixes removed, then 
-  // there is no need to proceed with the search
-  nsCAutoString cSearchString = NS_ConvertUTF16toUTF8(searchString);
-  nsCAutoString cutString = cSearchString;
-  AutoCompleteCutPrefix(cutString, nsnull);
-  if (cutString.IsEmpty()) {
-    listener->OnAutoComplete(results, status);
-    return NS_OK;
-  }
-  
-  // pass string through filter and then determine which prefixes to exclude
-  // when chopping prefixes off of history urls during comparison
-  nsCAutoString filtered;
-  AutoCompletePrefilter(cSearchString, filtered);
-  
-  AutocompleteExcludeData exclude;
-  AutoCompleteGetExcludeInfo(filtered, &exclude);
-  
-  // perform the actual search here
-  rv = AutoCompleteSearch(filtered, &exclude, previousSearchResult, results);
-
-  // describe the search results
-  if (NS_SUCCEEDED(rv)) {
-  
-    results->SetSearchString(searchString);
-    results->SetDefaultItemIndex(0);
-  
-    // determine if we have found any matches or not
-    nsCOMPtr array;
-    rv = results->GetItems(getter_AddRefs(array));
-    if (NS_SUCCEEDED(rv)) {
-      PRUint32 nbrOfItems;
-      rv = array->Count(&nbrOfItems);
-      if (NS_SUCCEEDED(rv)) {
-        if (nbrOfItems >= 1) {
-          status = nsIAutoCompleteStatus::matchFound;
-        } else {
-          status = nsIAutoCompleteStatus::noMatch;
-        }
-      }
-    }
-    
-    // notify the listener
-    listener->OnAutoComplete(results, status);
-  }
-  
-  return NS_OK;
-}
-
-
-NS_IMETHODIMP
-nsSimpleGlobalHistory::OnStopLookup()
-{
-  return NS_OK;
-}
-
-NS_IMETHODIMP
-nsSimpleGlobalHistory::OnAutoComplete(const PRUnichar *searchString,
-                                nsIAutoCompleteResults *previousSearchResult,
-                                nsIAutoCompleteListener *listener)
-{
-  return NS_OK;
-}
-
-//----------------------------------------------------------------------
-//
-// AutoComplete stuff
-//
-
-nsresult
-nsSimpleGlobalHistory::AutoCompleteSearch(const nsACString& aSearchString,
-                                    AutocompleteExcludeData* aExclude,
-                                    nsIAutoCompleteResults* aPrevResults,
-                                    nsIAutoCompleteResults* aResults)
-{
-  // determine if we can skip searching the whole history and only search
-  // through the previous search results
-  PRBool searchPrevious = PR_FALSE;
-  nsAutoString searchString = NS_ConvertUTF8toUTF16(aSearchString);
-  if (aPrevResults) {
-    nsAutoString prevURL;
-    aPrevResults->GetSearchString(getter_Copies(prevURL));
-    // if search string begins with the previous search string, it's a go
-    searchPrevious = StringBeginsWith(searchString, prevURL);
-  }
-    
-  nsCOMPtr resultItems;
-  nsresult rv = aResults->GetItems(getter_AddRefs(resultItems));
-
-  if (NS_SUCCEEDED(rv) && searchPrevious) {
-    // searching through the previous results...
-    
-    nsCOMPtr prevResultItems;
-    aPrevResults->GetItems(getter_AddRefs(prevResultItems));
-    
-    PRUint32 count;
-    prevResultItems->Count(&count);
-    for (PRUint32 i = 0; i < count; ++i) {
-      nsCOMPtr item;
-      prevResultItems->GetElementAt(i, getter_AddRefs(item));
-
-      // make a copy of the value because AutoCompleteCompare
-      // is destructive
-      nsCAutoString url;
-      item->GetURL(url);
-      
-      if (AutoCompleteCompare(url, aSearchString, aExclude))
-        resultItems->AppendElement(item);
-    }    
-  } else {
-    // searching through the entire history...
-        
-    // prepare the search enumerator
-    HistoryAutoCompleteEnumerator enumerator(this, 
-                                            mTable,
-                                            kToken_URLColumn, 
-                                            kToken_NameColumn,
-                                            kToken_HiddenColumn,
-                                            kToken_TypedColumn,
-                                            mAutocompleteOnlyTyped,
-                                            aSearchString, aExclude);
-    
-    nsresult rv = enumerator.Init(mEnv);
-    if (NS_FAILED(rv))
-      return rv;
-
-    // light array of pointers to nsIHistoryItems. we want to avoid shuffling objects between
-    // chunky XPCOM arrays in this performance-critical area, when possible.
-    nsCOMArray itemArray;
-    
-    // step through the enumerator to get the items into 'array'
-    // because we don't know how many items there will be
-    PRBool hasMore;
-    
-    while (NS_SUCCEEDED(enumerator.HasMoreElements(&hasMore)) && hasMore) {
-      // GetNext() addrefs, and so will our array's AppendElement(), so we'll need to
-      // take care to release our temporary ref here.
-      nsIHistoryItem* curEntry;
-      enumerator.GetNext((nsISupports**)&curEntry);
-      itemArray.AppendObject(curEntry);
-      NS_IF_RELEASE(curEntry);
-    }
-    
-    if (itemArray.Count() > 1) {
-      // sort it
-      itemArray.Sort(AutoCompleteSortComparison, nsnull);
-    }
-  
-    // place the sorted array into the autocomplete results
-    for (PRInt32 i = 0; i < itemArray.Count(); ++i) {
-      nsIHistoryItem* item = itemArray[i];
-      resultItems->AppendElement(static_cast(item));
-    }
-  }
-    
-  return NS_OK;
-}
-
-// If aURL begins with a protocol or domain prefix from our lists,
-// then mark their index in an AutocompleteExcludeData struct.
-void
-nsSimpleGlobalHistory::AutoCompleteGetExcludeInfo(const nsACString& aURL, AutocompleteExcludeData* aExclude)
-{
-  aExclude->schemePrefix = -1U;
-  aExclude->hostnamePrefix = -1U;
-  
-  PRInt32 index = 0;
-  PRInt32 i;
-  for (i = 0; i < mSchemePrefixes->Count(); ++i) {
-     nsACString& string = *mSchemePrefixes->CStringAt(i);    
-    if (StringBeginsWith(aURL, string)) {
-      aExclude->schemePrefix = i;
-      index = string.Length();
-      break;
-    }
-  }
-  
-  for (i = 0; i < mHostNamePrefixes->Count(); ++i) {
-    const nsACString& string = *mHostNamePrefixes->CStringAt(i);
-    if (Substring(aURL, index, string.Length()).Equals(string)) {
-      aExclude->hostnamePrefix = i;
-      break;
-    }
-  }
-}
-
-// Cut any protocol and domain prefixes from aURL, except for those which
-// are specified in aExclude
-void
-nsSimpleGlobalHistory::AutoCompleteCutPrefix(nsACString& aURL, AutocompleteExcludeData* aExclude)
-{
-  // This comparison is case-sensitive.  Therefore, it assumes that aUserURL is a 
-  // potential URL whose host name is in all lower case.
-  PRInt32 idx = 0;
-  PRInt32 i;
-  
-  for (i = 0; i < mSchemePrefixes->Count(); ++i) {
-    if (aExclude && i == (PRInt32)aExclude->schemePrefix)
-      continue;
-    const nsACString &string = *mSchemePrefixes->CStringAt(i);    
-    if (StringBeginsWith(aURL, string)) {
-      idx = string.Length();
-      break;
-    }
-  }
-
-  if (idx > 0)
-    aURL.Cut(0, idx);
-
-  idx = 0;
-  for (i = 0; i < mHostNamePrefixes->Count(); ++i) {
-    if (aExclude && i == (PRInt32)aExclude->hostnamePrefix)
-      continue;
-    const nsACString &string = *mHostNamePrefixes->CStringAt(i);    
-    if (StringBeginsWith(aURL, string)) {
-      idx = string.Length();
-      break;
-    }
-  }
-
-  if (idx > 0)
-    aURL.Cut(0, idx);
-}
-
-void
-nsSimpleGlobalHistory::AutoCompletePrefilter(const nsACString& aSearchString, nsACString &outFilteredString)
-{
-  outFilteredString.Assign(aSearchString);
-  PRInt32 slash = outFilteredString.FindChar('/', 0);
-  
-  if (slash >= 0) {
-    // if user is typing a url but has already typed past the host,
-    // then convert the host to lowercase
-    nsCAutoString host(Substring(outFilteredString, 0, slash));
-    ToLowerCase(host);
-    outFilteredString.Assign(host + Substring(outFilteredString, slash, outFilteredString.Length()-slash));
-  } else {
-    // otherwise, assume the user could still be typing the host, and
-    // convert everything to lowercase
-    ToLowerCase(outFilteredString);
-  }
-}
-
-PRBool
-nsSimpleGlobalHistory::AutoCompleteCompare(nsACString&              aHistoryURL, 
-                                           const nsACString&        aUserURL, 
-                                           AutocompleteExcludeData* aExclude)
-{
-  AutoCompleteCutPrefix(aHistoryURL, aExclude);
-  
-  return StringBeginsWith(aHistoryURL, aUserURL);
-}
-
-int PR_CALLBACK 
-nsSimpleGlobalHistory::AutoCompleteSortComparison(nsIHistoryItem *item1, nsIHistoryItem *item2,
-                                                  void *closureVoid) 
-{
-  //
-  // NOTE: The design and reasoning behind the following autocomplete 
-  // sort implementation is documented in bug 78270.
-  //
-  
-  // get visit counts - we're ignoring all errors from GetRowValue(), 
-  // and relying on default values
-  PRInt32 item1visits = 0, item2visits = 0;  
-  item1->GetVisitCount(&item1visits);
-  item2->GetVisitCount(&item2visits);
-
-  // get URLs
-  nsCAutoString url1, url2;
-  item1->GetURL(url1);
-  item2->GetURL(url2);
-
-  // Favour websites and webpaths more than webpages by boosting 
-  // their visit counts.  This assumes that URLs have been normalized, 
-  // appending a trailing '/'.
-  // 
-  // We use addition to boost the visit count rather than multiplication 
-  // since we want URLs with large visit counts to remain pretty much 
-  // in raw visit count order - we assume the user has visited these urls
-  // often for a reason and there shouldn't be a problem with putting them 
-  // high in the autocomplete list regardless of whether they are sites/
-  // paths or pages.  However for URLs visited only a few times, sites 
-  // & paths should be presented before pages since they are generally 
-  // more likely to be visited again.
-  //
-  PRBool isPath1 = PR_FALSE, isPath2 = PR_FALSE;
-  if (!url1.IsEmpty())
-  {
-    // url is a site/path if it has a trailing slash
-    isPath1 = (url1.Last() == '/');
-    if (isPath1)
-      item1visits += AUTOCOMPLETE_NONPAGE_VISIT_COUNT_BOOST;
-  }
-  if (!url2.IsEmpty())
-  {
-    // url is a site/path if it has a trailing slash
-    isPath2 = (url2.Last() == '/');
-    if (isPath2)
-      item2visits += AUTOCOMPLETE_NONPAGE_VISIT_COUNT_BOOST;
-  }
-
-  // primary sort by visit count
-  if (item1visits != item2visits)
-  {
-    // return visit count comparison
-    return item2visits - item1visits;
-  }
-  else
-  {
-    // Favour websites and webpaths more than webpages
-    if (isPath1 && !isPath2) return -1; // url1 is a website/path, url2 isn't
-    if (!isPath1 && isPath2) return  1; // url1 isn't a website/path, url2 is
-
-    // We have two websites/paths.. ignore "http[s]://[www.]" & "ftp://[ftp.]"
-    // prefixes.  Find a starting position in the string, just past any of the 
-    // above prefixes.  Only check for the prefix once, in the far left of the 
-    // string - it is assumed there is no whitespace.
-    PRInt32 postPrefix1 = 0, postPrefix2 = 0;
-    
-    // Prefixes to ignore in autocomplete.
-    static const nsLiteralCString kIgnoredPrefixes[] = { 
-      NS_LITERAL_CSTRING("http://www."),
-      NS_LITERAL_CSTRING("http://"),
-      NS_LITERAL_CSTRING("https://www."),
-      NS_LITERAL_CSTRING("https://"),
-      NS_LITERAL_CSTRING("ftp://ftp."),
-      NS_LITERAL_CSTRING("ftp://")
-    };
-
-    const unsigned int kNumPrefixes = sizeof(kIgnoredPrefixes)/sizeof(kIgnoredPrefixes[0]);
-    size_t i;
-    // iterate through our prefixes looking for a match
-    for (i = 0; i < kNumPrefixes; i++)
-    {
-      // Check if string is prefixed.  Note: the parameters of the Find() 
-      // method specify the url is searched at the 0th character and if there
-      // is no match the rest of the url is not searched.
-      if (StringBeginsWith(url1, kIgnoredPrefixes[0]))
-      {
-        // found a match - record post prefix position
-        postPrefix1 = kIgnoredPrefixes[i].Length();
-        // bail out of the for loop
-        break;
-      }
-    }
-
-    // iterate through our prefixes looking for a match
-    for (i = 0; i < kNumPrefixes; i++)
-    {
-      // Check if string is prefixed.  Note: the parameters of the Find() 
-      // method specify the url is searched at the 0th character and if there
-      // is no match the rest of the url is not searched.
-      if (StringBeginsWith(url2, kIgnoredPrefixes[0]))
-      {
-        // found a match - record post prefix position
-        postPrefix2 = kIgnoredPrefixes[i].Length();
-        // bail out of the for loop
-        break;
-      }
-    }
-
-    // compare non-prefixed urls
-    PRInt32 ret = Compare(
-      Substring(url1, postPrefix1, url1.Length()),
-      Substring(url2, postPrefix2, url2.Length()));
-    if (ret != 0) return ret;
-
-    // sort http://xyz.com before http://www.xyz.com
-    return postPrefix1 - postPrefix2;
-  }
-}
-
Index: installer/Makefile.in
===================================================================
RCS file: /cvsroot/mozilla/camino/installer/Makefile.in,v
retrieving revision 1.34
diff -u -8 -r1.34 Makefile.in
--- installer/Makefile.in	14 Feb 2010 22:25:19 -0000	1.34
+++ installer/Makefile.in	23 Feb 2010 03:07:51 -0000
@@ -49,19 +49,20 @@
 
 # The packager runs in the dist directory, paths must be relative to there.
 MOZ_PKG_MAC_DSSTORE=../camino/resources/package/dsstore
 MOZ_PKG_MAC_BACKGROUND=../camino/resources/package/background.jpg
 MOZ_PKG_MAC_ICON=../camino/resources/package/disk.icns
 # The docs aren't copied into an objdir, chase them in the srcdir.
 # Use $(_ABS_TOPSRCDIR) for an absolute path, handling both srcdir and
 # objdir builds.
+# in 1.9.1, packager.mk defines _ABS_MOZSRCDIR instead
 MOZ_PKG_MAC_EXTRA=--format "UDBZ" \
-                  --copy "$(_ABS_TOPSRCDIR)/camino/docs/ReadMe.rtf" \
-                  --copy "$(_ABS_TOPSRCDIR)/camino/docs/Release Notes $(_RELNOTE_VERSION).rtf:Release Notes.rtf" \
+                  --copy "$(_ABS_MOZSRCDIR)/camino/docs/ReadMe.rtf" \
+                  --copy "$(_ABS_MOZSRCDIR)/camino/docs/Release Notes $(_RELNOTE_VERSION).rtf:Release Notes.rtf" \
                   --attribute "E:/ReadMe.rtf:/Release Notes.rtf"
 
 include $(topsrcdir)/toolkit/mozapps/installer/packager.mk
 
 # Use striptease instead of strip.  Strip out debugging symbols and local
 # symbols, but leave local symbols in text sections intact.  This keeps
 # CrashReporter stacks usable.  Use pwd to get an absolute path based
 # on $(DIST) relative to this directory.  If $(DIST) were used directly, the
Index: Camino.xcodeproj/project.pbxproj
===================================================================
RCS file: /cvsroot/mozilla/camino/Camino.xcodeproj/project.pbxproj,v
retrieving revision 1.125
diff -u -8 -r1.125 project.pbxproj
--- Camino.xcodeproj/project.pbxproj	21 Feb 2010 22:56:30 -0000	1.125
+++ Camino.xcodeproj/project.pbxproj	23 Feb 2010 03:08:26 -0000
@@ -153,18 +153,16 @@
 		0FB6D99B089B276100414498 /* bm_favicon.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 0FB6D99A089B276100414498 /* bm_favicon.tiff */; };
 		0FB6D99C089B276100414498 /* bm_favicon.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 0FB6D99A089B276100414498 /* bm_favicon.tiff */; };
 		0FBC0ECB0798F92600E8E0E2 /* BookmarksEditing.nib in Resources */ = {isa = PBXBuildFile; fileRef = 0FBC0EC90798F92600E8E0E2 /* BookmarksEditing.nib */; };
 		0FBC0ECC0798F92600E8E0E2 /* BookmarksEditing.nib in Resources */ = {isa = PBXBuildFile; fileRef = 0FBC0EC90798F92600E8E0E2 /* BookmarksEditing.nib */; };
 		0FBC0ECE0798F94900E8E0E2 /* NSDate+Utils.m in Sources */ = {isa = PBXBuildFile; fileRef = 0FBC0ECD0798F94900E8E0E2 /* NSDate+Utils.m */; };
 		0FBC0ECF0798F94900E8E0E2 /* NSDate+Utils.m in Sources */ = {isa = PBXBuildFile; fileRef = 0FBC0ECD0798F94900E8E0E2 /* NSDate+Utils.m */; };
 		0FBC0ED10798F95400E8E0E2 /* NSMenu+Utils.m in Sources */ = {isa = PBXBuildFile; fileRef = 0FBC0ED00798F95400E8E0E2 /* NSMenu+Utils.m */; };
 		0FBC0ED20798F95400E8E0E2 /* NSMenu+Utils.m in Sources */ = {isa = PBXBuildFile; fileRef = 0FBC0ED00798F95400E8E0E2 /* NSMenu+Utils.m */; };
-		0FBC0EDA0798F9A000E8E0E2 /* nsSimpleGlobalHistory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FBC0ED90798F9A000E8E0E2 /* nsSimpleGlobalHistory.cpp */; };
-		0FBC0EDB0798F9A000E8E0E2 /* nsSimpleGlobalHistory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FBC0ED90798F9A000E8E0E2 /* nsSimpleGlobalHistory.cpp */; };
 		0FBC0EDD0798F9B400E8E0E2 /* HistoryOutlineViewDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0FBC0EDC0798F9B400E8E0E2 /* HistoryOutlineViewDelegate.mm */; };
 		0FBC0EDE0798F9B400E8E0E2 /* HistoryOutlineViewDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0FBC0EDC0798F9B400E8E0E2 /* HistoryOutlineViewDelegate.mm */; };
 		0FBC0EE00798FA1900E8E0E2 /* PopupMenuButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 0FBC0EDF0798FA1900E8E0E2 /* PopupMenuButton.m */; };
 		0FBC0EE10798FA1900E8E0E2 /* PopupMenuButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 0FBC0EDF0798FA1900E8E0E2 /* PopupMenuButton.m */; };
 		0FCD859008C4D4B900A1923B /* layout_xul_tree.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = 0FCD858708C4D45400A1923B /* layout_xul_tree.xpt */; };
 		0FCD859108C4D4DA00A1923B /* layout_xul_tree.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = 0FCD858708C4D45400A1923B /* layout_xul_tree.xpt */; };
 		0FCD85CC08C4D6D900A1923B /* ViewCertificateDialogController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0FCD85CA08C4D6D900A1923B /* ViewCertificateDialogController.mm */; };
 		0FCD85CD08C4D6D900A1923B /* BrowserSecurityDialogs.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0FCD85CB08C4D6D900A1923B /* BrowserSecurityDialogs.mm */; };
@@ -243,18 +241,16 @@
 		33820E4E0F8AA44F00D2164A /* Breakpad.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 33820DC00F8AA31B00D2164A /* Breakpad.framework */; };
 		33820E510F8AA46E00D2164A /* Breakpad.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 33820DC00F8AA31B00D2164A /* Breakpad.framework */; };
 		33820E800F8AA62C00D2164A /* Breakpad.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 33820DC00F8AA31B00D2164A /* Breakpad.framework */; };
 		33820E810F8AA63800D2164A /* Breakpad.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 33820DC00F8AA31B00D2164A /* Breakpad.framework */; };
 		33B775AA0C4EAC1E00A6D67F /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 33B775A90C4EAC1E00A6D67F /* libsqlite3.dylib */; };
 		33B775AB0C4EAC1E00A6D67F /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 33B775A90C4EAC1E00A6D67F /* libsqlite3.dylib */; };
 		33B7763C0C4EB32C00A6D67F /* libsqlite3.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = 33B775A90C4EAC1E00A6D67F /* libsqlite3.dylib */; };
 		33B7763D0C4EB34300A6D67F /* libsqlite3.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = 33B775A90C4EAC1E00A6D67F /* libsqlite3.dylib */; };
-		33B777980C55853B00A6D67F /* libmozlcms.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = 33B777950C55851800A6D67F /* libmozlcms.dylib */; };
-		33B777E20C55890200A6D67F /* libmozlcms.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 33B777E10C5588E500A6D67F /* libmozlcms.a */; };
 		33B778810C55C58500A6D67F /* libnssdbm3.dylib in Copy Security Libraries */ = {isa = PBXBuildFile; fileRef = 33B778800C55C57800A6D67F /* libnssdbm3.dylib */; };
 		33B778820C55C59A00A6D67F /* libnssdbm3.dylib in Copy Security Libraries */ = {isa = PBXBuildFile; fileRef = 33B778800C55C57800A6D67F /* libnssdbm3.dylib */; };
 		33C222870D106CDD00611936 /* PreferencesWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 33C222850D106CDD00611936 /* PreferencesWindow.m */; };
 		33C222890D106CDD00611936 /* PreferencesWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 33C222850D106CDD00611936 /* PreferencesWindow.m */; };
 		33E1EA100D34550A00910BBD /* AddSearchProviderHandler.mm in Sources */ = {isa = PBXBuildFile; fileRef = 33E1EA0E0D34550A00910BBD /* AddSearchProviderHandler.mm */; };
 		33E1EA120D34550A00910BBD /* AddSearchProviderHandler.mm in Sources */ = {isa = PBXBuildFile; fileRef = 33E1EA0E0D34550A00910BBD /* AddSearchProviderHandler.mm */; };
 		33E1EA990D358DFA00910BBD /* caminosearch.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = 33E1EA970D358DE200910BBD /* caminosearch.xpt */; };
 		33E1EA9A0D358E0C00910BBD /* caminosearch.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = 33E1EA970D358DE200910BBD /* caminosearch.xpt */; };
@@ -420,17 +416,16 @@
 		3F44ACC605BDFB9E00CB4B08 /* BookmarkToolbar.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3FB2BA8F0545EA80002B9691 /* BookmarkToolbar.mm */; };
 		3F44ACC705BDFB9E00CB4B08 /* BookmarkViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3FB2BA910545EA80002B9691 /* BookmarkViewController.mm */; };
 		3F44ACC805BDFB9E00CB4B08 /* ExtendedTableView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3FB2BA930545EA80002B9691 /* ExtendedTableView.mm */; };
 		3F44ACC905BDFB9E00CB4B08 /* KindaSmartFolderManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3FB2BA950545EA80002B9691 /* KindaSmartFolderManager.mm */; };
 		3F44ACCA05BDFB9E00CB4B08 /* NSArray+Utils.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3FB2BA970545EA80002B9691 /* NSArray+Utils.mm */; };
 		3F44ACCC05BDFB9E00CB4B08 /* ProgressView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3FC0FB8005A0D2DC002F47DE /* ProgressView.mm */; };
 		3F44ACCD05BDFB9E00CB4B08 /* HistoryItem.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3F7C6CBA05B4819E002FFFD3 /* HistoryItem.mm */; };
 		3F44ACD605BDFB9F00CB4B08 /* libappcomps.dylib in Copy Component Libraries */ = {isa = PBXBuildFile; fileRef = F5F181C90208006F0124611D /* libappcomps.dylib */; };
-		3F44ACD605BDFB9F00CB4B09 /* libxpautocomplete.dylib in Copy Component Libraries */ = {isa = PBXBuildFile; fileRef = F5F181C90208006F0124611E /* libxpautocomplete.dylib */; };
 		3F44ACD705BDFB9F00CB4B08 /* caps.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = F6BD639401B3131201A962F7 /* caps.xpt */; };
 		3F44ACD805BDFB9F00CB4B08 /* libtxmgr.dylib in Copy Component Libraries */ = {isa = PBXBuildFile; fileRef = F5F59320020F4CD201ACA690 /* libtxmgr.dylib */; };
 		3F44ACD905BDFB9F00CB4B08 /* docshell.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = F6BD639601B3131201A962F7 /* docshell.xpt */; };
 		3F44ACDA05BDFB9F00CB4B08 /* dom_base.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = F6BD639701B3131201A962F7 /* dom_base.xpt */; };
 		3F44ACDA05BDFB9F00CB4B09 /* dom_canvas.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = F6BD639701B3131201A962F8 /* dom_canvas.xpt */; };
 		3F44ACDB05BDFB9F00CB4B08 /* dom_core.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = F6BD639801B3131201A962F7 /* dom_core.xpt */; };
 		3F44ACDC05BDFB9F00CB4B08 /* dom_css.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = F6BD639901B3131201A962F7 /* dom_css.xpt */; };
 		3F44ACDD05BDFB9F00CB4B08 /* dom_events.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = F6BD639A01B3131201A962F7 /* dom_events.xpt */; };
@@ -444,17 +439,16 @@
 		3F44ACE405BDFB9F00CB4B08 /* dom_xul.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = F6BD63A101B3131201A962F7 /* dom_xul.xpt */; };
 		3F44ACE505BDFB9F00CB4B08 /* dom.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = F6BD63A201B3131201A962F7 /* dom.xpt */; };
 		3F44ACE605BDFB9F00CB4B08 /* gfx.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = F6BD63A401B3131201A962F7 /* gfx.xpt */; };
 		3F44ACE705BDFB9F00CB4B08 /* libcaps.dylib in Copy Component Libraries */ = {isa = PBXBuildFile; fileRef = F6BD63A601B3131201A962F7 /* libcaps.dylib */; };
 		3F44ACE805BDFB9F00CB4B08 /* libchrome.dylib in Copy Component Libraries */ = {isa = PBXBuildFile; fileRef = F6BD63A701B3131201A962F7 /* libchrome.dylib */; };
 		3F44ACE905BDFB9F00CB4B08 /* libcookie.dylib in Copy Component Libraries */ = {isa = PBXBuildFile; fileRef = F6BD63A801B3131201A962F7 /* libcookie.dylib */; };
 		3F44ACEA05BDFB9F00CB4B08 /* libdocshell.dylib in Copy Component Libraries */ = {isa = PBXBuildFile; fileRef = F6BD63A901B3131201A962F7 /* libdocshell.dylib */; };
 		3F44ACEC05BDFB9F00CB4B08 /* libembedcomponents.dylib in Copy Component Libraries */ = {isa = PBXBuildFile; fileRef = F6BD63AB01B3131201A962F7 /* libembedcomponents.dylib */; };
-		3F44ACEE05BDFB9F00CB4B08 /* libmork.dylib in Copy Component Libraries */ = {isa = PBXBuildFile; fileRef = F5D3F1CE0209235A014E447F /* libmork.dylib */; };
 		3F44ACEF05BDFB9F00CB4B08 /* libwebbrwsr.dylib in Copy Component Libraries */ = {isa = PBXBuildFile; fileRef = F6BD63B101B3131201A962F7 /* libwebbrwsr.dylib */; };
 		3F44ACF005BDFB9F00CB4B08 /* mimetype.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = F6BD63B201B3131201A962F7 /* mimetype.xpt */; };
 		3F44ACF105BDFB9F00CB4B08 /* txtsvc.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = F6BD63B301B3131201A962F7 /* txtsvc.xpt */; };
 		3F44ACF205BDFB9F00CB4B08 /* webBrowser_core.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = F6BD63B401B3131201A962F7 /* webBrowser_core.xpt */; };
 		3F44ACF305BDFB9F00CB4B08 /* windowwatcher.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = F6BD63B501B3131201A962F7 /* windowwatcher.xpt */; };
 		3F44ACF405BDFB9F00CB4B08 /* content_base.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = F6BD63D901B313EE01A962F7 /* content_base.xpt */; };
 		3F44ACF505BDFB9F00CB4B08 /* jar.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = F6BD63DA01B313EE01A962F7 /* jar.xpt */; };
 		3F44ACF705BDFB9F00CB4B08 /* layout_base.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = F6BD63DC01B313EE01A962F7 /* layout_base.xpt */; };
@@ -496,63 +490,57 @@
 		3F44AD2005BDFB9F00CB4B08 /* xpconnect.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = F6BD642B01B3156701A962F7 /* xpconnect.xpt */; };
 		3F44AD2105BDFB9F00CB4B08 /* embed_base.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = F6BD644D01B315FA01A962F7 /* embed_base.xpt */; };
 		3F44AD2205BDFB9F00CB4B08 /* imglib2.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = F6BD644E01B315FA01A962F7 /* imglib2.xpt */; };
 		3F44AD2305BDFB9F00CB4B08 /* libgkplugin.dylib in Copy Component Libraries */ = {isa = PBXBuildFile; fileRef = F6BD644F01B315FA01A962F7 /* libgkplugin.dylib */; };
 		3F44AD2405BDFB9F00CB4B08 /* xuldoc.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = F517941F027F3F2901A967DF /* xuldoc.xpt */; };
 		3F44AD2605BDFB9F00CB4B08 /* liboji.dylib in Copy Component Libraries */ = {isa = PBXBuildFile; fileRef = F53A902202C1127A01A967F3 /* liboji.dylib */; };
 		3F44AD2705BDFB9F00CB4B08 /* nsProxyAutoConfig.js in Copy Component Libraries */ = {isa = PBXBuildFile; fileRef = F5461CBB03AAC25C01A96660 /* nsProxyAutoConfig.js */; };
 		3F44AD2905BDFB9F00CB4B08 /* libi18n.dylib in Copy Component Libraries */ = {isa = PBXBuildFile; fileRef = A708E74103FB9041003C038B /* libi18n.dylib */; };
-		3F44AD2A05BDFB9F00CB4B08 /* libxmlextras.dylib in Copy Component Libraries */ = {isa = PBXBuildFile; fileRef = A708E74303FB90AB003C038B /* libxmlextras.dylib */; };
-		3F44AD2B05BDFB9F00CB4B08 /* libsuitetypeaheadfind.dylib in Copy Component Libraries */ = {isa = PBXBuildFile; fileRef = A7D88E680465D94000A80196 /* libsuitetypeaheadfind.dylib */; };
-		3F44AD2C05BDFB9F00CB4B08 /* suitetypeaheadfind.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = A7D88E6A0465D9F800A80196 /* suitetypeaheadfind.xpt */; };
 		3F44AD2E05BDFB9F00CB4B08 /* charsetalias.properties in Copy Gecko Resources */ = {isa = PBXBuildFile; fileRef = F6BD64B801B316DA01A962F7 /* charsetalias.properties */; };
 		3F44AD2F05BDFB9F00CB4B08 /* charsetData.properties in Copy Gecko Resources */ = {isa = PBXBuildFile; fileRef = F6BD64B901B316DA01A962F7 /* charsetData.properties */; };
 		3F44AD3005BDFB9F00CB4B08 /* langGroups.properties in Copy Gecko Resources */ = {isa = PBXBuildFile; fileRef = F6BD64BA01B316DA01A962F7 /* langGroups.properties */; };
 		3F44AD3105BDFB9F00CB4B08 /* language.properties in Copy Gecko Resources */ = {isa = PBXBuildFile; fileRef = F6BD64BB01B316DA01A962F7 /* language.properties */; };
 		3F44AD3205BDFB9F00CB4B08 /* maccharset.properties in Copy Gecko Resources */ = {isa = PBXBuildFile; fileRef = F6BD64BC01B316DA01A962F7 /* maccharset.properties */; };
-		3F44AD3305BDFB9F00CB4B08 /* broken-image.gif in Copy Gecko Resources */ = {isa = PBXBuildFile; fileRef = F55B6BF402EF1F7E01026D5D /* broken-image.gif */; };
-		3F44AD3405BDFB9F00CB4B08 /* loading-image.gif in Copy Gecko Resources */ = {isa = PBXBuildFile; fileRef = F5A112C902DF270F01026D5D /* loading-image.gif */; };
+		3F44AD3305BDFB9F00CB4B08 /* broken-image.png in Copy Gecko Resources */ = {isa = PBXBuildFile; fileRef = F55B6BF402EF1F7E01026D5D /* broken-image.png */; };
+		3F44AD3405BDFB9F00CB4B08 /* loading-image.png in Copy Gecko Resources */ = {isa = PBXBuildFile; fileRef = F5A112C902DF270F01026D5D /* loading-image.png */; };
 		3F44AD3505BDFB9F00CB4B08 /* forms.css in Copy Gecko Resources */ = {isa = PBXBuildFile; fileRef = F6BD64DD01B3172601A962F7 /* forms.css */; };
 		3F44AD3705BDFB9F00CB4B08 /* html.css in Copy Gecko Resources */ = {isa = PBXBuildFile; fileRef = F6BD64DE01B3172601A962F7 /* html.css */; };
 		3F44AD3805BDFB9F00CB4B08 /* quirk.css in Copy Gecko Resources */ = {isa = PBXBuildFile; fileRef = F6BD64DF01B3172601A962F7 /* quirk.css */; };
 		3F44AD3805BDFB9F00CB4C08 /* svg.css in Copy Gecko Resources */ = {isa = PBXBuildFile; fileRef = F6BD64DF01B3172601A963F7 /* svg.css */; };
 		3F44AD3905BDFB9F00CB4B08 /* ua.css in Copy Gecko Resources */ = {isa = PBXBuildFile; fileRef = F6BD64E001B3172601A962F7 /* ua.css */; };
 		3F44AD3A05BDFB9F00CB4B08 /* viewsource.css in Copy Gecko Resources */ = {isa = PBXBuildFile; fileRef = F6BD64E101B3172601A962F7 /* viewsource.css */; };
 		3F44AD3F05BDFB9F00CB4B08 /* xhtml11.dtd in Copy Gecko DTDs */ = {isa = PBXBuildFile; fileRef = F5949A47030D58A1014E8430 /* xhtml11.dtd */; };
 		3F44AD4105BDFB9F00CB4B08 /* html40Latin1.properties in Copy Gecko Entity Tables */ = {isa = PBXBuildFile; fileRef = F6BD64D801B3172601A962F7 /* html40Latin1.properties */; };
 		3F44AD4205BDFB9F00CB4B08 /* html40Special.properties in Copy Gecko Entity Tables */ = {isa = PBXBuildFile; fileRef = F6BD64D901B3172601A962F7 /* html40Special.properties */; };
 		3F44AD4305BDFB9F00CB4B08 /* html40Symbols.properties in Copy Gecko Entity Tables */ = {isa = PBXBuildFile; fileRef = F6BD64DA01B3172601A962F7 /* html40Symbols.properties */; };
 		3F44AD4405BDFB9F00CB4B08 /* htmlEntityVersions.properties in Copy Gecko Entity Tables */ = {isa = PBXBuildFile; fileRef = F6BD64DB01B3172601A962F7 /* htmlEntityVersions.properties */; };
 		3F44AD4505BDFB9F00CB4B08 /* transliterate.properties in Copy Gecko Entity Tables */ = {isa = PBXBuildFile; fileRef = F6BD64DC01B3172601A962F7 /* transliterate.properties */; };
 		3F44AD5205BDFB9F00CB4B08 /* all-camino.js in Copy Camino Prefs */ = {isa = PBXBuildFile; fileRef = F59A0E320307635401A967F3 /* all-camino.js */; };
 		3F44AD5405BDFB9F00CB4B08 /* all.js in Copy Base Prefs */ = {isa = PBXBuildFile; fileRef = F6BD64FC01B3184301A962F7 /* all.js */; };
 		3F44AD5505BDFB9F00CB4B08 /* security-prefs.js in Copy Base Prefs */ = {isa = PBXBuildFile; fileRef = F55A9BC60228CCE101DAE4DB /* security-prefs.js */; };
-		3F44AD5805BDFB9F00CB4B08 /* embed.jar in Copy Chrome */ = {isa = PBXBuildFile; fileRef = F6BD650001B3184301A962F7 /* embed.jar */; };
+		3F44AD5805BDFB9F00CB4B08 /* toolkit.jar in Copy Chrome */ = {isa = PBXBuildFile; fileRef = F6BD650001B3184301A962F7 /* toolkit.jar */; };
 		3F44AD5805BDFB9F00CB4B18 /* flashblock.jar in Copy Chrome */ = {isa = PBXBuildFile; fileRef = F6BD650001B3184301A96307 /* flashblock.jar */; };
-		3F44AD5905BDFB9F00CB4B08 /* installed-chrome.txt in Copy Chrome */ = {isa = PBXBuildFile; fileRef = F5DA444A027DD5AA01A80166 /* installed-chrome.txt */; };
 		3F44AD5B05BDFB9F00CB4B08 /* libnss3.dylib in Copy Security Libraries */ = {isa = PBXBuildFile; fileRef = F5247C320228B91F013DD99A /* libnss3.dylib */; };
 		3F44AD5C05BDFB9F00CB4B08 /* libnssckbi.dylib in Copy Security Libraries */ = {isa = PBXBuildFile; fileRef = F5247C330228B91F013DD99A /* libnssckbi.dylib */; };
 		3F44AD5D05BDFB9F00CB4B08 /* libsmime3.dylib in Copy Security Libraries */ = {isa = PBXBuildFile; fileRef = F5247C340228B91F013DD99A /* libsmime3.dylib */; };
 		3F44AD5E05BDFB9F00CB4B08 /* libsoftokn3.dylib in Copy Security Libraries */ = {isa = PBXBuildFile; fileRef = F5247C350228B91F013DD99A /* libsoftokn3.dylib */; };
 		3F44AD5F05BDFB9F00CB4B08 /* libssl3.dylib in Copy Security Libraries */ = {isa = PBXBuildFile; fileRef = F5247C360228B91F013DD99A /* libssl3.dylib */; };
 		3F44AD6105BDFB9F00CB4B08 /* libxpcom.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = F57F0F470209DF5301A967DF /* libxpcom.dylib */; };
 		3F44AD6305BDFB9F00CB4B08 /* libmozjs.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = F6BD637F01B30EA301A962F7 /* libmozjs.dylib */; };
 		3F44AD6405BDFB9F00CB4B08 /* libnspr4.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = F6BD638001B30EA301A962F7 /* libnspr4.dylib */; };
 		3F44AD6505BDFB9F00CB4B08 /* libplc4.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = F6BD638101B30EA301A962F7 /* libplc4.dylib */; };
 		3F44AD6605BDFB9F00CB4B08 /* libplds4.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = F6BD638201B30EA301A962F7 /* libplds4.dylib */; };
 		3F44AD6705BDFB9F00CB4B08 /* libgkgfx.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = F6BD638701B30F5301A962F7 /* libgkgfx.dylib */; };
-		3F44AD6805BDFB9F00CB4B08 /* libwidget.rsrc in Copy Libraries */ = {isa = PBXBuildFile; fileRef = F5F14E9602A5A43A01A967F3 /* libwidget.rsrc */; };
 		3F44AD6905BDFB9F00CB4B08 /* libjsj.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = F50DCB4302C2856001A967F3 /* libjsj.dylib */; };
 		3F44AD6B05BDFB9F00CB4B08 /* pipboot.xpt in Copy Security Components */ = {isa = PBXBuildFile; fileRef = F5247C4C0228BBB2013DD99A /* pipboot.xpt */; };
 		3F44AD6C05BDFB9F00CB4B08 /* pipnss.xpt in Copy Security Components */ = {isa = PBXBuildFile; fileRef = F5247C4D0228BBB2013DD99A /* pipnss.xpt */; };
 		3F44AD6D05BDFB9F00CB4B08 /* libpipboot.dylib in Copy Security Components */ = {isa = PBXBuildFile; fileRef = F5247C3C0228B990013DD99A /* libpipboot.dylib */; };
 		3F44AD6E05BDFB9F00CB4B08 /* libpipnss.dylib in Copy Security Components */ = {isa = PBXBuildFile; fileRef = F5247C3D0228B990013DD99A /* libpipnss.dylib */; };
-		3F44AD7005BDFB9F00CB4B08 /* pipnss.jar in Copy Security Chrome */ = {isa = PBXBuildFile; fileRef = F54EF7ED022A2F9C01A80165 /* pipnss.jar */; };
-		3F44AD7B05BDFB9F00CB4B08 /* PrintPDE.plugin in Copy Plugins */ = {isa = PBXBuildFile; fileRef = 7919FCF0044631350000010E /* PrintPDE.plugin */; };
+		3F44AD7005BDFB9F00CB4B08 /* en-US.jar in Copy Chrome */ = {isa = PBXBuildFile; fileRef = F54EF7ED022A2F9C01A80165 /* en-US.jar */; };
 		3F44AD7D05BDFB9F00CB4B08 /* libembed_base_s.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F51D9B2D0209573701A80166 /* libembed_base_s.a */; };
 		3F44AD7E05BDFB9F00CB4B08 /* libunicharutil_s.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F5C2CDA702383CE601A967DF /* libunicharutil_s.a */; };
 		3F44AD7F05BDFB9F00CB4B08 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
 		3F44AD8005BDFB9F00CB4B08 /* PreferencePanes.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F557193A022B4102010001CA /* PreferencePanes.framework */; };
 		3F44AD8105BDFB9F00CB4B08 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F52D5CDB027D412A01A80166 /* Carbon.framework */; };
 		3F44AD8205BDFB9F00CB4B08 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F52D5CDC027D412A01A80166 /* CoreFoundation.framework */; };
 		3F44AD8305BDFB9F00CB4B08 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F52D5CDD027D412A01A80166 /* SystemConfiguration.framework */; };
 		3F44AD8405BDFB9F00CB4B08 /* QuickTime.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F5FEDBCB02AD8DD101A967F3 /* QuickTime.framework */; };
@@ -751,90 +739,81 @@
 		3F44AF3D05BDFBA000CB4B08 /* xpcom_io.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = F6BD642801B3156701A962F7 /* xpcom_io.xpt */; };
 		3F44AF3E05BDFBA000CB4B08 /* xpcom_threads.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = F6BD642901B3156701A962F7 /* xpcom_threads.xpt */; };
 		3F44AF3F05BDFBA000CB4B08 /* xpcom_xpti.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = F6BD642A01B3156701A962F7 /* xpcom_xpti.xpt */; };
 		3F44AF4005BDFBA000CB4B08 /* xpconnect.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = F6BD642B01B3156701A962F7 /* xpconnect.xpt */; };
 		3F44AF4105BDFBA000CB4B08 /* embed_base.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = F6BD644D01B315FA01A962F7 /* embed_base.xpt */; };
 		3F44AF4205BDFBA000CB4B08 /* imglib2.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = F6BD644E01B315FA01A962F7 /* imglib2.xpt */; };
 		3F44AF4305BDFBA000CB4B08 /* xuldoc.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = F517941F027F3F2901A967DF /* xuldoc.xpt */; };
 		3F44AF4405BDFBA000CB4B08 /* nsProxyAutoConfig.js in Copy Component Libraries */ = {isa = PBXBuildFile; fileRef = F5461CBB03AAC25C01A96660 /* nsProxyAutoConfig.js */; };
-		3F44AF4705BDFBA000CB4B08 /* suitetypeaheadfind.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = A7D88E6A0465D9F800A80196 /* suitetypeaheadfind.xpt */; };
 		3F44AF4905BDFBA000CB4B08 /* charsetalias.properties in Copy Gecko Resources */ = {isa = PBXBuildFile; fileRef = F6BD64B801B316DA01A962F7 /* charsetalias.properties */; };
 		3F44AF4A05BDFBA000CB4B08 /* charsetData.properties in Copy Gecko Resources */ = {isa = PBXBuildFile; fileRef = F6BD64B901B316DA01A962F7 /* charsetData.properties */; };
 		3F44AF4B05BDFBA000CB4B08 /* langGroups.properties in Copy Gecko Resources */ = {isa = PBXBuildFile; fileRef = F6BD64BA01B316DA01A962F7 /* langGroups.properties */; };
 		3F44AF4C05BDFBA000CB4B08 /* language.properties in Copy Gecko Resources */ = {isa = PBXBuildFile; fileRef = F6BD64BB01B316DA01A962F7 /* language.properties */; };
 		3F44AF4D05BDFBA000CB4B08 /* maccharset.properties in Copy Gecko Resources */ = {isa = PBXBuildFile; fileRef = F6BD64BC01B316DA01A962F7 /* maccharset.properties */; };
-		3F44AF4E05BDFBA000CB4B08 /* loading-image.gif in Copy Gecko Resources */ = {isa = PBXBuildFile; fileRef = F5A112C902DF270F01026D5D /* loading-image.gif */; };
-		3F44AF4F05BDFBA000CB4B08 /* broken-image.gif in Copy Gecko Resources */ = {isa = PBXBuildFile; fileRef = F55B6BF402EF1F7E01026D5D /* broken-image.gif */; };
+		3F44AF4E05BDFBA000CB4B08 /* loading-image.png in Copy Gecko Resources */ = {isa = PBXBuildFile; fileRef = F5A112C902DF270F01026D5D /* loading-image.png */; };
+		3F44AF4F05BDFBA000CB4B08 /* broken-image.png in Copy Gecko Resources */ = {isa = PBXBuildFile; fileRef = F55B6BF402EF1F7E01026D5D /* broken-image.png */; };
 		3F44AF5005BDFBA000CB4B08 /* forms.css in Copy Gecko Resources */ = {isa = PBXBuildFile; fileRef = F6BD64DD01B3172601A962F7 /* forms.css */; };
 		3F44AF5205BDFBA000CB4B08 /* html.css in Copy Gecko Resources */ = {isa = PBXBuildFile; fileRef = F6BD64DE01B3172601A962F7 /* html.css */; };
 		3F44AF5305BDFBA000CB4B08 /* quirk.css in Copy Gecko Resources */ = {isa = PBXBuildFile; fileRef = F6BD64DF01B3172601A962F7 /* quirk.css */; };
 		3F44AF5305BDFBA000CB4C08 /* svg.css in Copy Gecko Resources */ = {isa = PBXBuildFile; fileRef = F6BD64DF01B3172601A963F7 /* svg.css */; };
 		3F44AF5405BDFBA000CB4B08 /* ua.css in Copy Gecko Resources */ = {isa = PBXBuildFile; fileRef = F6BD64E001B3172601A962F7 /* ua.css */; };
 		3F44AF5505BDFBA000CB4B08 /* viewsource.css in Copy Gecko Resources */ = {isa = PBXBuildFile; fileRef = F6BD64E101B3172601A962F7 /* viewsource.css */; };
 		3F44AF5A05BDFBA000CB4B08 /* xhtml11.dtd in Copy Gecko DTDs */ = {isa = PBXBuildFile; fileRef = F5949A47030D58A1014E8430 /* xhtml11.dtd */; };
 		3F44AF5C05BDFBA000CB4B08 /* html40Latin1.properties in Copy Gecko Entity Tables */ = {isa = PBXBuildFile; fileRef = F6BD64D801B3172601A962F7 /* html40Latin1.properties */; };
 		3F44AF5D05BDFBA000CB4B08 /* html40Special.properties in Copy Gecko Entity Tables */ = {isa = PBXBuildFile; fileRef = F6BD64D901B3172601A962F7 /* html40Special.properties */; };
 		3F44AF5E05BDFBA000CB4B08 /* html40Symbols.properties in Copy Gecko Entity Tables */ = {isa = PBXBuildFile; fileRef = F6BD64DA01B3172601A962F7 /* html40Symbols.properties */; };
 		3F44AF5F05BDFBA000CB4B08 /* htmlEntityVersions.properties in Copy Gecko Entity Tables */ = {isa = PBXBuildFile; fileRef = F6BD64DB01B3172601A962F7 /* htmlEntityVersions.properties */; };
 		3F44AF6005BDFBA000CB4B08 /* transliterate.properties in Copy Gecko Entity Tables */ = {isa = PBXBuildFile; fileRef = F6BD64DC01B3172601A962F7 /* transliterate.properties */; };
 		3F44AF6D05BDFBA000CB4B08 /* all-camino.js in Copy Camino Prefs */ = {isa = PBXBuildFile; fileRef = F59A0E320307635401A967F3 /* all-camino.js */; };
 		3F44AF6F05BDFBA000CB4B08 /* all.js in Copy Base Prefs */ = {isa = PBXBuildFile; fileRef = F6BD64FC01B3184301A962F7 /* all.js */; };
 		3F44AF7005BDFBA000CB4B08 /* security-prefs.js in Copy Base Prefs */ = {isa = PBXBuildFile; fileRef = F55A9BC60228CCE101DAE4DB /* security-prefs.js */; };
-		3F44AF7305BDFBA000CB4B08 /* embed.jar in Copy Chrome */ = {isa = PBXBuildFile; fileRef = F6BD650001B3184301A962F7 /* embed.jar */; };
+		3F44AF7305BDFBA000CB4B08 /* toolkit.jar in Copy Chrome */ = {isa = PBXBuildFile; fileRef = F6BD650001B3184301A962F7 /* toolkit.jar */; };
 		3F44AF7305BDFBA000CB4B18 /* flashblock.jar in Copy Chrome */ = {isa = PBXBuildFile; fileRef = F6BD650001B3184301A96307 /* flashblock.jar */; };
-		3F44AF7405BDFBA000CB4B08 /* installed-chrome.txt in Copy Chrome */ = {isa = PBXBuildFile; fileRef = F5DA444A027DD5AA01A80166 /* installed-chrome.txt */; };
 		3F44AF7605BDFBA000CB4B08 /* libnss3.dylib in Copy Security Libraries */ = {isa = PBXBuildFile; fileRef = F5247C320228B91F013DD99A /* libnss3.dylib */; };
 		3F44AF7705BDFBA000CB4B08 /* libnssckbi.dylib in Copy Security Libraries */ = {isa = PBXBuildFile; fileRef = F5247C330228B91F013DD99A /* libnssckbi.dylib */; };
 		3F44AF7805BDFBA000CB4B08 /* libsmime3.dylib in Copy Security Libraries */ = {isa = PBXBuildFile; fileRef = F5247C340228B91F013DD99A /* libsmime3.dylib */; };
 		3F44AF7905BDFBA000CB4B08 /* libsoftokn3.dylib in Copy Security Libraries */ = {isa = PBXBuildFile; fileRef = F5247C350228B91F013DD99A /* libsoftokn3.dylib */; };
 		3F44AF7A05BDFBA000CB4B08 /* libssl3.dylib in Copy Security Libraries */ = {isa = PBXBuildFile; fileRef = F5247C360228B91F013DD99A /* libssl3.dylib */; };
 		3F44AF7C05BDFBA000CB4B08 /* pipboot.xpt in Copy Security Components */ = {isa = PBXBuildFile; fileRef = F5247C4C0228BBB2013DD99A /* pipboot.xpt */; };
 		3F44AF7D05BDFBA000CB4B08 /* pipnss.xpt in Copy Security Components */ = {isa = PBXBuildFile; fileRef = F5247C4D0228BBB2013DD99A /* pipnss.xpt */; };
-		3F44AF7F05BDFBA000CB4B08 /* pipnss.jar in Copy Security Chrome */ = {isa = PBXBuildFile; fileRef = F54EF7ED022A2F9C01A80165 /* pipnss.jar */; };
+		3F44AF7F05BDFBA000CB4B08 /* en-US.jar in Copy Chrome */ = {isa = PBXBuildFile; fileRef = F54EF7ED022A2F9C01A80165 /* en-US.jar */; };
 		3F44AF8705BDFBA000CB4B08 /* libxpcom.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = F57F0F470209DF5301A967DF /* libxpcom.dylib */; };
 		3F44AF8905BDFBA000CB4B08 /* libmozjs.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = F6BD637F01B30EA301A962F7 /* libmozjs.dylib */; };
 		3F44AF8A05BDFBA000CB4B08 /* libnspr4.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = F6BD638001B30EA301A962F7 /* libnspr4.dylib */; };
 		3F44AF8B05BDFBA000CB4B08 /* libplc4.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = F6BD638101B30EA301A962F7 /* libplc4.dylib */; };
 		3F44AF8C05BDFBA000CB4B08 /* libplds4.dylib in Copy Libraries */ = {isa = PBXBuildFile; fileRef = F6BD638201B30EA301A962F7 /* libplds4.dylib */; };
-		3F44AF8D05BDFBA000CB4B08 /* libwidget.rsrc in Copy Libraries */ = {isa = PBXBuildFile; fileRef = F5F14E9602A5A43A01A967F3 /* libwidget.rsrc */; };
-		3F44AF9305BDFBA000CB4B08 /* PrintPDE.plugin in Copy Plugins */ = {isa = PBXBuildFile; fileRef = 7919FCF0044631350000010E /* PrintPDE.plugin */; };
 		3F44AF9605BDFBA000CB4B08 /* libembed_base_s.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F51D9B2D0209573701A80166 /* libembed_base_s.a */; };
 		3F44AF9705BDFBA000CB4B08 /* libnecko.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F56F242602AC706801A967F3 /* libnecko.a */; };
 		3F44AF9905BDFBA000CB4B08 /* libuconv.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F56F242B02AC706801A967F3 /* libuconv.a */; };
 		3F44AF9A05BDFBA000CB4B08 /* libxpconnect.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F56F243302AC706801A967F3 /* libxpconnect.a */; };
 		3F44AF9B05BDFBA000CB4B08 /* libcaps.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F56F244502AC714601A967F3 /* libcaps.a */; };
 		3F44AF9C05BDFBA000CB4B08 /* libchrome.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F56F244602AC714601A967F3 /* libchrome.a */; };
 		3F44AF9E05BDFBA000CB4B08 /* libhtmlpars.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F56F244902AC714601A967F3 /* libhtmlpars.a */; };
 		3F44AF9F05BDFBA000CB4B08 /* libimglib2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F56F244D02AC714601A967F3 /* libimglib2.a */; };
 		3F44AFA005BDFBA000CB4B08 /* libpref.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F56F245002AC714601A967F3 /* libpref.a */; };
 		3F44AFA105BDFBA000CB4B08 /* librdf.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F56F245102AC714601A967F3 /* librdf.a */; };
 		3F44AFA205BDFBA000CB4B08 /* libdocshell.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F56F246002AC723001A967F3 /* libdocshell.a */; };
 		3F44AFA405BDFBA000CB4B08 /* libembedcomponents.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F56F246202AC723001A967F3 /* libembedcomponents.a */; };
 		3F44AFA505BDFBA000CB4B08 /* libgklayout.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F56F246402AC723001A967F3 /* libgklayout.a */; };
 		3F44AFA605BDFBA000CB4B08 /* libgkplugin.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F56F246502AC723001A967F3 /* libgkplugin.a */; };
-		3F44AFA805BDFBA000CB4B08 /* libmork.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F56F246B02AC723001A967F3 /* libmork.a */; };
 		3F44AFAA05BDFBA000CB4B08 /* libtxmgr.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F56F247002AC723001A967F3 /* libtxmgr.a */; };
 		3F44AFAB05BDFBA000CB4B08 /* libwebbrwsr.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F56F247302AC723001A967F3 /* libwebbrwsr.a */; };
 		3F44AFAC05BDFBA000CB4B08 /* libwidget_mac.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F56F247402AC723001A967F3 /* libwidget_mac.a */; };
 		3F44AFAD05BDFBA000CB4B08 /* libappcomps.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F56F248B02AC729901A967F3 /* libappcomps.a */; };
-		3F44AFAD05BDFBA000CB4B09 /* libxpautocomplete.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F56F248B02AC729901A967F4 /* libxpautocomplete.a */; };
 		3F44AFAE05BDFBA000CB4B08 /* libcookie.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F56F248C02AC729901A967F3 /* libcookie.a */; };
 		3F44AFAF05BDFBA000CB4B08 /* libpipboot.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F56F248F02AC729901A967F3 /* libpipboot.a */; };
 		3F44AFB005BDFBA000CB4B08 /* libpipnss.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F56F249002AC729901A967F3 /* libpipnss.a */; };
-		3F44AFB105BDFBA000CB4B08 /* libxmlextras.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F56F249402AC729901A967F3 /* libxmlextras.a */; };
 		3F44AFB205BDFBA000CB4B08 /* libcrmf.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F507423C02AD808201A967F3 /* libcrmf.a */; };
 		3F44AFB305BDFBA000CB4B08 /* libgkgfx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F524EF6702AD8B9301A967F3 /* libgkgfx.a */; };
 		3F44AFB405BDFBA000CB4B08 /* libunicharutil_s.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F5C2CDA702383CE601A967DF /* libunicharutil_s.a */; };
 		3F44AFB505BDFBA000CB4B08 /* liboji.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F54AD84402C115D901A967F3 /* liboji.a */; };
 		3F44AFB605BDFBA000CB4B08 /* libuniversalchardet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F5E47654030C5FD501A967F3 /* libuniversalchardet.a */; };
-		3F44AFB705BDFBA000CB4B08 /* libsuitetypeaheadfind.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A7FD31C90466004E00A80196 /* libsuitetypeaheadfind.a */; };
 		3F44AFB805BDFBA000CB4B08 /* libi18n.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A7E5D960041A07C900A967F8 /* libi18n.a */; };
 		3F44AFB905BDFBA000CB4B08 /* libjar50.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A7C1276F0495618300A967F8 /* libjar50.a */; };
-		3F44AFBA05BDFBA000CB4B08 /* libgfxshared_s.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A72CB3D8041A0BA100A967F8 /* libgfxshared_s.a */; };
 		3F44AFBB05BDFBA000CB4B08 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
 		3F44AFBC05BDFBA000CB4B08 /* PreferencePanes.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F557193A022B4102010001CA /* PreferencePanes.framework */; };
 		3F44AFBD05BDFBA000CB4B08 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F52D5CDB027D412A01A80166 /* Carbon.framework */; };
 		3F44AFBE05BDFBA000CB4B08 /* QuickTime.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F5FEDBCB02AD8DD101A967F3 /* QuickTime.framework */; };
 		3F44AFBF05BDFBA000CB4B08 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F52D5CDC027D412A01A80166 /* CoreFoundation.framework */; };
 		3F44AFC005BDFBA000CB4B08 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F52D5CDD027D412A01A80166 /* SystemConfiguration.framework */; };
 		3F44AFC205BDFBA000CB4B08 /* libucvutil_s.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0FEBFCA1044F989900A96652 /* libucvutil_s.a */; };
 		3F44AFC305BDFBA000CB4B08 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3F558E950552122E006156FD /* IOKit.framework */; };
@@ -916,18 +895,18 @@
 		4D29957E0869C44B00E84287 /* libxpcom.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = F57F0F470209DF5301A967DF /* libxpcom.dylib */; };
 		4D2995800869C44B00E84287 /* libxpcom_core.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 3F12FC56072E8ECB00995ED9 /* libxpcom_core.dylib */; };
 		4D2996660869C5FA00E84287 /* libmozz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 3FE5B9FC068A090F0001CECD /* libmozz.dylib */; };
 		4D2996670869C5FA00E84287 /* libnspr4.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = F6BD638001B30EA301A962F7 /* libnspr4.dylib */; };
 		4D2996680869C5FA00E84287 /* libplc4.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = F6BD638101B30EA301A962F7 /* libplc4.dylib */; };
 		4D2996690869C5FA00E84287 /* libplds4.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = F6BD638201B30EA301A962F7 /* libplds4.dylib */; };
 		4D29966A0869C5FA00E84287 /* libxpcom.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = F57F0F470209DF5301A967DF /* libxpcom.dylib */; };
 		4D29966B0869C5FA00E84287 /* libxpcom_core.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 3F12FC56072E8ECB00995ED9 /* libxpcom_core.dylib */; };
-		4D5881770864B28D001305B3 /* Default Plugin.plugin in Copy Gecko Plugins */ = {isa = PBXBuildFile; fileRef = F56610BC0394775201A9666E /* Default Plugin.plugin */; };
-		4D58817B0864B2AE001305B3 /* Default Plugin.plugin in Copy Gecko Plugins */ = {isa = PBXBuildFile; fileRef = F56610BC0394775201A9666E /* Default Plugin.plugin */; };
+		4D5881770864B28D001305B3 /* DefaultPlugin.plugin in Copy Gecko Plugins */ = {isa = PBXBuildFile; fileRef = F56610BC0394775201A9666E /* DefaultPlugin.plugin */; };
+		4D58817B0864B2AE001305B3 /* DefaultPlugin.plugin in Copy Gecko Plugins */ = {isa = PBXBuildFile; fileRef = F56610BC0394775201A9666E /* DefaultPlugin.plugin */; };
 		4DC28F5E099184B80081939B /* libucvmath.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4DC28F5D099184B80081939B /* libucvmath.a */; };
 		4DC41D3F0869D7A400947044 /* libjsj.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4DC41D3C0869D7A400947044 /* libjsj.a */; };
 		4DC41D400869D7A400947044 /* libmozjpeg.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4DC41D3D0869D7A400947044 /* libmozjpeg.a */; };
 		4DC41D410869D7A400947044 /* libmozpng.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4DC41D3E0869D7A400947044 /* libmozpng.a */; };
 		4DC41D410869D7A400947045 /* libmozcairo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4DC41D3E0869D7A400947045 /* libmozcairo.a */; };
 		4DC41D410869D7A400947046 /* libmozlibpixman.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4DC41D3E0869D7A400947046 /* libmozlibpixman.a */; };
 		4DD0EFF709918B3200B6BBFD /* mathml.css in Copy Gecko Resources */ = {isa = PBXBuildFile; fileRef = 0E6A9886097DFFD4007962C1 /* mathml.css */; };
 		4DD0EFF809918BCF00B6BBFD /* mathml.dtd in Copy Gecko DTDs */ = {isa = PBXBuildFile; fileRef = 0E6A9888097DFFF4007962C1 /* mathml.dtd */; };
@@ -1003,20 +982,29 @@
 		82CE28BC0736618A00B4DE07 /* table-remove-row.gif in Copy Gecko Resources */ = {isa = PBXBuildFile; fileRef = 82CE28830736615300B4DE07 /* table-remove-row.gif */; };
 		82CE28C0073661F600B4DE07 /* EditorOverride.css in Copy Gecko Resources */ = {isa = PBXBuildFile; fileRef = 82CE28BD073661E300B4DE07 /* EditorOverride.css */; };
 		82CE28C7073662B400B4DE07 /* composer.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = 82CE28C40736625800B4DE07 /* composer.xpt */; };
 		82CE28CB0736634A00B4DE07 /* txmgr.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = 82CE28C80736633900B4DE07 /* txmgr.xpt */; };
 		B3128A110E5D14C8009F0595 /* pageBigger.tiff in Resources */ = {isa = PBXBuildFile; fileRef = B3757F860E5D0FE70006EDF1 /* pageBigger.tiff */; };
 		B3128A120E5D14C8009F0595 /* pageBigger.tiff in Resources */ = {isa = PBXBuildFile; fileRef = B3757F860E5D0FE70006EDF1 /* pageBigger.tiff */; };
 		B3128A130E5D14CD009F0595 /* pageSmaller.tiff in Resources */ = {isa = PBXBuildFile; fileRef = B3757F870E5D0FE70006EDF1 /* pageSmaller.tiff */; };
 		B3128A140E5D14CE009F0595 /* pageSmaller.tiff in Resources */ = {isa = PBXBuildFile; fileRef = B3757F870E5D0FE70006EDF1 /* pageSmaller.tiff */; };
+		B33032C910AE16D7002FA0A7 /* libmorkreader_s.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33032C810AE16D7002FA0A7 /* libmorkreader_s.a */; };
+		B33032CA10AE16D7002FA0A7 /* libmorkreader_s.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B33032C810AE16D7002FA0A7 /* libmorkreader_s.a */; };
+		B33032CC10AE178E002FA0A7 /* places.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = B33032AE10AE166F002FA0A7 /* places.xpt */; };
+		B33032D510AE17A7002FA0A7 /* places.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = B33032AE10AE166F002FA0A7 /* places.xpt */; };
+		B33032F610AE17C9002FA0A7 /* nsLivemarkService.js in Copy Component Libraries */ = {isa = PBXBuildFile; fileRef = B33032AA10AE15EA002FA0A7 /* nsLivemarkService.js */; };
+		B33032F710AE17F1002FA0A7 /* nsLivemarkService.js in Copy Component Libraries */ = {isa = PBXBuildFile; fileRef = B33032AA10AE15EA002FA0A7 /* nsLivemarkService.js */; };
+		B330336310AE1C60002FA0A7 /* libplaces.dylib in Copy Component Libraries */ = {isa = PBXBuildFile; fileRef = B330336010AE1C4C002FA0A7 /* libplaces.dylib */; };
 		B386FC3110CF5AF30094DAAB /* NSMenu+Gecko.mm in Sources */ = {isa = PBXBuildFile; fileRef = B386FC3010CF5AF30094DAAB /* NSMenu+Gecko.mm */; };
 		B386FC3210CF5AF30094DAAB /* NSMenu+Gecko.mm in Sources */ = {isa = PBXBuildFile; fileRef = B386FC3010CF5AF30094DAAB /* NSMenu+Gecko.mm */; };
 		B3886D880F79D53700D8E015 /* FlashblockWhitelistManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3886D870F79D53700D8E015 /* FlashblockWhitelistManager.mm */; };
 		B3886D890F79D53700D8E015 /* FlashblockWhitelistManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3886D870F79D53700D8E015 /* FlashblockWhitelistManager.mm */; };
+		B3C5B28B1123BA15002E4C7B /* nsPlacesDBFlush.js in Copy Component Libraries */ = {isa = PBXBuildFile; fileRef = B3C5B25C1123B9A5002E4C7B /* nsPlacesDBFlush.js */; };
+		B3C5B2B11123BA33002E4C7B /* nsPlacesDBFlush.js in Copy Component Libraries */ = {isa = PBXBuildFile; fileRef = B3C5B25C1123B9A5002E4C7B /* nsPlacesDBFlush.js */; };
 		C713F0900E9AF7DB002313B3 /* CHSlidingViewAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = C713F08E0E9AF7DB002313B3 /* CHSlidingViewAnimation.m */; };
 		C713F0910E9AF7DB002313B3 /* CHSlidingViewAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = C713F08E0E9AF7DB002313B3 /* CHSlidingViewAnimation.m */; };
 		C79573880D35314D0028A773 /* XMLSearchPluginParser.mm in Sources */ = {isa = PBXBuildFile; fileRef = C79573840D35314D0028A773 /* XMLSearchPluginParser.mm */; };
 		C795738A0D35314D0028A773 /* OpenSearchParser.mm in Sources */ = {isa = PBXBuildFile; fileRef = C79573860D35314D0028A773 /* OpenSearchParser.mm */; };
 		C795738C0D35314D0028A773 /* XMLSearchPluginParser.mm in Sources */ = {isa = PBXBuildFile; fileRef = C79573840D35314D0028A773 /* XMLSearchPluginParser.mm */; };
 		C795738E0D35314D0028A773 /* OpenSearchParser.mm in Sources */ = {isa = PBXBuildFile; fileRef = C79573860D35314D0028A773 /* OpenSearchParser.mm */; };
 		C7AB1EA00EEC5FEB0053A08A /* NSTextView+Utils.m in Sources */ = {isa = PBXBuildFile; fileRef = C7AB1E9E0EEC5FEB0053A08A /* NSTextView+Utils.m */; };
 		C7AB1EA10EEC5FEB0053A08A /* NSTextView+Utils.m in Sources */ = {isa = PBXBuildFile; fileRef = C7AB1E9E0EEC5FEB0053A08A /* NSTextView+Utils.m */; };
@@ -1061,16 +1049,35 @@
 		DE1EBDBF0D066F5100BE9ECC /* mathfontSTIXSize1.properties in Copy Gecko Fonts */ = {isa = PBXBuildFile; fileRef = DE1EBDBB0D066F5100BE9ECC /* mathfontSTIXSize1.properties */; };
 		DE1EBDC00D066F5100BE9ECC /* mathfontSTIXNonUnicode.properties in Copy Gecko Fonts */ = {isa = PBXBuildFile; fileRef = DE1EBDBC0D066F5100BE9ECC /* mathfontSTIXNonUnicode.properties */; };
 		DE1EBDC10D066F5100BE9ECC /* mathfontStandardSymbolsL.properties in Copy Gecko Fonts */ = {isa = PBXBuildFile; fileRef = DE1EBDBD0D066F5100BE9ECC /* mathfontStandardSymbolsL.properties */; };
 		DE1EBDC20D066F5100BE9ECC /* mathfontUnicode.properties in Copy Gecko Fonts */ = {isa = PBXBuildFile; fileRef = DE1EBDBA0D066F5100BE9ECC /* mathfontUnicode.properties */; };
 		DE1EBDC30D066F5100BE9ECC /* mathfontSTIXSize1.properties in Copy Gecko Fonts */ = {isa = PBXBuildFile; fileRef = DE1EBDBB0D066F5100BE9ECC /* mathfontSTIXSize1.properties */; };
 		DE1EBDC40D066F5100BE9ECC /* mathfontSTIXNonUnicode.properties in Copy Gecko Fonts */ = {isa = PBXBuildFile; fileRef = DE1EBDBC0D066F5100BE9ECC /* mathfontSTIXNonUnicode.properties */; };
 		DE1EBDC50D066F5100BE9ECC /* mathfontStandardSymbolsL.properties in Copy Gecko Fonts */ = {isa = PBXBuildFile; fileRef = DE1EBDBD0D066F5100BE9ECC /* mathfontStandardSymbolsL.properties */; };
 		DE2AC7180F33EBAB009C0A42 /* libcaminosafebrowsing.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DE2AC6EC0F33EB8F009C0A42 /* libcaminosafebrowsing.a */; };
+		DE317877111E3D7F00A9D40A /* classic.jar in Copy Chrome */ = {isa = PBXBuildFile; fileRef = DE317876111E3D7F00A9D40A /* classic.jar */; };
+		DE317878111E3D7F00A9D40A /* classic.jar in Copy Chrome */ = {isa = PBXBuildFile; fileRef = DE317876111E3D7F00A9D40A /* classic.jar */; };
+		DE317881111E3E6700A9D40A /* flashblock.manifest in Copy Chrome */ = {isa = PBXBuildFile; fileRef = DE31787B111E3E6700A9D40A /* flashblock.manifest */; };
+		DE317882111E3E6700A9D40A /* toolkit.manifest in Copy Chrome */ = {isa = PBXBuildFile; fileRef = DE31787C111E3E6700A9D40A /* toolkit.manifest */; };
+		DE317883111E3E6700A9D40A /* en-US.manifest in Copy Chrome */ = {isa = PBXBuildFile; fileRef = DE31787D111E3E6700A9D40A /* en-US.manifest */; };
+		DE317884111E3E6700A9D40A /* comm.manifest in Copy Chrome */ = {isa = PBXBuildFile; fileRef = DE31787E111E3E6700A9D40A /* comm.manifest */; };
+		DE317885111E3E6700A9D40A /* comm.jar in Copy Chrome */ = {isa = PBXBuildFile; fileRef = DE31787F111E3E6700A9D40A /* comm.jar */; };
+		DE317886111E3E6700A9D40A /* classic.manifest in Copy Chrome */ = {isa = PBXBuildFile; fileRef = DE317880111E3E6700A9D40A /* classic.manifest */; };
+		DE317887111E3E6700A9D40A /* flashblock.manifest in Copy Chrome */ = {isa = PBXBuildFile; fileRef = DE31787B111E3E6700A9D40A /* flashblock.manifest */; };
+		DE317888111E3E6700A9D40A /* toolkit.manifest in Copy Chrome */ = {isa = PBXBuildFile; fileRef = DE31787C111E3E6700A9D40A /* toolkit.manifest */; };
+		DE317889111E3E6700A9D40A /* en-US.manifest in Copy Chrome */ = {isa = PBXBuildFile; fileRef = DE31787D111E3E6700A9D40A /* en-US.manifest */; };
+		DE31788A111E3E6700A9D40A /* comm.manifest in Copy Chrome */ = {isa = PBXBuildFile; fileRef = DE31787E111E3E6700A9D40A /* comm.manifest */; };
+		DE31788B111E3E6700A9D40A /* comm.jar in Copy Chrome */ = {isa = PBXBuildFile; fileRef = DE31787F111E3E6700A9D40A /* comm.jar */; };
+		DE31788C111E3E6700A9D40A /* classic.manifest in Copy Chrome */ = {isa = PBXBuildFile; fileRef = DE317880111E3E6700A9D40A /* classic.manifest */; };
+		DE317964111E87E700A9D40A /* libmozqcms.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DE317963111E87E700A9D40A /* libmozqcms.a */; };
+		DE3179DA111E91E100A9D40A /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DE3179D9111E91E100A9D40A /* AudioUnit.framework */; };
+		DE317B89111F71F000A9D40A /* libplaces.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DE317B88111F71F000A9D40A /* libplaces.a */; };
+		DE317C3A111F7DF300A9D40A /* dom_threads.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = DE317C39111F7DF300A9D40A /* dom_threads.xpt */; };
+		DE317C3B111F7DF300A9D40A /* dom_threads.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = DE317C39111F7DF300A9D40A /* dom_threads.xpt */; };
 		DE4025950FF4345D00568817 /* ServicesMenu.strings in Resources */ = {isa = PBXBuildFile; fileRef = DE4025930FF4345D00568817 /* ServicesMenu.strings */; };
 		DE4025960FF4345D00568817 /* ServicesMenu.strings in Resources */ = {isa = PBXBuildFile; fileRef = DE4025930FF4345D00568817 /* ServicesMenu.strings */; };
 		DE40444B0ED09D1E00057E17 /* pipnss_locale_security_properties.strings in Resources */ = {isa = PBXBuildFile; fileRef = DE4044060ED09D1E00057E17 /* pipnss_locale_security_properties.strings */; };
 		DE40444C0ED09D1E00057E17 /* global_locale_layout_MediaDocument_properties.strings in Resources */ = {isa = PBXBuildFile; fileRef = DE4044080ED09D1E00057E17 /* global_locale_layout_MediaDocument_properties.strings */; };
 		DE40444D0ED09D1E00057E17 /* global_locale_plugins_properties.strings in Resources */ = {isa = PBXBuildFile; fileRef = DE40440A0ED09D1E00057E17 /* global_locale_plugins_properties.strings */; };
 		DE40444F0ED09D1E00057E17 /* global_locale_css_properties.strings in Resources */ = {isa = PBXBuildFile; fileRef = DE40440E0ED09D1E00057E17 /* global_locale_css_properties.strings */; };
 		DE4044510ED09D1E00057E17 /* global_locale_layout_xmlparser_properties.strings in Resources */ = {isa = PBXBuildFile; fileRef = DE4044120ED09D1E00057E17 /* global_locale_layout_xmlparser_properties.strings */; };
 		DE4044530ED09D1E00057E17 /* pipnss_locale_pipnss_properties.strings in Resources */ = {isa = PBXBuildFile; fileRef = DE4044160ED09D1E00057E17 /* pipnss_locale_pipnss_properties.strings */; };
@@ -1169,16 +1176,18 @@
 		DEDDE2930ABFB4B400D415F2 /* libchardet.dylib in Copy Component Libraries */ = {isa = PBXBuildFile; fileRef = DEDDE22D0ABFB21A00D415F2 /* libchardet.dylib */; };
 		DEDDE3CC0ABFB97A00D415F2 /* libchardet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DEDDE3310ABFB7E500D415F2 /* libchardet.a */; };
 		DEE34A570B84F5E100BCD687 /* FileChangeWatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = DEE34A560B84F5E100BCD687 /* FileChangeWatcher.m */; settings = {COMPILER_FLAGS = "-fobjc-exceptions"; }; };
 		DEE34A580B84F5E100BCD687 /* FileChangeWatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = DEE34A560B84F5E100BCD687 /* FileChangeWatcher.m */; settings = {COMPILER_FLAGS = "-fobjc-exceptions"; }; };
 		DEE8101E0EFB7D2E006ACC7D /* aquaSelect.css in Resources */ = {isa = PBXBuildFile; fileRef = DEE8101D0EFB7D2E006ACC7D /* aquaSelect.css */; };
 		DEE8101F0EFB7D2E006ACC7D /* aquaSelect.css in Resources */ = {isa = PBXBuildFile; fileRef = DEE8101D0EFB7D2E006ACC7D /* aquaSelect.css */; };
 		DEE9EBA70AF5C390002BC511 /* SessionManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = DEE9EBA60AF5C390002BC511 /* SessionManager.mm */; };
 		DEE9EBA80AF5C390002BC511 /* SessionManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = DEE9EBA60AF5C390002BC511 /* SessionManager.mm */; };
+		DEF2115E1128FF4B00C32DAA /* PlacesDBUtils.jsm in Copy Gecko Modules */ = {isa = PBXBuildFile; fileRef = DEF2115D1128FF4B00C32DAA /* PlacesDBUtils.jsm */; };
+		DEF2115F1128FF4B00C32DAA /* PlacesDBUtils.jsm in Copy Gecko Modules */ = {isa = PBXBuildFile; fileRef = DEF2115D1128FF4B00C32DAA /* PlacesDBUtils.jsm */; };
 		DEFAA3440F241C1600BD51C1 /* Growl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DEFAA3430F241C1600BD51C1 /* Growl.framework */; };
 		DEFAA3450F241C1600BD51C1 /* Growl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DEFAA3430F241C1600BD51C1 /* Growl.framework */; };
 		DEFAA34D0F241C3C00BD51C1 /* Growl.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = DEFAA3430F241C1600BD51C1 /* Growl.framework */; };
 		DEFAA34F0F241C4F00BD51C1 /* Growl.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = DEFAA3430F241C1600BD51C1 /* Growl.framework */; };
 		DEFD23500D021C3A006899B9 /* dom_loadsave.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = DEFD234F0D021C3A006899B9 /* dom_loadsave.xpt */; };
 		DEFD23510D021C3A006899B9 /* dom_loadsave.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = DEFD234F0D021C3A006899B9 /* dom_loadsave.xpt */; };
 		DEFD23530D021C48006899B9 /* dom_storage.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = DEFD23520D021C48006899B9 /* dom_storage.xpt */; };
 		DEFD23540D021C48006899B9 /* dom_storage.xpt in Copy Component XPTs */ = {isa = PBXBuildFile; fileRef = DEFD23520D021C48006899B9 /* dom_storage.xpt */; };
@@ -1630,27 +1639,29 @@
 
 /* Begin PBXCopyFilesBuildPhase section */
 		0098B17D0CAEA96800DA0F2F /* Copy Gecko Modules */ = {
 			isa = PBXCopyFilesBuildPhase;
 			buildActionMask = 2147483647;
 			dstPath = modules;
 			dstSubfolderSpec = 6;
 			files = (
+				DEF2115F1128FF4B00C32DAA /* PlacesDBUtils.jsm in Copy Gecko Modules */,
 				0098B1800CAEA9DC00DA0F2F /* XPCOMUtils.jsm in Copy Gecko Modules */,
 			);
 			name = "Copy Gecko Modules";
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 		0098B1810CAEA9EA00DA0F2F /* Copy Gecko Modules */ = {
 			isa = PBXCopyFilesBuildPhase;
 			buildActionMask = 2147483647;
 			dstPath = modules;
 			dstSubfolderSpec = 6;
 			files = (
+				DEF2115E1128FF4B00C32DAA /* PlacesDBUtils.jsm in Copy Gecko Modules */,
 				0098B1830CAEAA0200DA0F2F /* XPCOMUtils.jsm in Copy Gecko Modules */,
 			);
 			name = "Copy Gecko Modules";
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 		0098B1F60CAEC4FD00DA0F2F /* Copy Profile Defaults */ = {
 			isa = PBXCopyFilesBuildPhase;
 			buildActionMask = 2147483647;
@@ -1689,49 +1700,48 @@
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 		0F66E4AC07D6D9B000444E2A /* Copy Component Libraries */ = {
 			isa = PBXCopyFilesBuildPhase;
 			buildActionMask = 2147483647;
 			dstPath = components;
 			dstSubfolderSpec = 6;
 			files = (
+				B33032F610AE17C9002FA0A7 /* nsLivemarkService.js in Copy Component Libraries */,
+				B3C5B28B1123BA15002E4C7B /* nsPlacesDBFlush.js in Copy Component Libraries */,
+				B330336310AE1C60002FA0A7 /* libplaces.dylib in Copy Component Libraries */,
 				DE62E4300B72B3D200142851 /* libauth.dylib in Copy Component Libraries */,
 				E4C7D98C0A32108500B455AD /* libspellchecker.dylib in Copy Component Libraries */,
 				DEDDE2930ABFB4B400D415F2 /* libchardet.dylib in Copy Component Libraries */,
 				008115480B1811F0001CB3F0 /* libgkgfxthebes.dylib in Copy Component Libraries */,
 				0E6A98A1097E0091007962C1 /* libucvmath.dylib in Copy Component Libraries */,
 				82180ACB07368BF2002EFA6D /* libcomposer.dylib in Copy Component Libraries */,
 				3F44ACD605BDFB9F00CB4B08 /* libappcomps.dylib in Copy Component Libraries */,
-				3F44ACD605BDFB9F00CB4B09 /* libxpautocomplete.dylib in Copy Component Libraries */,
 				3F44ACD805BDFB9F00CB4B08 /* libtxmgr.dylib in Copy Component Libraries */,
 				3F44ACE705BDFB9F00CB4B08 /* libcaps.dylib in Copy Component Libraries */,
 				3F44ACE805BDFB9F00CB4B08 /* libchrome.dylib in Copy Component Libraries */,
 				3F44ACE905BDFB9F00CB4B08 /* libcookie.dylib in Copy Component Libraries */,
 				3F44ACEA05BDFB9F00CB4B08 /* libdocshell.dylib in Copy Component Libraries */,
 				3F44ACEC05BDFB9F00CB4B08 /* libembedcomponents.dylib in Copy Component Libraries */,
-				3F44ACEE05BDFB9F00CB4B08 /* libmork.dylib in Copy Component Libraries */,
 				3F44ACEF05BDFB9F00CB4B08 /* libwebbrwsr.dylib in Copy Component Libraries */,
 				3F44ACFA05BDFB9F00CB4B08 /* libgklayout.dylib in Copy Component Libraries */,
 				3F44ACFB05BDFB9F00CB4B08 /* libhtmlpars.dylib in Copy Component Libraries */,
 				3F44ACFC05BDFB9F00CB4B08 /* libjar50.dylib in Copy Component Libraries */,
 				3F44ACFD05BDFB9F00CB4B08 /* libnecko.dylib in Copy Component Libraries */,
 				DED015FA0D84C5B00017CFE5 /* libimgicon.dylib in Copy Component Libraries */,
 				3F44AD0B05BDFB9F00CB4B08 /* libimglib2.dylib in Copy Component Libraries */,
 				3F44AD0C05BDFB9F00CB4B08 /* libpref.dylib in Copy Component Libraries */,
 				3F44AD0E05BDFB9F00CB4B08 /* librdf.dylib in Copy Component Libraries */,
 				3F44AD0F05BDFB9F00CB4B08 /* libuconv.dylib in Copy Component Libraries */,
 				3F44AD1005BDFB9F00CB4B08 /* libuniversalchardet.dylib in Copy Component Libraries */,
 				3F44AD1105BDFB9F00CB4B08 /* libwidget_mac.dylib in Copy Component Libraries */,
 				3F44AD1205BDFB9F00CB4B08 /* libxpconnect.dylib in Copy Component Libraries */,
 				3F44AD2305BDFB9F00CB4B08 /* libgkplugin.dylib in Copy Component Libraries */,
 				3F44AD2605BDFB9F00CB4B08 /* liboji.dylib in Copy Component Libraries */,
 				3F44AD2905BDFB9F00CB4B08 /* libi18n.dylib in Copy Component Libraries */,
-				3F44AD2A05BDFB9F00CB4B08 /* libxmlextras.dylib in Copy Component Libraries */,
-				3F44AD2B05BDFB9F00CB4B08 /* libsuitetypeaheadfind.dylib in Copy Component Libraries */,
 				0F518833088592020091F3FB /* libpermissions.dylib in Copy Component Libraries */,
 				DEC87B100C2882DC002EB106 /* libstoragecomps.dylib in Copy Component Libraries */,
 				C7DE8E2F0F30D2AD00CD3872 /* libcaminosafebrowsing.dylib in Copy Component Libraries */,
 				3F44AD2705BDFB9F00CB4B08 /* nsProxyAutoConfig.js in Copy Component Libraries */,
 				0098B1230CAEA77500DA0F2F /* nsHandlerService.js in Copy Component Libraries */,
 				C7DE8E300F30D2C100CD3872 /* nsUrlClassifierListManager.js in Copy Component Libraries */,
 				C7DE8E310F30D2C100CD3872 /* nsUrlClassifierLib.js in Copy Component Libraries */,
 			);
@@ -1765,30 +1775,33 @@
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 		3386CD380CB18D6A00B8E89D /* Copy Component Libraries */ = {
 			isa = PBXCopyFilesBuildPhase;
 			buildActionMask = 2147483647;
 			dstPath = components;
 			dstSubfolderSpec = 6;
 			files = (
+				B33032F710AE17F1002FA0A7 /* nsLivemarkService.js in Copy Component Libraries */,
+				B3C5B2B11123BA33002E4C7B /* nsPlacesDBFlush.js in Copy Component Libraries */,
 				3F44AF4405BDFBA000CB4B08 /* nsProxyAutoConfig.js in Copy Component Libraries */,
 				0098B12A0CAEA81700DA0F2F /* nsHandlerService.js in Copy Component Libraries */,
 				C7DE8E4B0F30D41500CD3872 /* nsUrlClassifierListManager.js in Copy Component Libraries */,
 				C7DE8E4C0F30D41500CD3872 /* nsUrlClassifierLib.js in Copy Component Libraries */,
 			);
 			name = "Copy Component Libraries";
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 		3F44ACCF05BDFB9E00CB4B08 /* Copy Component XPTs */ = {
 			isa = PBXCopyFilesBuildPhase;
 			buildActionMask = 2147483647;
 			dstPath = components;
 			dstSubfolderSpec = 6;
 			files = (
+				B33032CC10AE178E002FA0A7 /* places.xpt in Copy Component XPTs */,
 				E4C7D99F0A32109D00B455AD /* spellchecker.xpt in Copy Component XPTs */,
 				0F66E4A807D6D8D500444E2A /* intl.xpt in Copy Component XPTs */,
 				82180AC607368B03002EFA6D /* txmgr.xpt in Copy Component XPTs */,
 				82180AC707368B03002EFA6D /* composer.xpt in Copy Component XPTs */,
 				82AC0D65065A602200776B02 /* dom_xpath.xpt in Copy Component XPTs */,
 				DEFD23590D021C63006899B9 /* content_html.xpt in Copy Component XPTs */,
 				DEFD235A0D021C63006899B9 /* content_htmldoc.xpt in Copy Component XPTs */,
 				DEFD23580D021C63006899B9 /* content_xmldoc.xpt in Copy Component XPTs */,
@@ -1803,16 +1816,17 @@
 				3F44ACDD05BDFB9F00CB4B08 /* dom_events.xpt in Copy Component XPTs */,
 				3F44ACDE05BDFB9F00CB4B08 /* dom_html.xpt in Copy Component XPTs */,
 				DE8EEA0C0D39A2A500BB96C1 /* dom_json.xpt in Copy Component XPTs */,
 				DEFD23500D021C3A006899B9 /* dom_loadsave.xpt in Copy Component XPTs */,
 				3F44ACDF05BDFB9F00CB4B08 /* dom_range.xpt in Copy Component XPTs */,
 				DEFD23530D021C48006899B9 /* dom_storage.xpt in Copy Component XPTs */,
 				3F44ACE005BDFB9F00CB4B08 /* dom_stylesheets.xpt in Copy Component XPTs */,
 				3F44ACE005BDFB9F00CB4C08 /* dom_svg.xpt in Copy Component XPTs */,
+				DE317C3B111F7DF300A9D40A /* dom_threads.xpt in Copy Component XPTs */,
 				3F44ACE105BDFB9F00CB4B08 /* dom_traversal.xpt in Copy Component XPTs */,
 				3F44ACE205BDFB9F00CB4B08 /* dom_views.xpt in Copy Component XPTs */,
 				3F44ACE305BDFB9F00CB4B08 /* dom_xbl.xpt in Copy Component XPTs */,
 				3F44ACE405BDFB9F00CB4B08 /* dom_xul.xpt in Copy Component XPTs */,
 				3F44ACE505BDFB9F00CB4B08 /* dom.xpt in Copy Component XPTs */,
 				DE878FCD0C175ABB00153511 /* dom_offline.xpt in Copy Component XPTs */,
 				0098B19F0CAEAB0100DA0F2F /* exthandler.xpt in Copy Component XPTs */,
 				3F44ACE605BDFB9F00CB4B08 /* gfx.xpt in Copy Component XPTs */,
@@ -1853,17 +1867,16 @@
 				3F44AD1D05BDFB9F00CB4B08 /* xpcom_io.xpt in Copy Component XPTs */,
 				DEC17FE70F9E8269001E43F1 /* xpcom_system.xpt in Copy Component XPTs */,
 				3F44AD1E05BDFB9F00CB4B08 /* xpcom_threads.xpt in Copy Component XPTs */,
 				3F44AD1F05BDFB9F00CB4B08 /* xpcom_xpti.xpt in Copy Component XPTs */,
 				3F44AD2005BDFB9F00CB4B08 /* xpconnect.xpt in Copy Component XPTs */,
 				3F44AD2105BDFB9F00CB4B08 /* embed_base.xpt in Copy Component XPTs */,
 				3F44AD2205BDFB9F00CB4B08 /* imglib2.xpt in Copy Component XPTs */,
 				3F44AD2405BDFB9F00CB4B08 /* xuldoc.xpt in Copy Component XPTs */,
-				3F44AD2C05BDFB9F00CB4B08 /* suitetypeaheadfind.xpt in Copy Component XPTs */,
 				3F44ADB105BDFB9F00CB4B08 /* layout_printing.xpt in Copy Component XPTs */,
 				33E1EA990D358DFA00910BBD /* caminosearch.xpt in Copy Component XPTs */,
 			);
 			name = "Copy Component XPTs";
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 		3F44AD2D05BDFB9F00CB4B08 /* Copy Gecko Resources */ = {
 			isa = PBXCopyFilesBuildPhase;
@@ -1892,18 +1905,18 @@
 				82180AC107368AD7002EFA6D /* table-remove-row-active.gif in Copy Gecko Resources */,
 				82180AC207368AD7002EFA6D /* table-remove-row-hover.gif in Copy Gecko Resources */,
 				82180AC307368AD7002EFA6D /* table-remove-row.gif in Copy Gecko Resources */,
 				3F44AD2E05BDFB9F00CB4B08 /* charsetalias.properties in Copy Gecko Resources */,
 				3F44AD2F05BDFB9F00CB4B08 /* charsetData.properties in Copy Gecko Resources */,
 				3F44AD3005BDFB9F00CB4B08 /* langGroups.properties in Copy Gecko Resources */,
 				3F44AD3105BDFB9F00CB4B08 /* language.properties in Copy Gecko Resources */,
 				3F44AD3205BDFB9F00CB4B08 /* maccharset.properties in Copy Gecko Resources */,
-				3F44AD3305BDFB9F00CB4B08 /* broken-image.gif in Copy Gecko Resources */,
-				3F44AD3405BDFB9F00CB4B08 /* loading-image.gif in Copy Gecko Resources */,
+				3F44AD3305BDFB9F00CB4B08 /* broken-image.png in Copy Gecko Resources */,
+				3F44AD3405BDFB9F00CB4B08 /* loading-image.png in Copy Gecko Resources */,
 				3F44AD3505BDFB9F00CB4B08 /* forms.css in Copy Gecko Resources */,
 				3312BF360C84C2D4000E6965 /* arrow.gif in Copy Gecko Resources */,
 				3312BF370C84C2D4000E6965 /* arrowd.gif in Copy Gecko Resources */,
 				3F44AD3705BDFB9F00CB4B08 /* html.css in Copy Gecko Resources */,
 				3F44AD3805BDFB9F00CB4B08 /* quirk.css in Copy Gecko Resources */,
 				3F44AD3805BDFB9F00CB4C08 /* svg.css in Copy Gecko Resources */,
 				3F44AD3905BDFB9F00CB4B08 /* ua.css in Copy Gecko Resources */,
 				3F44AD3A05BDFB9F00CB4B08 /* viewsource.css in Copy Gecko Resources */,
@@ -1964,19 +1977,26 @@
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 		3F44AD5705BDFB9F00CB4B08 /* Copy Chrome */ = {
 			isa = PBXCopyFilesBuildPhase;
 			buildActionMask = 2147483647;
 			dstPath = chrome;
 			dstSubfolderSpec = 6;
 			files = (
-				3F44AD5805BDFB9F00CB4B08 /* embed.jar in Copy Chrome */,
+				DE317877111E3D7F00A9D40A /* classic.jar in Copy Chrome */,
+				DE317885111E3E6700A9D40A /* comm.jar in Copy Chrome */,
+				3F44AD7005BDFB9F00CB4B08 /* en-US.jar in Copy Chrome */,
 				3F44AD5805BDFB9F00CB4B18 /* flashblock.jar in Copy Chrome */,
-				3F44AD5905BDFB9F00CB4B08 /* installed-chrome.txt in Copy Chrome */,
+				3F44AD5805BDFB9F00CB4B08 /* toolkit.jar in Copy Chrome */,
+				DE317886111E3E6700A9D40A /* classic.manifest in Copy Chrome */,
+				DE317884111E3E6700A9D40A /* comm.manifest in Copy Chrome */,
+				DE317883111E3E6700A9D40A /* en-US.manifest in Copy Chrome */,
+				DE317881111E3E6700A9D40A /* flashblock.manifest in Copy Chrome */,
+				DE317882111E3E6700A9D40A /* toolkit.manifest in Copy Chrome */,
 			);
 			name = "Copy Chrome";
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 		3F44AD5A05BDFB9F00CB4B08 /* Copy Security Libraries */ = {
 			isa = PBXCopyFilesBuildPhase;
 			buildActionMask = 2147483647;
 			dstPath = "";
@@ -2005,19 +2025,17 @@
 				3FE5BA0D068A1A6F0001CECD /* libmozz.dylib in Copy Libraries */,
 				3F44AD6105BDFB9F00CB4B08 /* libxpcom.dylib in Copy Libraries */,
 				3F44AD6305BDFB9F00CB4B08 /* libmozjs.dylib in Copy Libraries */,
 				3F44AD6405BDFB9F00CB4B08 /* libnspr4.dylib in Copy Libraries */,
 				3F44AD6505BDFB9F00CB4B08 /* libplc4.dylib in Copy Libraries */,
 				3F44AD6605BDFB9F00CB4B08 /* libplds4.dylib in Copy Libraries */,
 				33B7763C0C4EB32C00A6D67F /* libsqlite3.dylib in Copy Libraries */,
 				3F44AD6705BDFB9F00CB4B08 /* libgkgfx.dylib in Copy Libraries */,
-				3F44AD6805BDFB9F00CB4B08 /* libwidget.rsrc in Copy Libraries */,
 				3F44AD6905BDFB9F00CB4B08 /* libjsj.dylib in Copy Libraries */,
-				33B777980C55853B00A6D67F /* libmozlcms.dylib in Copy Libraries */,
 			);
 			name = "Copy Libraries";
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 		3F44AD6A05BDFB9F00CB4B08 /* Copy Security Components */ = {
 			isa = PBXCopyFilesBuildPhase;
 			buildActionMask = 2147483647;
 			dstPath = components;
@@ -2026,27 +2044,16 @@
 				3F44AD6B05BDFB9F00CB4B08 /* pipboot.xpt in Copy Security Components */,
 				3F44AD6C05BDFB9F00CB4B08 /* pipnss.xpt in Copy Security Components */,
 				3F44AD6D05BDFB9F00CB4B08 /* libpipboot.dylib in Copy Security Components */,
 				3F44AD6E05BDFB9F00CB4B08 /* libpipnss.dylib in Copy Security Components */,
 			);
 			name = "Copy Security Components";
 			runOnlyForDeploymentPostprocessing = 0;
 		};
-		3F44AD6F05BDFB9F00CB4B08 /* Copy Security Chrome */ = {
-			isa = PBXCopyFilesBuildPhase;
-			buildActionMask = 2147483647;
-			dstPath = chrome;
-			dstSubfolderSpec = 6;
-			files = (
-				3F44AD7005BDFB9F00CB4B08 /* pipnss.jar in Copy Security Chrome */,
-			);
-			name = "Copy Security Chrome";
-			runOnlyForDeploymentPostprocessing = 0;
-		};
 		3F44AD7705BDFB9F00CB4B08 /* Copy Frameworks */ = {
 			isa = PBXCopyFilesBuildPhase;
 			buildActionMask = 12;
 			dstPath = "";
 			dstSubfolderSpec = 10;
 			files = (
 				7BAEF8120CCFDF3400384F4E /* Sparkle.framework in Copy Frameworks */,
 				DEFAA34D0F241C3C00BD51C1 /* Growl.framework in Copy Frameworks */,
@@ -2056,27 +2063,27 @@
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 		3F44AD7A05BDFB9F00CB4B08 /* Copy Plugins */ = {
 			isa = PBXCopyFilesBuildPhase;
 			buildActionMask = 2147483647;
 			dstPath = "";
 			dstSubfolderSpec = 13;
 			files = (
-				3F44AD7B05BDFB9F00CB4B08 /* PrintPDE.plugin in Copy Plugins */,
 			);
 			name = "Copy Plugins";
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 		3F44AF0905BDFBA000CB4B08 /* Copy Component XPTs */ = {
 			isa = PBXCopyFilesBuildPhase;
 			buildActionMask = 2147483647;
 			dstPath = components;
 			dstSubfolderSpec = 6;
 			files = (
+				B33032D510AE17A7002FA0A7 /* places.xpt in Copy Component XPTs */,
 				E4C7D9A00A32109D00B455AD /* spellchecker.xpt in Copy Component XPTs */,
 				82CE28CB0736634A00B4DE07 /* txmgr.xpt in Copy Component XPTs */,
 				82CE28C7073662B400B4DE07 /* composer.xpt in Copy Component XPTs */,
 				828FBD97065A986900B3D52A /* dom_xpath.xpt in Copy Component XPTs */,
 				DEFD235C0D021C63006899B9 /* content_html.xpt in Copy Component XPTs */,
 				DEFD235D0D021C63006899B9 /* content_htmldoc.xpt in Copy Component XPTs */,
 				DEFD235B0D021C63006899B9 /* content_xmldoc.xpt in Copy Component XPTs */,
 				828FBD98065A986900B3D52A /* content_xslt.xpt in Copy Component XPTs */,
@@ -2090,16 +2097,17 @@
 				3F44AF1305BDFBA000CB4B08 /* dom_events.xpt in Copy Component XPTs */,
 				3F44AF1405BDFBA000CB4B08 /* dom_html.xpt in Copy Component XPTs */,
 				DE8EEA0D0D39A2A500BB96C1 /* dom_json.xpt in Copy Component XPTs */,
 				DEFD23510D021C3A006899B9 /* dom_loadsave.xpt in Copy Component XPTs */,
 				3F44AF1505BDFBA000CB4B08 /* dom_range.xpt in Copy Component XPTs */,
 				DEFD23540D021C48006899B9 /* dom_storage.xpt in Copy Component XPTs */,
 				3F44AF1605BDFBA000CB4B08 /* dom_stylesheets.xpt in Copy Component XPTs */,
 				3F44AF1605BDFBA000CB4C08 /* dom_svg.xpt in Copy Component XPTs */,
+				DE317C3A111F7DF300A9D40A /* dom_threads.xpt in Copy Component XPTs */,
 				3F44AF1705BDFBA000CB4B08 /* dom_traversal.xpt in Copy Component XPTs */,
 				3F44AF1805BDFBA000CB4B08 /* dom_views.xpt in Copy Component XPTs */,
 				3F44AF1905BDFBA000CB4B08 /* dom_xbl.xpt in Copy Component XPTs */,
 				3F44AF1A05BDFBA000CB4B08 /* dom_xul.xpt in Copy Component XPTs */,
 				3F44AF1B05BDFBA000CB4B08 /* dom.xpt in Copy Component XPTs */,
 				DE878FCC0C175ABB00153511 /* dom_offline.xpt in Copy Component XPTs */,
 				0098B1A00CAEAB1500DA0F2F /* exthandler.xpt in Copy Component XPTs */,
 				3F44AF1C05BDFBA000CB4B08 /* gfx.xpt in Copy Component XPTs */,
@@ -2140,17 +2148,16 @@
 				3F44AF3D05BDFBA000CB4B08 /* xpcom_io.xpt in Copy Component XPTs */,
 				DEC17FE20F9E81D2001E43F1 /* xpcom_system.xpt in Copy Component XPTs */,
 				3F44AF3E05BDFBA000CB4B08 /* xpcom_threads.xpt in Copy Component XPTs */,
 				3F44AF3F05BDFBA000CB4B08 /* xpcom_xpti.xpt in Copy Component XPTs */,
 				3F44AF4005BDFBA000CB4B08 /* xpconnect.xpt in Copy Component XPTs */,
 				3F44AF4105BDFBA000CB4B08 /* embed_base.xpt in Copy Component XPTs */,
 				3F44AF4205BDFBA000CB4B08 /* imglib2.xpt in Copy Component XPTs */,
 				3F44AF4305BDFBA000CB4B08 /* xuldoc.xpt in Copy Component XPTs */,
-				3F44AF4705BDFBA000CB4B08 /* suitetypeaheadfind.xpt in Copy Component XPTs */,
 				3F44AFF905BDFBA000CB4B08 /* layout_printing.xpt in Copy Component XPTs */,
 				0F66E4A907D6D90500444E2A /* intl.xpt in Copy Component XPTs */,
 				33E1EA9A0D358E0C00910BBD /* caminosearch.xpt in Copy Component XPTs */,
 			);
 			name = "Copy Component XPTs";
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 		3F44AF4805BDFBA000CB4B08 /* Copy Gecko Resources */ = {
@@ -2179,18 +2186,18 @@
 				82CE28BA0736618A00B4DE07 /* table-remove-row-active.gif in Copy Gecko Resources */,
 				82CE28BB0736618A00B4DE07 /* table-remove-row-hover.gif in Copy Gecko Resources */,
 				82CE28BC0736618A00B4DE07 /* table-remove-row.gif in Copy Gecko Resources */,
 				3F44AF4905BDFBA000CB4B08 /* charsetalias.properties in Copy Gecko Resources */,
 				3F44AF4A05BDFBA000CB4B08 /* charsetData.properties in Copy Gecko Resources */,
 				3F44AF4B05BDFBA000CB4B08 /* langGroups.properties in Copy Gecko Resources */,
 				3F44AF4C05BDFBA000CB4B08 /* language.properties in Copy Gecko Resources */,
 				3F44AF4D05BDFBA000CB4B08 /* maccharset.properties in Copy Gecko Resources */,
-				3F44AF4E05BDFBA000CB4B08 /* loading-image.gif in Copy Gecko Resources */,
-				3F44AF4F05BDFBA000CB4B08 /* broken-image.gif in Copy Gecko Resources */,
+				3F44AF4E05BDFBA000CB4B08 /* loading-image.png in Copy Gecko Resources */,
+				3F44AF4F05BDFBA000CB4B08 /* broken-image.png in Copy Gecko Resources */,
 				3F44AF5005BDFBA000CB4B08 /* forms.css in Copy Gecko Resources */,
 				3312BF450C84C35C000E6965 /* arrow.gif in Copy Gecko Resources */,
 				3312BF460C84C35C000E6965 /* arrowd.gif in Copy Gecko Resources */,
 				3F44AF5205BDFBA000CB4B08 /* html.css in Copy Gecko Resources */,
 				3F44AF5305BDFBA000CB4B08 /* quirk.css in Copy Gecko Resources */,
 				3F44AF5305BDFBA000CB4C08 /* svg.css in Copy Gecko Resources */,
 				3F44AF5405BDFBA000CB4B08 /* ua.css in Copy Gecko Resources */,
 				3F44AF5505BDFBA000CB4B08 /* viewsource.css in Copy Gecko Resources */,
@@ -2252,19 +2259,26 @@
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 		3F44AF7205BDFBA000CB4B08 /* Copy Chrome */ = {
 			isa = PBXCopyFilesBuildPhase;
 			buildActionMask = 2147483647;
 			dstPath = chrome;
 			dstSubfolderSpec = 6;
 			files = (
-				3F44AF7305BDFBA000CB4B08 /* embed.jar in Copy Chrome */,
+				DE317878111E3D7F00A9D40A /* classic.jar in Copy Chrome */,
+				DE31788B111E3E6700A9D40A /* comm.jar in Copy Chrome */,
+				3F44AF7F05BDFBA000CB4B08 /* en-US.jar in Copy Chrome */,
 				3F44AF7305BDFBA000CB4B18 /* flashblock.jar in Copy Chrome */,
-				3F44AF7405BDFBA000CB4B08 /* installed-chrome.txt in Copy Chrome */,
+				3F44AF7305BDFBA000CB4B08 /* toolkit.jar in Copy Chrome */,
+				DE31788C111E3E6700A9D40A /* classic.manifest in Copy Chrome */,
+				DE31788A111E3E6700A9D40A /* comm.manifest in Copy Chrome */,
+				DE317889111E3E6700A9D40A /* en-US.manifest in Copy Chrome */,
+				DE317887111E3E6700A9D40A /* flashblock.manifest in Copy Chrome */,
+				DE317888111E3E6700A9D40A /* toolkit.manifest in Copy Chrome */,
 			);
 			name = "Copy Chrome";
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 		3F44AF7505BDFBA000CB4B08 /* Copy Security Libraries */ = {
 			isa = PBXCopyFilesBuildPhase;
 			buildActionMask = 2147483647;
 			dstPath = "";
@@ -2289,41 +2303,29 @@
 			dstSubfolderSpec = 6;
 			files = (
 				3F44AF7C05BDFBA000CB4B08 /* pipboot.xpt in Copy Security Components */,
 				3F44AF7D05BDFBA000CB4B08 /* pipnss.xpt in Copy Security Components */,
 			);
 			name = "Copy Security Components";
 			runOnlyForDeploymentPostprocessing = 0;
 		};
-		3F44AF7E05BDFBA000CB4B08 /* Copy Security Chrome */ = {
-			isa = PBXCopyFilesBuildPhase;
-			buildActionMask = 2147483647;
-			dstPath = chrome;
-			dstSubfolderSpec = 6;
-			files = (
-				3F44AF7F05BDFBA000CB4B08 /* pipnss.jar in Copy Security Chrome */,
-			);
-			name = "Copy Security Chrome";
-			runOnlyForDeploymentPostprocessing = 0;
-		};
 		3F44AF8605BDFBA000CB4B08 /* Copy Libraries */ = {
 			isa = PBXCopyFilesBuildPhase;
 			buildActionMask = 2147483647;
 			dstPath = "";
 			dstSubfolderSpec = 6;
 			files = (
 				3F12FD3107312CCD00995ED9 /* libxpcom_core.dylib in Copy Libraries */,
 				3F44AF8705BDFBA000CB4B08 /* libxpcom.dylib in Copy Libraries */,
 				3F44AF8905BDFBA000CB4B08 /* libmozjs.dylib in Copy Libraries */,
 				3F44AF8A05BDFBA000CB4B08 /* libnspr4.dylib in Copy Libraries */,
 				3F44AF8B05BDFBA000CB4B08 /* libplc4.dylib in Copy Libraries */,
 				3F44AF8C05BDFBA000CB4B08 /* libplds4.dylib in Copy Libraries */,
 				33B7763D0C4EB34300A6D67F /* libsqlite3.dylib in Copy Libraries */,
-				3F44AF8D05BDFBA000CB4B08 /* libwidget.rsrc in Copy Libraries */,
 			);
 			name = "Copy Libraries";
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 		3F44AF9005BDFBA000CB4B08 /* Copy Frameworks */ = {
 			isa = PBXCopyFilesBuildPhase;
 			buildActionMask = 2147483647;
 			dstPath = "";
@@ -2337,17 +2339,16 @@
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 		3F44AF9205BDFBA000CB4B08 /* Copy Plugins */ = {
 			isa = PBXCopyFilesBuildPhase;
 			buildActionMask = 2147483647;
 			dstPath = "";
 			dstSubfolderSpec = 13;
 			files = (
-				3F44AF9305BDFBA000CB4B08 /* PrintPDE.plugin in Copy Plugins */,
 			);
 			name = "Copy Plugins";
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 		3FBDC88908253CCC00D7F8E0 /* Copy Wallet Resources */ = {
 			isa = PBXCopyFilesBuildPhase;
 			buildActionMask = 2147483647;
 			dstPath = defaults/wallet;
@@ -2384,30 +2385,30 @@
 		4D5881750864B276001305B3 /* Copy Gecko Plugins */ = {
 			isa = PBXCopyFilesBuildPhase;
 			buildActionMask = 2147483647;
 			dstPath = plugins;
 			dstSubfolderSpec = 6;
 			files = (
 				3FEBB09D0899C0F700BD8373 /* JavaEmbeddingPlugin.bundle in Copy Gecko Plugins */,
 				3FEBB0F90899C18600BD8373 /* MRJPlugin.plugin in Copy Gecko Plugins */,
-				4D5881770864B28D001305B3 /* Default Plugin.plugin in Copy Gecko Plugins */,
+				4D5881770864B28D001305B3 /* DefaultPlugin.plugin in Copy Gecko Plugins */,
 			);
 			name = "Copy Gecko Plugins";
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 		4D5881790864B297001305B3 /* Copy Gecko Plugins */ = {
 			isa = PBXCopyFilesBuildPhase;
 			buildActionMask = 2147483647;
 			dstPath = plugins;
 			dstSubfolderSpec = 6;
 			files = (
 				3FEBB0A70899C0F700BD8373 /* JavaEmbeddingPlugin.bundle in Copy Gecko Plugins */,
 				3FEBB0FA0899C18600BD8373 /* MRJPlugin.plugin in Copy Gecko Plugins */,
-				4D58817B0864B2AE001305B3 /* Default Plugin.plugin in Copy Gecko Plugins */,
+				4D58817B0864B2AE001305B3 /* DefaultPlugin.plugin in Copy Gecko Plugins */,
 			);
 			name = "Copy Gecko Plugins";
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 		4DD0EFFA09918BE100B6BBFD /* Copy Gecko Fonts */ = {
 			isa = PBXCopyFilesBuildPhase;
 			buildActionMask = 2147483647;
 			dstPath = res/fonts;
@@ -2484,26 +2485,26 @@
 
 /* Begin PBXFileReference section */
 		000D0A980ED9BD7000A6C2F0 /* tabOverview.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = tabOverview.tiff; path = resources/images/toolbar/tabOverview.tiff; sourceTree = ""; };
 		0017874B0E6B3BFB00583A98 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = English; path = resources/localized/English.lproj/Localizable.strings.in; sourceTree = ""; };
 		0017874E0E6B3C7500583A98 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = English; path = resources/localized/English.lproj/CertificateDialogs.strings.in; sourceTree = ""; };
 		001787500E6B3C7500583A98 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = English; path = resources/localized/English.lproj/InfoPlist.strings.in; sourceTree = ""; };
 		001D4A240D75B0B100464BE4 /* MoveCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MoveCommand.h; path = src/appleevents/MoveCommand.h; sourceTree = ""; };
 		001D4A250D75B0B100464BE4 /* MoveCommand.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MoveCommand.mm; path = src/appleevents/MoveCommand.mm; sourceTree = ""; };
-		001FFD930C795D3300D9C2C8 /* contenteditable.css */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = contenteditable.css; path = ../dist/Embed/res/contenteditable.css; sourceTree = SOURCE_ROOT; };
-		001FFD940C795D3300D9C2C8 /* designmode.css */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = designmode.css; path = ../dist/Embed/res/designmode.css; sourceTree = SOURCE_ROOT; };
+		001FFD930C795D3300D9C2C8 /* contenteditable.css */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = contenteditable.css; path = ../dist/bin/res/contenteditable.css; sourceTree = SOURCE_ROOT; };
+		001FFD940C795D3300D9C2C8 /* designmode.css */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = designmode.css; path = ../dist/bin/res/designmode.css; sourceTree = SOURCE_ROOT; };
 		00335B8B0C655ABC00A607F2 /* WebSearchField.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = WebSearchField.h; path = src/browser/WebSearchField.h; sourceTree = ""; };
 		00335B8C0C655ABC00A607F2 /* WebSearchField.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = WebSearchField.mm; path = src/browser/WebSearchField.mm; sourceTree = ""; };
 		00450522100A8E140096B649 /* bookmark_group_badge.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = bookmark_group_badge.tiff; path = resources/images/chrome/bookmark_group_badge.tiff; sourceTree = ""; };
 		005F387D0E50852D00D8E7A6 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = resources/localized/English.lproj/InvalidCertOverrideDialog.nib; sourceTree = ""; };
 		0081150A0B180DDE001CB3F0 /* libthebes.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libthebes.a; path = ../staticlib/libthebes.a; sourceTree = SOURCE_ROOT; };
 		0081150C0B180DFA001CB3F0 /* libgkgfxthebes.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libgkgfxthebes.a; path = ../gfx/src/thebes/libgkgfxthebes.a; sourceTree = SOURCE_ROOT; };
-		008115420B180F35001CB3F0 /* libthebes.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libthebes.dylib; path = ../dist/Embed/libthebes.dylib; sourceTree = SOURCE_ROOT; };
-		008115470B1811F0001CB3F0 /* libgkgfxthebes.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libgkgfxthebes.dylib; path = ../dist/Embed/components/libgkgfxthebes.dylib; sourceTree = SOURCE_ROOT; };
+		008115420B180F35001CB3F0 /* libthebes.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libthebes.dylib; path = ../dist/bin/libthebes.dylib; sourceTree = SOURCE_ROOT; };
+		008115470B1811F0001CB3F0 /* libgkgfxthebes.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libgkgfxthebes.dylib; path = ../dist/bin/components/libgkgfxthebes.dylib; sourceTree = SOURCE_ROOT; };
 		0095FAC70D9C99880039B3D8 /* CHBrowserView+Spelling.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "CHBrowserView+Spelling.h"; path = "src/embedding/CHBrowserView+Spelling.h"; sourceTree = ""; };
 		0095FAC80D9C99880039B3D8 /* CHBrowserView+Spelling.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = "CHBrowserView+Spelling.mm"; path = "src/embedding/CHBrowserView+Spelling.mm"; sourceTree = ""; };
 		0098B11D0CAEA75700DA0F2F /* nsHandlerService.js */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.javascript; name = nsHandlerService.js; path = ../dist/bin/components/nsHandlerService.js; sourceTree = SOURCE_ROOT; };
 		0098B17F0CAEA9CF00DA0F2F /* XPCOMUtils.jsm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = XPCOMUtils.jsm; path = ../dist/bin/modules/XPCOMUtils.jsm; sourceTree = SOURCE_ROOT; };
 		0098B19E0CAEAAE800DA0F2F /* exthandler.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = exthandler.xpt; path = ../dist/bin/components/exthandler.xpt; sourceTree = SOURCE_ROOT; };
 		0098B20C0CAEC6C600DA0F2F /* mimeTypes.rdf */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.xml; name = mimeTypes.rdf; path = resources/application/mimeTypes.rdf; sourceTree = ""; };
 		0098B2980CAECEBA00DA0F2F /* necko_file.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = necko_file.xpt; path = ../dist/bin/components/necko_file.xpt; sourceTree = SOURCE_ROOT; };
 		009A854A0F892F1200C9892B /* CHCertificateOverrideManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CHCertificateOverrideManager.h; path = src/embedding/CHCertificateOverrideManager.h; sourceTree = ""; };
@@ -2537,18 +2538,18 @@
 		03E2D8530771F73F00BD2443 /* Tabs.prefPane */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Tabs.prefPane; sourceTree = BUILT_PRODUCTS_DIR; };
 		03E2D8540771F73F00BD2443 /* Info-TabsPrefPane.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info-TabsPrefPane.plist"; sourceTree = ""; };
 		03E2D85B0771F78500BD2443 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = generated/PreferencePanes/Tabs/English.lproj/Localizable.strings; sourceTree = SOURCE_ROOT; };
 		03E2D85D0771F78500BD2443 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/Tabs.nib; sourceTree = ""; };
 		03E2D85E0771F78500BD2443 /* Tabs.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Tabs.h; sourceTree = ""; };
 		03E2D85F0771F78500BD2443 /* Tabs.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = Tabs.mm; sourceTree = ""; };
 		03E2D8600771F78500BD2443 /* Tabs.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = Tabs.tiff; sourceTree = ""; };
 		089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = generated/resources/localized/English.lproj/InfoPlist.strings; sourceTree = SOURCE_ROOT; };
-		0E6A9882097DFF9A007962C1 /* libucvmath.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libucvmath.dylib; path = ../dist/Embed/components/libucvmath.dylib; sourceTree = SOURCE_ROOT; };
-		0E6A9886097DFFD4007962C1 /* mathml.css */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = mathml.css; path = ../dist/Embed/res/mathml.css; sourceTree = SOURCE_ROOT; };
+		0E6A9882097DFF9A007962C1 /* libucvmath.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libucvmath.dylib; path = ../dist/bin/components/libucvmath.dylib; sourceTree = SOURCE_ROOT; };
+		0E6A9886097DFFD4007962C1 /* mathml.css */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = mathml.css; path = ../dist/bin/res/mathml.css; sourceTree = SOURCE_ROOT; };
 		0E6A9888097DFFF4007962C1 /* mathml.dtd */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.xml; path = mathml.dtd; sourceTree = ""; };
 		0E6A988E097E0044007962C1 /* mathfont.properties */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = mathfont.properties; sourceTree = ""; };
 		0F01117308F2FE7C00423C02 /* bm_separator.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = bm_separator.tiff; path = chrome/bm_separator.tiff; sourceTree = ""; };
 		0F08FB1408D37DA90022DD45 /* NSWorkspace+Utils.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = "NSWorkspace+Utils.h"; path = "src/extensions/NSWorkspace+Utils.h"; sourceTree = ""; };
 		0F08FB1708D37DB30022DD45 /* NSWorkspace+Utils.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = "NSWorkspace+Utils.m"; path = "src/extensions/NSWorkspace+Utils.m"; sourceTree = ""; };
 		0F0AD72D08CA3682002782ED /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = resources/localized/English.lproj/CreatePasswordDialog.nib; sourceTree = ""; };
 		0F0F5E3908FC65FB00B4EBCD /* CHISupportsOwner.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = CHISupportsOwner.mm; path = src/extensions/CHISupportsOwner.mm; sourceTree = ""; };
 		0F0F5E3C08FC660300B4EBCD /* CHISupportsOwner.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = CHISupportsOwner.h; path = src/extensions/CHISupportsOwner.h; sourceTree = ""; };
@@ -2570,23 +2571,22 @@
 		0FA9712F092AF9A0005C1CA6 /* action_button.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = action_button.tiff; path = PreferencePanes/Privacy/images/action_button.tiff; sourceTree = SOURCE_ROOT; };
 		0FACBFED07DC020D00DEE23A /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = resources/localized/English.lproj/AddBookmark.nib; sourceTree = ""; };
 		0FB6D99A089B276100414498 /* bm_favicon.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = bm_favicon.tiff; path = chrome/bm_favicon.tiff; sourceTree = ""; };
 		0FBC0ECA0798F92600E8E0E2 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = resources/localized/English.lproj/BookmarksEditing.nib; sourceTree = ""; };
 		0FBC0ECD0798F94900E8E0E2 /* NSDate+Utils.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = "NSDate+Utils.m"; path = "src/extensions/NSDate+Utils.m"; sourceTree = ""; };
 		0FBC0ED00798F95400E8E0E2 /* NSMenu+Utils.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = "NSMenu+Utils.m"; path = "src/extensions/NSMenu+Utils.m"; sourceTree = ""; };
 		0FBC0ED30798F96100E8E0E2 /* NSMenu+Utils.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = "NSMenu+Utils.h"; path = "src/extensions/NSMenu+Utils.h"; sourceTree = ""; };
 		0FBC0ED40798F96100E8E0E2 /* NSDate+Utils.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = "NSDate+Utils.h"; path = "src/extensions/NSDate+Utils.h"; sourceTree = ""; };
-		0FBC0ED90798F9A000E8E0E2 /* nsSimpleGlobalHistory.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = nsSimpleGlobalHistory.cpp; path = src/history/nsSimpleGlobalHistory.cpp; sourceTree = ""; };
 		0FBC0EDC0798F9B400E8E0E2 /* HistoryOutlineViewDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = HistoryOutlineViewDelegate.mm; path = src/history/HistoryOutlineViewDelegate.mm; sourceTree = ""; };
 		0FBC0EDF0798FA1900E8E0E2 /* PopupMenuButton.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = PopupMenuButton.m; path = src/extensions/PopupMenuButton.m; sourceTree = ""; };
 		0FBC0EE20798FA2700E8E0E2 /* PopupMenuButton.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = PopupMenuButton.h; path = src/extensions/PopupMenuButton.h; sourceTree = ""; };
 		0FC4B33D08941B4F009C5F41 /* ChimeraUtils.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ChimeraUtils.h; path = src/includes/ChimeraUtils.h; sourceTree = ""; };
-		0FCCE56707D6D7DA006DD3D1 /* intl.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = intl.xpt; path = ../dist/Embed/components/intl.xpt; sourceTree = SOURCE_ROOT; };
-		0FCD858708C4D45400A1923B /* layout_xul_tree.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = layout_xul_tree.xpt; path = ../dist/Embed/components/layout_xul_tree.xpt; sourceTree = SOURCE_ROOT; };
+		0FCCE56707D6D7DA006DD3D1 /* intl.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = intl.xpt; path = ../dist/bin/components/intl.xpt; sourceTree = SOURCE_ROOT; };
+		0FCD858708C4D45400A1923B /* layout_xul_tree.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = layout_xul_tree.xpt; path = ../dist/bin/components/layout_xul_tree.xpt; sourceTree = SOURCE_ROOT; };
 		0FCD85CA08C4D6D900A1923B /* ViewCertificateDialogController.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = ViewCertificateDialogController.mm; path = src/security/ViewCertificateDialogController.mm; sourceTree = SOURCE_ROOT; };
 		0FCD85CB08C4D6D900A1923B /* BrowserSecurityDialogs.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = BrowserSecurityDialogs.mm; path = src/security/BrowserSecurityDialogs.mm; sourceTree = ""; };
 		0FCD85D108C4D6EE00A1923B /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = generated/resources/localized/English.lproj/CertificateDialogs.strings; sourceTree = SOURCE_ROOT; };
 		0FCD85DB08C4D7C000A1923B /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = resources/localized/English.lproj/ViewCertificateDialog.nib; sourceTree = ""; };
 		0FCD868C08C4E83100A1923B /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = resources/localized/English.lproj/CertificatesWindow.nib; sourceTree = ""; };
 		0FCD86DF08C4E8AA00A1923B /* CertificatesWindowController.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = CertificatesWindowController.mm; path = src/security/CertificatesWindowController.mm; sourceTree = SOURCE_ROOT; };
 		0FCD888808C52A9900A1923B /* certificate.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = certificate.tiff; path = resources/images/chrome/certificate.tiff; sourceTree = SOURCE_ROOT; };
 		0FCD888908C52A9900A1923B /* mini_cert_invalid.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = mini_cert_invalid.tiff; path = resources/images/chrome/mini_cert_invalid.tiff; sourceTree = SOURCE_ROOT; };
@@ -2604,17 +2604,17 @@
 		0FE7712A08C7C42F00AFB850 /* CertificateView.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = CertificateView.mm; path = src/security/CertificateView.mm; sourceTree = SOURCE_ROOT; };
 		0FE7721B08C7E6B700AFB850 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = resources/localized/English.lproj/DownloadCACertDialog.nib; sourceTree = ""; };
 		0FE772B908C7FF4100AFB850 /* mini_cert_untrusted.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = mini_cert_untrusted.tiff; path = resources/images/chrome/mini_cert_untrusted.tiff; sourceTree = SOURCE_ROOT; };
 		0FEA7DDD0926BBEA00B06154 /* NSFileManager+Utils.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = "NSFileManager+Utils.h"; path = "src/extensions/NSFileManager+Utils.h"; sourceTree = ""; };
 		0FEA7DE00926BBF500B06154 /* NSFileManager+Utils.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = "NSFileManager+Utils.m"; path = "src/extensions/NSFileManager+Utils.m"; sourceTree = ""; };
 		0FEA7DE30926BC0C00B06154 /* SiteIconCache.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = SiteIconCache.mm; path = src/browser/SiteIconCache.mm; sourceTree = SOURCE_ROOT; };
 		0FEA7E640926BFC600B06154 /* unknown_file_icon.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = unknown_file_icon.tiff; path = resources/images/chrome/unknown_file_icon.tiff; sourceTree = SOURCE_ROOT; };
 		0FEBFCA1044F989900A96652 /* libucvutil_s.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libucvutil_s.a; path = ../intl/uconv/util/libucvutil_s.a; sourceTree = SOURCE_ROOT; };
-		0FF288540961EDDD007527B4 /* libfreebl3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libfreebl3.dylib; path = ../dist/Embed/libfreebl3.dylib; sourceTree = SOURCE_ROOT; };
+		0FF288540961EDDD007527B4 /* libfreebl3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libfreebl3.dylib; path = ../dist/bin/libfreebl3.dylib; sourceTree = SOURCE_ROOT; };
 		0FFE0A7E079B147F00966027 /* bm_sort.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = bm_sort.tiff; path = chrome/bm_sort.tiff; sourceTree = ""; };
 		0FFE0A7F079B147F00966027 /* bm_add.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = bm_add.tiff; path = chrome/bm_add.tiff; sourceTree = ""; };
 		0FFE0A80079B147F00966027 /* bm_action.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = bm_action.tiff; path = chrome/bm_action.tiff; sourceTree = ""; };
 		1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; };
 		1B825D020C5D268600CB4343 /* Camino.sdef */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.sdef; name = Camino.sdef; path = resources/application/Camino.sdef; sourceTree = ""; };
 		1F8407030C5705CC007B893D /* TabThumbnailGridView.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = TabThumbnailGridView.mm; path = src/browser/TabThumbnailGridView.mm; sourceTree = ""; };
 		1F8407040C5705CC007B893D /* TabThumbnailGridView.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = TabThumbnailGridView.h; path = src/browser/TabThumbnailGridView.h; sourceTree = ""; };
 		1F8407050C5705CC007B893D /* ThumbnailView.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ThumbnailView.h; path = src/browser/ThumbnailView.h; sourceTree = ""; };
@@ -2622,18 +2622,18 @@
 		29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = main.m; path = src/application/main.m; sourceTree = SOURCE_ROOT; };
 		29B97319FDCFA39411CA2CEA /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = resources/localized/English.lproj/MainMenu.nib; sourceTree = SOURCE_ROOT; };
 		29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; };
 		29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; };
 		2E2939FF027F33604B000102 /* PageProxyIcon.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = PageProxyIcon.mm; path = src/browser/PageProxyIcon.mm; sourceTree = ""; };
 		2E293A00027F33604B000102 /* PageProxyIcon.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = PageProxyIcon.h; path = src/browser/PageProxyIcon.h; sourceTree = ""; };
 		2E748B72029A448D4B000102 /* HistoryMenu.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = HistoryMenu.h; path = src/browser/HistoryMenu.h; sourceTree = ""; };
 		2E748B73029A448D4B000102 /* HistoryMenu.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = HistoryMenu.mm; path = src/browser/HistoryMenu.mm; sourceTree = ""; };
-		3312BF340C84C2B4000E6965 /* arrow.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; name = arrow.gif; path = ../dist/Embed/res/arrow.gif; sourceTree = SOURCE_ROOT; };
-		3312BF350C84C2B4000E6965 /* arrowd.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; name = arrowd.gif; path = ../dist/Embed/res/arrowd.gif; sourceTree = SOURCE_ROOT; };
+		3312BF340C84C2B4000E6965 /* arrow.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; name = arrow.gif; path = ../dist/bin/res/arrow.gif; sourceTree = SOURCE_ROOT; };
+		3312BF350C84C2B4000E6965 /* arrowd.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; name = arrowd.gif; path = ../dist/bin/res/arrowd.gif; sourceTree = SOURCE_ROOT; };
 		3316F4470D11F1900025ED19 /* TabButtonView.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = TabButtonView.h; path = src/browser/TabButtonView.h; sourceTree = ""; };
 		3316F4480D11F1900025ED19 /* TabButtonView.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = TabButtonView.mm; path = src/browser/TabButtonView.mm; sourceTree = ""; };
 		332377970C4D0FBD00A34879 /* Camino.xcconfig */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.xcconfig; name = Camino.xcconfig; path = config/Camino.xcconfig; sourceTree = ""; };
 		332377CF0C4D886800A34879 /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = config/Debug.xcconfig; sourceTree = ""; };
 		332377D00C4D887600A34879 /* Release.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = config/Release.xcconfig; sourceTree = ""; };
 		332377D10C4D88D300A34879 /* PrefPane.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = PrefPane.xcconfig; path = config/PrefPane.xcconfig; sourceTree = ""; };
 		335638FD0C84D82200DC4D06 /* HistoryOutlineViewDelegate.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = HistoryOutlineViewDelegate.h; path = src/history/HistoryOutlineViewDelegate.h; sourceTree = ""; };
 		335639000C84DA6F00DC4D06 /* PageInfoWindowController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = PageInfoWindowController.h; path = src/browser/PageInfoWindowController.h; sourceTree = ""; };
@@ -2650,18 +2650,16 @@
 		336234470E6BC2FB00DD5373 /* HTMLBookmarkConverter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HTMLBookmarkConverter.m; path = src/bookmarks/HTMLBookmarkConverter.m; sourceTree = ""; };
 		337F2BA20CA200D100572F7D /* ContentDispatchChooser.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ContentDispatchChooser.h; path = src/browser/ContentDispatchChooser.h; sourceTree = ""; };
 		337F2BA30CA200D100572F7D /* ContentDispatchChooser.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = ContentDispatchChooser.mm; path = src/browser/ContentDispatchChooser.mm; sourceTree = ""; };
 		33819AD20D938A2D00CA9F52 /* GeckoPrefConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GeckoPrefConstants.h; path = src/preferences/GeckoPrefConstants.h; sourceTree = ""; };
 		33819AD30D938A2D00CA9F52 /* GeckoPrefConstants.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = GeckoPrefConstants.mm; path = src/preferences/GeckoPrefConstants.mm; sourceTree = ""; };
 		33820D980F8AA24500D2164A /* Breakpad.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Breakpad.xcodeproj; path = "google-breakpad/src/client/mac/Breakpad.xcodeproj"; sourceTree = ""; };
 		33820DC00F8AA31B00D2164A /* Breakpad.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Breakpad.framework; path = "google-breakpad/src/client/mac/build/Release/Breakpad.framework"; sourceTree = ""; };
 		33B775A90C4EAC1E00A6D67F /* libsqlite3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libsqlite3.dylib; path = ../dist/lib/libsqlite3.dylib; sourceTree = SOURCE_ROOT; };
-		33B777950C55851800A6D67F /* libmozlcms.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libmozlcms.dylib; path = ../dist/bin/libmozlcms.dylib; sourceTree = SOURCE_ROOT; };
-		33B777E10C5588E500A6D67F /* libmozlcms.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmozlcms.a; path = ../dist/lib/libmozlcms.a; sourceTree = SOURCE_ROOT; };
 		33B778800C55C57800A6D67F /* libnssdbm3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libnssdbm3.dylib; path = ../dist/lib/libnssdbm3.dylib; sourceTree = SOURCE_ROOT; };
 		33C222840D106CDD00611936 /* PreferencesWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PreferencesWindow.h; sourceTree = ""; };
 		33C222850D106CDD00611936 /* PreferencesWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PreferencesWindow.m; sourceTree = ""; };
 		33E1EA0D0D34550A00910BBD /* AddSearchProviderHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AddSearchProviderHandler.h; path = src/websearch/AddSearchProviderHandler.h; sourceTree = ""; };
 		33E1EA0E0D34550A00910BBD /* AddSearchProviderHandler.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AddSearchProviderHandler.mm; path = src/websearch/AddSearchProviderHandler.mm; sourceTree = ""; };
 		33E1EA970D358DE200910BBD /* caminosearch.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = caminosearch.xpt; path = ../dist/bin/components/caminosearch.xpt; sourceTree = SOURCE_ROOT; };
 		33E95A750D31B6FA0054C01D /* CHCookieStorage.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = CHCookieStorage.h; path = src/embedding/CHCookieStorage.h; sourceTree = ""; };
 		33E95A760D31B6FA0054C01D /* CHCookieStorage.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = CHCookieStorage.mm; path = src/embedding/CHCookieStorage.mm; sourceTree = ""; };
@@ -2676,17 +2674,17 @@
 		3D94197F0F559B2F00227277 /* blockedSite.xhtml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; name = blockedSite.xhtml; path = resources/application/blockedSite.xhtml; sourceTree = ""; };
 		3D9A2AE110019F6E00CC9154 /* SafeBrowsingBar.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = SafeBrowsingBar.mm; path = src/safebrowsing/SafeBrowsingBar.mm; sourceTree = ""; };
 		3D9A2AE210019F6E00CC9154 /* SafeBrowsingBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SafeBrowsingBar.h; path = src/safebrowsing/SafeBrowsingBar.h; sourceTree = ""; };
 		3D9A2B081001A45700CC9154 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = resources/localized/English.lproj/SafeBrowsingBar.nib; sourceTree = ""; };
 		3DACDAA80FBF1D1600709AC3 /* SafeBrowsingTestDataUpdater.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SafeBrowsingTestDataUpdater.h; path = src/safebrowsing/SafeBrowsingTestDataUpdater.h; sourceTree = ""; };
 		3DACDAA90FBF1D1600709AC3 /* SafeBrowsingTestDataUpdater.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = SafeBrowsingTestDataUpdater.mm; path = src/safebrowsing/SafeBrowsingTestDataUpdater.mm; sourceTree = ""; };
 		3DE5B6380F6C11B300D2EF11 /* TransientBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TransientBar.h; path = src/browser/TransientBar.h; sourceTree = ""; };
 		3DE5B6390F6C11B300D2EF11 /* TransientBar.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = TransientBar.mm; path = src/browser/TransientBar.mm; sourceTree = ""; };
-		3F12FC56072E8ECB00995ED9 /* libxpcom_core.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libxpcom_core.dylib; path = ../dist/Embed/libxpcom_core.dylib; sourceTree = SOURCE_ROOT; };
+		3F12FC56072E8ECB00995ED9 /* libxpcom_core.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libxpcom_core.dylib; path = ../dist/bin/libxpcom_core.dylib; sourceTree = SOURCE_ROOT; };
 		3F22CC1303DF42A200026DCE /* Charset.dict */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = Charset.dict; path = resources/application/Charset.dict; sourceTree = ""; };
 		3F27D94A05DB2600007B543D /* NSSplitView+Utils.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = "NSSplitView+Utils.h"; path = "src/extensions/NSSplitView+Utils.h"; sourceTree = ""; };
 		3F27D94B05DB2600007B543D /* NSSplitView+Utils.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = "NSSplitView+Utils.mm"; path = "src/extensions/NSSplitView+Utils.mm"; sourceTree = ""; };
 		3F2CF8CB042A88B7005FD42F /* ImageAndTextCell.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ImageAndTextCell.h; path = src/extensions/ImageAndTextCell.h; sourceTree = ""; };
 		3F2CF8CC042A88B7005FD42F /* ImageAndTextCell.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = ImageAndTextCell.m; path = src/extensions/ImageAndTextCell.m; sourceTree = ""; };
 		3F42E91A05EAD4580045A30C /* bm_folder.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = bm_folder.tiff; path = resources/images/chrome/bm_folder.tiff; sourceTree = SOURCE_ROOT; };
 		3F42EFA705EC13F90045A30C /* throbber-01.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "throbber-01.tiff"; path = "resources/images/throbber/throbber-01.tiff"; sourceTree = SOURCE_ROOT; };
 		3F42EFA805EC13F90045A30C /* throbber-07.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.gif; name = "throbber-07.tiff"; path = "resources/images/throbber/throbber-07.tiff"; sourceTree = SOURCE_ROOT; };
@@ -2707,17 +2705,17 @@
 		3F44ADF105BDFBA000CB4B08 /* Security.prefPane */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Security.prefPane; sourceTree = BUILT_PRODUCTS_DIR; };
 		3F44AE0705BDFBA000CB4B08 /* Info-WebFeaturesPrefPane.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info-WebFeaturesPrefPane.plist"; sourceTree = ""; };
 		3F44AE0805BDFBA000CB4B08 /* WebFeatures.prefPane */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = WebFeatures.prefPane; sourceTree = BUILT_PRODUCTS_DIR; };
 		3F44AFC605BDFBA100CB4B08 /* Camino.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Camino.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		3F558E950552122E006156FD /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = ""; };
 		3F63719B057CE0DE00B62EE2 /* manager.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = manager.tiff; path = resources/images/toolbar/manager.tiff; sourceTree = SOURCE_ROOT; };
 		3F7C6CB905B4819E002FFFD3 /* HistoryItem.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = HistoryItem.h; path = src/history/HistoryItem.h; sourceTree = ""; };
 		3F7C6CBA05B4819E002FFFD3 /* HistoryItem.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = HistoryItem.mm; path = src/history/HistoryItem.mm; sourceTree = ""; };
-		3F7C6CC505B5B42E002FFFD3 /* widget.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = widget.xpt; path = ../dist/Embed/components/widget.xpt; sourceTree = SOURCE_ROOT; };
+		3F7C6CC505B5B42E002FFFD3 /* widget.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = widget.xpt; path = ../dist/bin/components/widget.xpt; sourceTree = SOURCE_ROOT; };
 		3F8C005006800D8D00658CBC /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = generated/PreferencePanes/Security/English.lproj/Localizable.strings; sourceTree = SOURCE_ROOT; };
 		3F8C005606800E1300658CBC /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = generated/PreferencePanes/WebFeatures/English.lproj/Localizable.strings; sourceTree = SOURCE_ROOT; };
 		3FAA54C70587778700BBF630 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.xml; name = English; path = resources/application/English.lproj/bookmarks.plist; sourceTree = ""; };
 		3FB2BA7D0545EA80002B9691 /* Bookmark.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = Bookmark.h; path = src/bookmarks/Bookmark.h; sourceTree = ""; };
 		3FB2BA7E0545EA80002B9691 /* Bookmark.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = Bookmark.mm; path = src/bookmarks/Bookmark.mm; sourceTree = ""; };
 		3FB2BA7F0545EA80002B9691 /* BookmarkButton.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = BookmarkButton.h; path = src/bookmarks/BookmarkButton.h; sourceTree = ""; };
 		3FB2BA800545EA80002B9691 /* BookmarkButton.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = BookmarkButton.mm; path = src/bookmarks/BookmarkButton.mm; sourceTree = ""; };
 		3FB2BA810545EA80002B9691 /* BookmarkFolder.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = BookmarkFolder.h; path = src/bookmarks/BookmarkFolder.h; sourceTree = ""; };
@@ -2749,36 +2747,36 @@
 		3FB2BAE90545EBF2002B9691 /* addressbook_icon.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = addressbook_icon.tiff; path = resources/images/chrome/addressbook_icon.tiff; sourceTree = SOURCE_ROOT; };
 		3FB2BAEA0545EBF2002B9691 /* bookmarkmenu_icon.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = bookmarkmenu_icon.tiff; path = resources/images/chrome/bookmarkmenu_icon.tiff; sourceTree = SOURCE_ROOT; };
 		3FB2BAEB0545EBF2002B9691 /* bookmarktoolbar_icon.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = bookmarktoolbar_icon.tiff; path = resources/images/chrome/bookmarktoolbar_icon.tiff; sourceTree = SOURCE_ROOT; };
 		3FB2BAEC0545EBF2002B9691 /* error_page_site_icon.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = error_page_site_icon.tiff; path = resources/images/chrome/error_page_site_icon.tiff; sourceTree = SOURCE_ROOT; };
 		3FB2BAEF0545EBF2002B9691 /* rendezvous_icon.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = rendezvous_icon.tiff; path = resources/images/chrome/rendezvous_icon.tiff; sourceTree = SOURCE_ROOT; };
 		3FB2BAF10545EBF2002B9691 /* top10_icon.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = top10_icon.tiff; path = resources/images/chrome/top10_icon.tiff; sourceTree = SOURCE_ROOT; };
 		3FBDC7D908252CF300D7F8E0 /* PhoneNumber.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = PhoneNumber.mm; path = src/formfill/PhoneNumber.mm; sourceTree = ""; };
 		3FBDC7DA08252CF300D7F8E0 /* wallet.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = wallet.mm; path = src/formfill/wallet.mm; sourceTree = ""; };
-		3FBDC84E08253C8B00D7F8E0 /* DistinguishedSchema.tbl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = DistinguishedSchema.tbl; path = wallet/tables/DistinguishedSchema.tbl; sourceTree = SOURCE_ROOT; };
-		3FBDC84F08253C8B00D7F8E0 /* FieldSchema.tbl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = FieldSchema.tbl; path = wallet/tables/FieldSchema.tbl; sourceTree = SOURCE_ROOT; };
-		3FBDC85008253C8B00D7F8E0 /* PositionalSchema.tbl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = PositionalSchema.tbl; path = wallet/tables/PositionalSchema.tbl; sourceTree = SOURCE_ROOT; };
-		3FBDC85108253C8B00D7F8E0 /* SchemaConcat.tbl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = SchemaConcat.tbl; path = wallet/tables/SchemaConcat.tbl; sourceTree = SOURCE_ROOT; };
-		3FBDC85208253C8B00D7F8E0 /* SchemaStrings.tbl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = SchemaStrings.tbl; path = wallet/tables/SchemaStrings.tbl; sourceTree = SOURCE_ROOT; };
-		3FBDC85308253C8B00D7F8E0 /* StateSchema.tbl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = StateSchema.tbl; path = wallet/tables/StateSchema.tbl; sourceTree = SOURCE_ROOT; };
-		3FBDC85408253C8B00D7F8E0 /* VcardSchema.tbl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = VcardSchema.tbl; path = wallet/tables/VcardSchema.tbl; sourceTree = SOURCE_ROOT; };
+		3FBDC84E08253C8B00D7F8E0 /* DistinguishedSchema.tbl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = DistinguishedSchema.tbl; path = resources/application/DistinguishedSchema.tbl; sourceTree = SOURCE_ROOT; };
+		3FBDC84F08253C8B00D7F8E0 /* FieldSchema.tbl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = FieldSchema.tbl; path = resources/application/FieldSchema.tbl; sourceTree = SOURCE_ROOT; };
+		3FBDC85008253C8B00D7F8E0 /* PositionalSchema.tbl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = PositionalSchema.tbl; path = resources/application/PositionalSchema.tbl; sourceTree = SOURCE_ROOT; };
+		3FBDC85108253C8B00D7F8E0 /* SchemaConcat.tbl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = SchemaConcat.tbl; path = resources/application/SchemaConcat.tbl; sourceTree = SOURCE_ROOT; };
+		3FBDC85208253C8B00D7F8E0 /* SchemaStrings.tbl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = SchemaStrings.tbl; path = resources/application/SchemaStrings.tbl; sourceTree = SOURCE_ROOT; };
+		3FBDC85308253C8B00D7F8E0 /* StateSchema.tbl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = StateSchema.tbl; path = resources/application/StateSchema.tbl; sourceTree = SOURCE_ROOT; };
+		3FBDC85408253C8B00D7F8E0 /* VcardSchema.tbl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = VcardSchema.tbl; path = resources/application/VcardSchema.tbl; sourceTree = SOURCE_ROOT; };
 		3FBDC8DF0827C44B00D7F8E0 /* autofill.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = autofill.tiff; path = resources/images/toolbar/autofill.tiff; sourceTree = SOURCE_ROOT; };
 		3FC0FB7F05A0D2DC002F47DE /* ProgressView.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ProgressView.h; path = src/download/ProgressView.h; sourceTree = ""; };
 		3FC0FB8005A0D2DC002F47DE /* ProgressView.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = ProgressView.mm; path = src/download/ProgressView.mm; sourceTree = ""; };
 		3FC0FB8305A0D2F4002F47DE /* dl_cancel.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = dl_cancel.tiff; path = resources/images/toolbar/dl_cancel.tiff; sourceTree = SOURCE_ROOT; };
 		3FC0FB8405A0D2F4002F47DE /* dl_clearall.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = dl_clearall.tiff; path = resources/images/toolbar/dl_clearall.tiff; sourceTree = SOURCE_ROOT; };
 		3FC0FB8505A0D2F4002F47DE /* dl_open.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = dl_open.tiff; path = resources/images/toolbar/dl_open.tiff; sourceTree = SOURCE_ROOT; };
 		3FC0FB8605A0D2F4002F47DE /* dl_remove.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = dl_remove.tiff; path = resources/images/toolbar/dl_remove.tiff; sourceTree = SOURCE_ROOT; };
 		3FC0FB8705A0D2F4002F47DE /* dl_reveal.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = dl_reveal.tiff; path = resources/images/toolbar/dl_reveal.tiff; sourceTree = SOURCE_ROOT; };
 		3FC7EBFB05AA1D1C00C557AA /* AccessoryViews.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = AccessoryViews.nib; path = resources/localized/English.lproj/AccessoryViews.nib; sourceTree = ""; };
 		3FC9495F0642ED39008E2E3D /* tab_close_pressed.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = tab_close_pressed.tiff; path = resources/images/chrome/tab_close_pressed.tiff; sourceTree = SOURCE_ROOT; };
 		3FC949600642ED39008E2E3D /* tab_close.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = tab_close.tiff; path = resources/images/chrome/tab_close.tiff; sourceTree = SOURCE_ROOT; };
 		3FE4ECE9082C2D89003BF39E /* NSURL+Utils.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = "NSURL+Utils.m"; path = "src/extensions/NSURL+Utils.m"; sourceTree = ""; };
-		3FE5B9FC068A090F0001CECD /* libmozz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libmozz.dylib; path = ../dist/Embed/libmozz.dylib; sourceTree = SOURCE_ROOT; };
+		3FE5B9FC068A090F0001CECD /* libmozz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libmozz.dylib; path = ../dist/bin/libmozz.dylib; sourceTree = SOURCE_ROOT; };
 		3FE5BA0B068A1A140001CECD /* libmozz.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmozz.a; path = ../dist/lib/libmozz.a; sourceTree = SOURCE_ROOT; };
 		3FEBB08E0899C0F600BD8373 /* JavaEmbeddingPlugin.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; name = JavaEmbeddingPlugin.bundle; path = ../dist/bin/plugins/JavaEmbeddingPlugin.bundle; sourceTree = SOURCE_ROOT; };
 		3FEBB0E60899C18600BD8373 /* MRJPlugin.plugin */ = {isa = PBXFileReference; explicitFileType = "wrapper.plug-in"; name = MRJPlugin.plugin; path = ../dist/bin/plugins/MRJPlugin.plugin; sourceTree = SOURCE_ROOT; };
 		3FEBB43B089DA88B00BD8373 /* history.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = history.tiff; path = resources/images/toolbar/history.tiff; sourceTree = SOURCE_ROOT; };
 		3FEBB4E708A02F2900BD8373 /* dl_pause.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = dl_pause.tiff; path = resources/images/toolbar/dl_pause.tiff; sourceTree = SOURCE_ROOT; };
 		3FEBB4E808A02F2900BD8373 /* dl_resume.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = dl_resume.tiff; path = resources/images/toolbar/dl_resume.tiff; sourceTree = SOURCE_ROOT; };
 		3FECC8E505D1FE800068E7ED /* libprofdirserviceprovider_s.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libprofdirserviceprovider_s.a; path = ../profile/dirserviceprovider/src/libprofdirserviceprovider_s.a; sourceTree = SOURCE_ROOT; };
 		3FF08EF706E7CF3F001C9B19 /* BrowserTabBarView.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = BrowserTabBarView.h; path = src/browser/BrowserTabBarView.h; sourceTree = ""; };
@@ -2799,21 +2797,20 @@
 		4DC41D3D0869D7A400947044 /* libmozjpeg.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmozjpeg.a; path = ../jpeg/libmozjpeg.a; sourceTree = SOURCE_ROOT; };
 		4DC41D3E0869D7A400947044 /* libmozpng.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmozpng.a; path = ../modules/libimg/png/libmozpng.a; sourceTree = SOURCE_ROOT; };
 		4DC41D3E0869D7A400947045 /* libmozcairo.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmozcairo.a; path = ../gfx/cairo/cairo/src/libmozcairo.a; sourceTree = SOURCE_ROOT; };
 		4DC41D3E0869D7A400947046 /* libmozlibpixman.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmozlibpixman.a; path = ../gfx/cairo/libpixman/src/libmozlibpixman.a; sourceTree = SOURCE_ROOT; };
 		506770F60C823B090050EF73 /* CHSelectHandler.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = CHSelectHandler.mm; path = src/embedding/CHSelectHandler.mm; sourceTree = ""; };
 		506770F90C823B1B0050EF73 /* CHSelectHandler.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = CHSelectHandler.h; path = src/embedding/CHSelectHandler.h; sourceTree = ""; };
 		6021CDD70C84FDC4000E7754 /* CHStringBundleOverride.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = CHStringBundleOverride.h; path = src/embedding/CHStringBundleOverride.h; sourceTree = ""; };
 		6021CDD80C84FDC4000E7754 /* CHStringBundleOverride.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = CHStringBundleOverride.mm; path = src/embedding/CHStringBundleOverride.mm; sourceTree = ""; };
-		7919FCF0044631350000010E /* PrintPDE.plugin */ = {isa = PBXFileReference; lastKnownFileType = wrapper.cfbundle; name = PrintPDE.plugin; path = ../dist/package/PrintPDE.plugin; sourceTree = SOURCE_ROOT; };
 		7B5072FC0D11E83B00458384 /* KeyEquivView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = KeyEquivView.h; path = src/extensions/KeyEquivView.h; sourceTree = ""; };
 		7B5072FD0D11E83B00458384 /* KeyEquivView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = KeyEquivView.mm; path = src/extensions/KeyEquivView.mm; sourceTree = ""; };
 		7B64B7BA0CCFD9F50098406C /* Sparkle.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Sparkle.xcodeproj; path = sparkle/Sparkle.xcodeproj; sourceTree = ""; };
-		7B9A26180D411275008CDB39 /* libnssutil3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libnssutil3.dylib; path = ../dist/Embed/libnssutil3.dylib; sourceTree = SOURCE_ROOT; };
+		7B9A26180D411275008CDB39 /* libnssutil3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libnssutil3.dylib; path = ../dist/bin/libnssutil3.dylib; sourceTree = SOURCE_ROOT; };
 		7BAEF7470CCFDE7D00384F4E /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Sparkle.framework; path = sparkle/build/Release/Sparkle.framework; sourceTree = ""; };
 		7BB332F30A7E99BC0075521C /* libspellchecker.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libspellchecker.a; path = ../staticlib/components/libspellchecker.a; sourceTree = SOURCE_ROOT; };
 		7BB8FC190D2D589100CC63B0 /* KeychainDenyList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = KeychainDenyList.h; path = src/formfill/KeychainDenyList.h; sourceTree = ""; };
 		7BB8FC1A0D2D589100CC63B0 /* KeychainDenyList.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = KeychainDenyList.mm; path = src/formfill/KeychainDenyList.mm; sourceTree = ""; };
 		82180AC907368BDF002EFA6D /* libcomposer.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libcomposer.dylib; path = ../dist/bin/components/libcomposer.dylib; sourceTree = SOURCE_ROOT; };
 		82AC0D5D065A5F2300776B02 /* content_xslt.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = content_xslt.xpt; path = ../dist/bin/components/content_xslt.xpt; sourceTree = SOURCE_ROOT; };
 		82AC0D5E065A5F5100776B02 /* dom_xpath.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = dom_xpath.xpt; path = ../dist/bin/components/dom_xpath.xpt; sourceTree = SOURCE_ROOT; };
 		82CE286D0736605800B4DE07 /* libcomposer.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcomposer.a; path = ../staticlib/components/libcomposer.a; sourceTree = SOURCE_ROOT; };
@@ -2834,30 +2831,30 @@
 		82CE287F0736615300B4DE07 /* table-remove-column-hover.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; name = "table-remove-column-hover.gif"; path = "../dist/bin/res/table-remove-column-hover.gif"; sourceTree = SOURCE_ROOT; };
 		82CE28800736615300B4DE07 /* table-remove-column.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; name = "table-remove-column.gif"; path = "../dist/bin/res/table-remove-column.gif"; sourceTree = SOURCE_ROOT; };
 		82CE28810736615300B4DE07 /* table-remove-row-active.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; name = "table-remove-row-active.gif"; path = "../dist/bin/res/table-remove-row-active.gif"; sourceTree = SOURCE_ROOT; };
 		82CE28820736615300B4DE07 /* table-remove-row-hover.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; name = "table-remove-row-hover.gif"; path = "../dist/bin/res/table-remove-row-hover.gif"; sourceTree = SOURCE_ROOT; };
 		82CE28830736615300B4DE07 /* table-remove-row.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; name = "table-remove-row.gif"; path = "../dist/bin/res/table-remove-row.gif"; sourceTree = SOURCE_ROOT; };
 		82CE28BD073661E300B4DE07 /* EditorOverride.css */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = EditorOverride.css; path = ../dist/bin/res/EditorOverride.css; sourceTree = SOURCE_ROOT; };
 		82CE28C40736625800B4DE07 /* composer.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = composer.xpt; path = ../dist/bin/components/composer.xpt; sourceTree = SOURCE_ROOT; };
 		82CE28C80736633900B4DE07 /* txmgr.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = txmgr.xpt; path = ../dist/bin/components/txmgr.xpt; sourceTree = SOURCE_ROOT; };
-		A708E74103FB9041003C038B /* libi18n.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libi18n.dylib; path = ../dist/Embed/components/libi18n.dylib; sourceTree = SOURCE_ROOT; };
-		A708E74303FB90AB003C038B /* libxmlextras.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libxmlextras.dylib; path = ../dist/Embed/components/libxmlextras.dylib; sourceTree = SOURCE_ROOT; };
-		A72CB3D8041A0BA100A967F8 /* libgfxshared_s.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libgfxshared_s.a; path = ../gfx/src/shared/libgfxshared_s.a; sourceTree = SOURCE_ROOT; };
+		A708E74103FB9041003C038B /* libi18n.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libi18n.dylib; path = ../dist/bin/components/libi18n.dylib; sourceTree = SOURCE_ROOT; };
 		A7C1276F0495618300A967F8 /* libjar50.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libjar50.a; path = ../modules/libjar/libjar50.a; sourceTree = SOURCE_ROOT; };
-		A7D88E680465D94000A80196 /* libsuitetypeaheadfind.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libsuitetypeaheadfind.dylib; path = ../extensions/typeaheadfind/src/libsuitetypeaheadfind.dylib; sourceTree = SOURCE_ROOT; };
-		A7D88E6A0465D9F800A80196 /* suitetypeaheadfind.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = suitetypeaheadfind.xpt; path = ../extensions/typeaheadfind/public/_xpidlgen/suitetypeaheadfind.xpt; sourceTree = SOURCE_ROOT; };
 		A7E5D960041A07C900A967F8 /* libi18n.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libi18n.a; path = ../intl/build/libi18n.a; sourceTree = SOURCE_ROOT; };
-		A7FD31C90466004E00A80196 /* libsuitetypeaheadfind.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libsuitetypeaheadfind.a; path = ../extensions/typeaheadfind/src/libsuitetypeaheadfind.a; sourceTree = SOURCE_ROOT; };
+		B33032AA10AE15EA002FA0A7 /* nsLivemarkService.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; name = nsLivemarkService.js; path = ../dist/bin/components/nsLivemarkService.js; sourceTree = SOURCE_ROOT; };
+		B33032AE10AE166F002FA0A7 /* places.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = places.xpt; path = ../toolkit/components/places/public/_xpidlgen/places.xpt; sourceTree = SOURCE_ROOT; };
+		B33032C810AE16D7002FA0A7 /* libmorkreader_s.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmorkreader_s.a; path = ../db/morkreader/libmorkreader_s.a; sourceTree = SOURCE_ROOT; };
+		B330336010AE1C4C002FA0A7 /* libplaces.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libplaces.dylib; path = ../dist/bin/components/libplaces.dylib; sourceTree = SOURCE_ROOT; };
 		B3757F860E5D0FE70006EDF1 /* pageBigger.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = pageBigger.tiff; path = resources/images/toolbar/pageBigger.tiff; sourceTree = ""; };
 		B3757F870E5D0FE70006EDF1 /* pageSmaller.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = pageSmaller.tiff; path = resources/images/toolbar/pageSmaller.tiff; sourceTree = ""; };
 		B386FC2F10CF5AF30094DAAB /* NSMenu+Gecko.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSMenu+Gecko.h"; path = "src/extensions/NSMenu+Gecko.h"; sourceTree = ""; };
 		B386FC3010CF5AF30094DAAB /* NSMenu+Gecko.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = "NSMenu+Gecko.mm"; path = "src/extensions/NSMenu+Gecko.mm"; sourceTree = ""; };
 		B3886D840F79D52700D8E015 /* FlashblockWhitelistManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FlashblockWhitelistManager.h; path = src/browser/FlashblockWhitelistManager.h; sourceTree = ""; };
 		B3886D870F79D53700D8E015 /* FlashblockWhitelistManager.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = FlashblockWhitelistManager.mm; path = src/browser/FlashblockWhitelistManager.mm; sourceTree = ""; };
+		B3C5B25C1123B9A5002E4C7B /* nsPlacesDBFlush.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; name = nsPlacesDBFlush.js; path = ../dist/bin/components/nsPlacesDBFlush.js; sourceTree = SOURCE_ROOT; };
 		C713F08E0E9AF7DB002313B3 /* CHSlidingViewAnimation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CHSlidingViewAnimation.m; path = src/extensions/CHSlidingViewAnimation.m; sourceTree = ""; };
 		C713F08F0E9AF7DB002313B3 /* CHSlidingViewAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CHSlidingViewAnimation.h; path = src/extensions/CHSlidingViewAnimation.h; sourceTree = ""; };
 		C79573840D35314D0028A773 /* XMLSearchPluginParser.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = XMLSearchPluginParser.mm; path = src/websearch/XMLSearchPluginParser.mm; sourceTree = ""; };
 		C79573850D35314D0028A773 /* XMLSearchPluginParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = XMLSearchPluginParser.h; path = src/websearch/XMLSearchPluginParser.h; sourceTree = ""; };
 		C79573860D35314D0028A773 /* OpenSearchParser.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = OpenSearchParser.mm; path = src/websearch/OpenSearchParser.mm; sourceTree = ""; };
 		C79573870D35314D0028A773 /* OpenSearchParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OpenSearchParser.h; path = src/websearch/OpenSearchParser.h; sourceTree = ""; };
 		C7AB1E9E0EEC5FEB0053A08A /* NSTextView+Utils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSTextView+Utils.m"; path = "src/extensions/NSTextView+Utils.m"; sourceTree = ""; };
 		C7AB1E9F0EEC5FEB0053A08A /* NSTextView+Utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSTextView+Utils.h"; path = "src/extensions/NSTextView+Utils.h"; sourceTree = ""; };
@@ -2885,16 +2882,27 @@
 		DE18FBFB0F2435F700325C11 /* GrowlController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GrowlController.h; path = src/application/GrowlController.h; sourceTree = SOURCE_ROOT; };
 		DE1BDD220AD4E13000F0C7BD /* tab_scroll_button_left.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = tab_scroll_button_left.tiff; path = resources/images/chrome/tab_scroll_button_left.tiff; sourceTree = SOURCE_ROOT; };
 		DE1BDD230AD4E13000F0C7BD /* tab_scroll_button_right.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = tab_scroll_button_right.tiff; path = resources/images/chrome/tab_scroll_button_right.tiff; sourceTree = SOURCE_ROOT; };
 		DE1EBDBA0D066F5100BE9ECC /* mathfontUnicode.properties */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = mathfontUnicode.properties; path = ../dist/bin/res/fonts/mathfontUnicode.properties; sourceTree = SOURCE_ROOT; };
 		DE1EBDBB0D066F5100BE9ECC /* mathfontSTIXSize1.properties */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = mathfontSTIXSize1.properties; path = ../dist/bin/res/fonts/mathfontSTIXSize1.properties; sourceTree = SOURCE_ROOT; };
 		DE1EBDBC0D066F5100BE9ECC /* mathfontSTIXNonUnicode.properties */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = mathfontSTIXNonUnicode.properties; path = ../dist/bin/res/fonts/mathfontSTIXNonUnicode.properties; sourceTree = SOURCE_ROOT; };
 		DE1EBDBD0D066F5100BE9ECC /* mathfontStandardSymbolsL.properties */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = mathfontStandardSymbolsL.properties; path = ../dist/bin/res/fonts/mathfontStandardSymbolsL.properties; sourceTree = SOURCE_ROOT; };
 		DE2AC6EC0F33EB8F009C0A42 /* libcaminosafebrowsing.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcaminosafebrowsing.a; path = ../staticlib/components/libcaminosafebrowsing.a; sourceTree = SOURCE_ROOT; };
+		DE317876111E3D7F00A9D40A /* classic.jar */ = {isa = PBXFileReference; lastKnownFileType = archive.jar; name = classic.jar; path = ../dist/bin/chrome/classic.jar; sourceTree = SOURCE_ROOT; };
+		DE31787B111E3E6700A9D40A /* flashblock.manifest */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = flashblock.manifest; path = ../dist/bin/chrome/flashblock.manifest; sourceTree = SOURCE_ROOT; };
+		DE31787C111E3E6700A9D40A /* toolkit.manifest */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = toolkit.manifest; path = ../dist/bin/chrome/toolkit.manifest; sourceTree = SOURCE_ROOT; };
+		DE31787D111E3E6700A9D40A /* en-US.manifest */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = "en-US.manifest"; path = "../dist/bin/chrome/en-US.manifest"; sourceTree = SOURCE_ROOT; };
+		DE31787E111E3E6700A9D40A /* comm.manifest */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = comm.manifest; path = ../dist/bin/chrome/comm.manifest; sourceTree = SOURCE_ROOT; };
+		DE31787F111E3E6700A9D40A /* comm.jar */ = {isa = PBXFileReference; lastKnownFileType = archive.jar; name = comm.jar; path = ../dist/bin/chrome/comm.jar; sourceTree = SOURCE_ROOT; };
+		DE317880111E3E6700A9D40A /* classic.manifest */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = classic.manifest; path = ../dist/bin/chrome/classic.manifest; sourceTree = SOURCE_ROOT; };
+		DE317963111E87E700A9D40A /* libmozqcms.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmozqcms.a; path = ../dist/lib/libmozqcms.a; sourceTree = SOURCE_ROOT; };
+		DE3179D9111E91E100A9D40A /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = /System/Library/Frameworks/AudioUnit.framework; sourceTree = ""; };
+		DE317B88111F71F000A9D40A /* libplaces.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libplaces.a; path = ../staticlib/components/libplaces.a; sourceTree = SOURCE_ROOT; };
+		DE317C39111F7DF300A9D40A /* dom_threads.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = dom_threads.xpt; path = ../dist/bin/components/dom_threads.xpt; sourceTree = SOURCE_ROOT; };
 		DE4025940FF4345D00568817 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = generated/resources/localized/English.lproj/ServicesMenu.strings; sourceTree = ""; };
 		DE4025DE0FF435A200568817 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = English; path = resources/localized/English.lproj/ServicesMenu.strings.in; sourceTree = ""; };
 		DE4044070ED09D1E00057E17 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = generated/resources/localized/English.lproj/pipnss_locale_security_properties.strings; sourceTree = ""; };
 		DE4044090ED09D1E00057E17 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = generated/resources/localized/English.lproj/global_locale_layout_MediaDocument_properties.strings; sourceTree = ""; };
 		DE40440B0ED09D1E00057E17 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = generated/resources/localized/English.lproj/global_locale_plugins_properties.strings; sourceTree = ""; };
 		DE40440F0ED09D1E00057E17 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = generated/resources/localized/English.lproj/global_locale_css_properties.strings; sourceTree = ""; };
 		DE4044130ED09D1E00057E17 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = generated/resources/localized/English.lproj/global_locale_layout_xmlparser_properties.strings; sourceTree = ""; };
 		DE4044170ED09D1E00057E17 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = generated/resources/localized/English.lproj/pipnss_locale_pipnss_properties.strings; sourceTree = ""; };
@@ -2922,17 +2930,17 @@
 		DE70BE6F0CBC7CB400C1CC63 /* ToolbarScriptItem.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ToolbarScriptItem.h; path = src/appleevents/ToolbarScriptItem.h; sourceTree = SOURCE_ROOT; };
 		DE74F7470AB25E7D00FD1D5B /* AppListMenuFactory.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = AppListMenuFactory.mm; path = src/browser/AppListMenuFactory.mm; sourceTree = ""; };
 		DE74F74A0AB25E9900FD1D5B /* AppListMenuFactory.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = AppListMenuFactory.h; path = src/browser/AppListMenuFactory.h; sourceTree = ""; };
 		DE74F74D0AB25EBC00FD1D5B /* FeedServiceController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = FeedServiceController.h; path = src/browser/FeedServiceController.h; sourceTree = ""; };
 		DE74F7540AB25EDA00FD1D5B /* FeedServiceController.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = FeedServiceController.mm; path = src/browser/FeedServiceController.mm; sourceTree = ""; };
 		DE74F7610AB2612700FD1D5B /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = resources/localized/English.lproj/OpenFeed.nib; sourceTree = ""; };
 		DE74F7640AB2618200FD1D5B /* feed.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = feed.tiff; path = resources/images/chrome/feed.tiff; sourceTree = SOURCE_ROOT; };
 		DE846DA80D84D03400009C6A /* libimgicon.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libimgicon.a; path = ../staticlib/components/libimgicon.a; sourceTree = SOURCE_ROOT; };
-		DE878FCB0C175ABB00153511 /* dom_offline.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = dom_offline.xpt; path = ../dist/Embed/components/dom_offline.xpt; sourceTree = SOURCE_ROOT; };
+		DE878FCB0C175ABB00153511 /* dom_offline.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = dom_offline.xpt; path = ../dist/bin/components/dom_offline.xpt; sourceTree = SOURCE_ROOT; };
 		DE8AD69F0ADB4E38009D44F6 /* bm_horizontal_separator.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = bm_horizontal_separator.tiff; path = resources/images/chrome/bm_horizontal_separator.tiff; sourceTree = SOURCE_ROOT; };
 		DE8C61FE0AB67CDA00078871 /* hidemanager.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = hidemanager.tiff; path = resources/images/toolbar/hidemanager.tiff; sourceTree = SOURCE_ROOT; };
 		DE8EEA0B0D39A2A500BB96C1 /* dom_json.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = dom_json.xpt; path = ../dist/bin/components/dom_json.xpt; sourceTree = SOURCE_ROOT; };
 		DE963D110D43EFCF007D44EE /* AutoCompleteUtils.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AutoCompleteUtils.mm; path = src/formfill/AutoCompleteUtils.mm; sourceTree = SOURCE_ROOT; };
 		DE963D120D43EFCF007D44EE /* FormFillPopup.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = FormFillPopup.mm; path = src/formfill/FormFillPopup.mm; sourceTree = SOURCE_ROOT; };
 		DE963D130D43EFCF007D44EE /* FormFillController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = FormFillController.mm; path = src/formfill/FormFillController.mm; sourceTree = SOURCE_ROOT; };
 		DE963D140D43EFCF007D44EE /* KeychainAutoCompleteSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = KeychainAutoCompleteSession.h; path = src/formfill/KeychainAutoCompleteSession.h; sourceTree = SOURCE_ROOT; };
 		DE963D150D43EFCF007D44EE /* KeychainAutoCompleteSession.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = KeychainAutoCompleteSession.mm; path = src/formfill/KeychainAutoCompleteSession.mm; sourceTree = SOURCE_ROOT; };
@@ -2950,23 +2958,24 @@
 		DEC17FE00F9E7EEF001E43F1 /* locale.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = locale.xpt; path = ../dist/bin/components/locale.xpt; sourceTree = SOURCE_ROOT; };
 		DEC17FE10F9E7F0C001E43F1 /* xpcom_system.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = xpcom_system.xpt; path = ../dist/bin/components/xpcom_system.xpt; sourceTree = SOURCE_ROOT; };
 		DEC180770F9EA96A001E43F1 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = generated/resources/localized/English.lproj/global_locale_crashes_properties.strings; sourceTree = ""; };
 		DEC87B0F0C2882DC002EB106 /* libstoragecomps.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libstoragecomps.dylib; path = ../dist/bin/components/libstoragecomps.dylib; sourceTree = SOURCE_ROOT; };
 		DEC87B110C288337002EB106 /* storage.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = storage.xpt; path = ../dist/bin/components/storage.xpt; sourceTree = SOURCE_ROOT; };
 		DEC87B140C288403002EB106 /* libstoragecomps.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libstoragecomps.a; path = ../staticlib/components/libstoragecomps.a; sourceTree = SOURCE_ROOT; };
 		DED015F90D84C5B00017CFE5 /* libimgicon.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libimgicon.dylib; path = ../dist/bin/components/libimgicon.dylib; sourceTree = SOURCE_ROOT; };
 		DED0160B0D84C9810017CFE5 /* imgicon.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = imgicon.xpt; path = ../dist/bin/components/imgicon.xpt; sourceTree = SOURCE_ROOT; };
-		DEDDE22D0ABFB21A00D415F2 /* libchardet.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libchardet.dylib; path = ../dist/Embed/components/libchardet.dylib; sourceTree = SOURCE_ROOT; };
+		DEDDE22D0ABFB21A00D415F2 /* libchardet.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libchardet.dylib; path = ../dist/bin/components/libchardet.dylib; sourceTree = SOURCE_ROOT; };
 		DEDDE3310ABFB7E500D415F2 /* libchardet.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libchardet.a; path = ../intl/chardet/src/libchardet.a; sourceTree = SOURCE_ROOT; };
 		DEE34A530B84F5C600BCD687 /* FileChangeWatcher.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = FileChangeWatcher.h; path = src/download/FileChangeWatcher.h; sourceTree = ""; };
 		DEE34A560B84F5E100BCD687 /* FileChangeWatcher.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = FileChangeWatcher.m; path = src/download/FileChangeWatcher.m; sourceTree = ""; };
 		DEE8101D0EFB7D2E006ACC7D /* aquaSelect.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = aquaSelect.css; path = resources/application/aquaSelect.css; sourceTree = SOURCE_ROOT; };
 		DEE9EBA30AF5C379002BC511 /* SessionManager.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = SessionManager.h; path = src/application/SessionManager.h; sourceTree = ""; };
 		DEE9EBA60AF5C390002BC511 /* SessionManager.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = SessionManager.mm; path = src/application/SessionManager.mm; sourceTree = SOURCE_ROOT; };
+		DEF2115D1128FF4B00C32DAA /* PlacesDBUtils.jsm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = PlacesDBUtils.jsm; path = ../dist/bin/modules/PlacesDBUtils.jsm; sourceTree = SOURCE_ROOT; };
 		DEFAA2850F24192200BD51C1 /* Growl.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Growl.xcodeproj; path = growl/Growl.xcodeproj; sourceTree = SOURCE_ROOT; };
 		DEFAA3430F241C1600BD51C1 /* Growl.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; name = Growl.framework; path = growl/build/Release/Growl.framework; sourceTree = ""; };
 		DEFD234F0D021C3A006899B9 /* dom_loadsave.xpt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = file; name = dom_loadsave.xpt; path = ../dist/bin/components/dom_loadsave.xpt; sourceTree = SOURCE_ROOT; };
 		DEFD23520D021C48006899B9 /* dom_storage.xpt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = file; name = dom_storage.xpt; path = ../dist/bin/components/dom_storage.xpt; sourceTree = SOURCE_ROOT; };
 		DEFD23550D021C63006899B9 /* content_xmldoc.xpt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = file; name = content_xmldoc.xpt; path = ../dist/bin/components/content_xmldoc.xpt; sourceTree = SOURCE_ROOT; };
 		DEFD23560D021C63006899B9 /* content_html.xpt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = file; name = content_html.xpt; path = ../dist/bin/components/content_html.xpt; sourceTree = SOURCE_ROOT; };
 		DEFD23570D021C63006899B9 /* content_htmldoc.xpt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = file; name = content_htmldoc.xpt; path = ../dist/bin/components/content_htmldoc.xpt; sourceTree = SOURCE_ROOT; };
 		DEFD235E0D021C6A006899B9 /* content_xtf.xpt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = file; name = content_xtf.xpt; path = ../dist/bin/components/content_xtf.xpt; sourceTree = SOURCE_ROOT; };
@@ -3028,25 +3037,25 @@
 		F517941F027F3F2901A967DF /* xuldoc.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = xuldoc.xpt; path = ../content/xul/document/public/_xpidlgen/xuldoc.xpt; sourceTree = SOURCE_ROOT; };
 		F5179422028275B801A967DF /* globe_ico.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = globe_ico.tiff; path = resources/images/chrome/globe_ico.tiff; sourceTree = SOURCE_ROOT; };
 		F51842FC0206176901A966FE /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = resources/localized/English.lproj/BrowserWindow.nib; sourceTree = SOURCE_ROOT; };
 		F51B70B6026EC98B01A80166 /* GetURLCommand.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = GetURLCommand.h; path = src/appleevents/GetURLCommand.h; sourceTree = ""; };
 		F51B70B7026EC98B01A80166 /* GetURLCommand.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = GetURLCommand.mm; path = src/appleevents/GetURLCommand.mm; sourceTree = SOURCE_ROOT; };
 		F51D9B2D0209573701A80166 /* libembed_base_s.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libembed_base_s.a; path = ../embedding/base/libembed_base_s.a; sourceTree = ""; };
 		F520BEC7036041D501026D5D /* textBigger.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = textBigger.tiff; path = resources/images/toolbar/textBigger.tiff; sourceTree = SOURCE_ROOT; };
 		F520BEC8036041D501026D5D /* textSmaller.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = textSmaller.tiff; path = resources/images/toolbar/textSmaller.tiff; sourceTree = SOURCE_ROOT; };
-		F5247C320228B91F013DD99A /* libnss3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libnss3.dylib; path = ../dist/Embed/libnss3.dylib; sourceTree = SOURCE_ROOT; };
-		F5247C330228B91F013DD99A /* libnssckbi.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libnssckbi.dylib; path = ../dist/Embed/libnssckbi.dylib; sourceTree = SOURCE_ROOT; };
-		F5247C340228B91F013DD99A /* libsmime3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libsmime3.dylib; path = ../dist/Embed/libsmime3.dylib; sourceTree = SOURCE_ROOT; };
-		F5247C350228B91F013DD99A /* libsoftokn3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libsoftokn3.dylib; path = ../dist/Embed/libsoftokn3.dylib; sourceTree = SOURCE_ROOT; };
-		F5247C360228B91F013DD99A /* libssl3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libssl3.dylib; path = ../dist/Embed/libssl3.dylib; sourceTree = SOURCE_ROOT; };
-		F5247C3C0228B990013DD99A /* libpipboot.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libpipboot.dylib; path = ../dist/Embed/components/libpipboot.dylib; sourceTree = SOURCE_ROOT; };
-		F5247C3D0228B990013DD99A /* libpipnss.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libpipnss.dylib; path = ../dist/Embed/components/libpipnss.dylib; sourceTree = SOURCE_ROOT; };
-		F5247C4C0228BBB2013DD99A /* pipboot.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = pipboot.xpt; path = ../dist/Embed/components/pipboot.xpt; sourceTree = SOURCE_ROOT; };
-		F5247C4D0228BBB2013DD99A /* pipnss.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = pipnss.xpt; path = ../dist/Embed/components/pipnss.xpt; sourceTree = SOURCE_ROOT; };
+		F5247C320228B91F013DD99A /* libnss3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libnss3.dylib; path = ../dist/bin/libnss3.dylib; sourceTree = SOURCE_ROOT; };
+		F5247C330228B91F013DD99A /* libnssckbi.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libnssckbi.dylib; path = ../dist/bin/libnssckbi.dylib; sourceTree = SOURCE_ROOT; };
+		F5247C340228B91F013DD99A /* libsmime3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libsmime3.dylib; path = ../dist/bin/libsmime3.dylib; sourceTree = SOURCE_ROOT; };
+		F5247C350228B91F013DD99A /* libsoftokn3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libsoftokn3.dylib; path = ../dist/bin/libsoftokn3.dylib; sourceTree = SOURCE_ROOT; };
+		F5247C360228B91F013DD99A /* libssl3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libssl3.dylib; path = ../dist/bin/libssl3.dylib; sourceTree = SOURCE_ROOT; };
+		F5247C3C0228B990013DD99A /* libpipboot.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libpipboot.dylib; path = ../dist/bin/components/libpipboot.dylib; sourceTree = SOURCE_ROOT; };
+		F5247C3D0228B990013DD99A /* libpipnss.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libpipnss.dylib; path = ../dist/bin/components/libpipnss.dylib; sourceTree = SOURCE_ROOT; };
+		F5247C4C0228BBB2013DD99A /* pipboot.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = pipboot.xpt; path = ../dist/bin/components/pipboot.xpt; sourceTree = SOURCE_ROOT; };
+		F5247C4D0228BBB2013DD99A /* pipnss.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = pipnss.xpt; path = ../dist/bin/components/pipnss.xpt; sourceTree = SOURCE_ROOT; };
 		F524EF6702AD8B9301A967F3 /* libgkgfx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libgkgfx.a; path = ../dist/lib/libgkgfx.a; sourceTree = SOURCE_ROOT; };
 		F52627D4027E982201000102 /* General.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 2; lastKnownFileType = sourcecode.c.h; name = General.h; path = PreferencePanes/General/General.h; sourceTree = SOURCE_ROOT; tabWidth = 2; };
 		F52627D5027E982201000102 /* General.mm */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 2; lastKnownFileType = sourcecode.cpp.objcpp; name = General.mm; path = PreferencePanes/General/General.mm; sourceTree = SOURCE_ROOT; tabWidth = 2; };
 		F52627D8027E984501000102 /* General.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = General.tiff; path = PreferencePanes/General/General.tiff; sourceTree = SOURCE_ROOT; };
 		F52627DA027E98A401000102 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = PreferencePanes/General/English.lproj/General.nib; sourceTree = SOURCE_ROOT; };
 		F527C90203BCD43601A80166 /* NSView+Utils.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = "NSView+Utils.h"; path = "src/extensions/NSView+Utils.h"; sourceTree = ""; };
 		F527C90303BCD43601A80166 /* NSView+Utils.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = "NSView+Utils.m"; path = "src/extensions/NSView+Utils.m"; sourceTree = ""; };
 		F52CE65902BFA88701026D5D /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = generated/resources/localized/English.lproj/Localizable.strings; sourceTree = SOURCE_ROOT; };
@@ -3082,17 +3091,17 @@
 		F541495F02711B0001A80166 /* NSImage+Utils.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = "NSImage+Utils.m"; path = "src/extensions/NSImage+Utils.m"; sourceTree = ""; };
 		F541496202714F9A01A80166 /* groupbookmark.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = groupbookmark.tiff; path = resources/images/chrome/groupbookmark.tiff; sourceTree = SOURCE_ROOT; };
 		F5461CBB03AAC25C01A96660 /* nsProxyAutoConfig.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; name = nsProxyAutoConfig.js; path = ../dist/bin/components/nsProxyAutoConfig.js; sourceTree = SOURCE_ROOT; };
 		F549ACDE0302DE6001026D5D /* ToolTip.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = ToolTip.mm; path = src/browser/ToolTip.mm; sourceTree = ""; };
 		F549ACDF0302DE6001026D5D /* NSScreen+Utils.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = "NSScreen+Utils.m"; path = "src/extensions/NSScreen+Utils.m"; sourceTree = ""; };
 		F549ACE40302DEBB01026D5D /* NSScreen+Utils.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = "NSScreen+Utils.h"; path = "src/extensions/NSScreen+Utils.h"; sourceTree = ""; };
 		F549ACE70302DEF001026D5D /* ToolTip.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ToolTip.h; path = src/browser/ToolTip.h; sourceTree = ""; };
 		F54AD84402C115D901A967F3 /* liboji.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = liboji.a; path = ../modules/oji/src/liboji.a; sourceTree = SOURCE_ROOT; };
-		F54EF7ED022A2F9C01A80165 /* pipnss.jar */ = {isa = PBXFileReference; lastKnownFileType = archive.jar; name = pipnss.jar; path = ../dist/Embed/chrome/pipnss.jar; sourceTree = SOURCE_ROOT; };
+		F54EF7ED022A2F9C01A80165 /* en-US.jar */ = {isa = PBXFileReference; lastKnownFileType = archive.jar; name = "en-US.jar"; path = "../dist/bin/chrome/en-US.jar"; sourceTree = SOURCE_ROOT; };
 		F5547D60020333DA01F448B0 /* home.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = home.tiff; path = resources/images/toolbar/home.tiff; sourceTree = SOURCE_ROOT; };
 		F5555C8202022F070164C72B /* back.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = back.tiff; path = resources/images/toolbar/back.tiff; sourceTree = SOURCE_ROOT; };
 		F5555C8302022F070164C72B /* forward.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = forward.tiff; path = resources/images/toolbar/forward.tiff; sourceTree = SOURCE_ROOT; };
 		F5555C8402022F070164C72B /* reload.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = reload.tiff; path = resources/images/toolbar/reload.tiff; sourceTree = SOURCE_ROOT; };
 		F5555C8502022F070164C72B /* stop.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = stop.tiff; path = resources/images/toolbar/stop.tiff; sourceTree = SOURCE_ROOT; };
 		F5566DC0038E075F01A80166 /* closeTab.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = closeTab.tiff; path = resources/images/toolbar/closeTab.tiff; sourceTree = SOURCE_ROOT; };
 		F5566DC1038E075F01A80166 /* newTab.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = newTab.tiff; path = resources/images/toolbar/newTab.tiff; sourceTree = SOURCE_ROOT; };
 		F5566DC3038E075F01A80166 /* sendLink.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = sendLink.tiff; path = resources/images/toolbar/sendLink.tiff; sourceTree = SOURCE_ROOT; };
@@ -3104,23 +3113,23 @@
 		F5581379030AEF9B0176F207 /* RemoteDataProvider.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = RemoteDataProvider.h; path = src/browser/RemoteDataProvider.h; sourceTree = ""; };
 		F558137A030AEF9B0176F207 /* SiteIconProvider.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = SiteIconProvider.h; path = src/browser/SiteIconProvider.h; sourceTree = ""; };
 		F558137C030AEF9B0176F207 /* RemoteDataProvider.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = RemoteDataProvider.mm; path = src/browser/RemoteDataProvider.mm; sourceTree = SOURCE_ROOT; };
 		F558137D030AEF9B0176F207 /* SiteIconProvider.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = SiteIconProvider.mm; path = src/browser/SiteIconProvider.mm; sourceTree = SOURCE_ROOT; };
 		F558B1F0030F6E470166970F /* CHBrowserListener.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = CHBrowserListener.h; path = src/embedding/CHBrowserListener.h; sourceTree = ""; };
 		F558B1F1030F6E470166970F /* CHBrowserListener.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = CHBrowserListener.mm; path = src/embedding/CHBrowserListener.mm; sourceTree = ""; };
 		F558B1F1030F6E470166971F /* CmXULAppInfo.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = CmXULAppInfo.h; path = src/embedding/CmXULAppInfo.h; sourceTree = ""; };
 		F558B1F1030F6E470166972F /* CmXULAppInfo.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = CmXULAppInfo.mm; path = src/embedding/CmXULAppInfo.mm; sourceTree = ""; };
-		F55A9BC60228CCE101DAE4DB /* security-prefs.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; name = "security-prefs.js"; path = "../dist/Embed/greprefs/security-prefs.js"; sourceTree = SOURCE_ROOT; };
-		F55B6BF402EF1F7E01026D5D /* broken-image.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; name = "broken-image.gif"; path = "resources/images/gecko/broken-image.gif"; sourceTree = SOURCE_ROOT; };
+		F55A9BC60228CCE101DAE4DB /* security-prefs.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; name = "security-prefs.js"; path = "../dist/bin/greprefs/security-prefs.js"; sourceTree = SOURCE_ROOT; };
+		F55B6BF402EF1F7E01026D5D /* broken-image.png */ = {isa = PBXFileReference; lastKnownFileType = image.gif; name = "broken-image.png"; path = "resources/images/gecko/broken-image.png"; sourceTree = SOURCE_ROOT; };
 		F55C4DD302D2864D0130B065 /* UserDefaults.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = UserDefaults.h; path = src/application/UserDefaults.h; sourceTree = ""; };
 		F55CCFD2020E98EA010001CA /* print.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = print.tiff; path = resources/images/toolbar/print.tiff; sourceTree = SOURCE_ROOT; };
 		F5607CB5023944AD01A967DF /* GeckoUtils.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = GeckoUtils.h; path = src/extensions/GeckoUtils.h; sourceTree = ""; };
 		F564872F023B957F010001CA /* history_icon.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = history_icon.tiff; path = resources/images/chrome/history_icon.tiff; sourceTree = SOURCE_ROOT; };
-		F56610BC0394775201A9666E /* Default Plugin.plugin */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = wrapper.cfbundle; name = "Default Plugin.plugin"; path = "../dist/bin/plugins/Default Plugin.plugin"; sourceTree = SOURCE_ROOT; };
+		F56610BC0394775201A9666E /* DefaultPlugin.plugin */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = wrapper.cfbundle; name = DefaultPlugin.plugin; path = ../dist/bin/plugins/DefaultPlugin.plugin; sourceTree = SOURCE_ROOT; };
 		F566BD1202EFA9AD01A967F3 /* CocoaPromptService.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = CocoaPromptService.h; path = src/browser/CocoaPromptService.h; sourceTree = ""; };
 		F566BD1302EFA9AD01A967F3 /* CocoaPromptService.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = CocoaPromptService.mm; path = src/browser/CocoaPromptService.mm; sourceTree = SOURCE_ROOT; };
 		F56769FB0208F74A010001CA /* BrowserWindowController.mm */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 2; lastKnownFileType = sourcecode.cpp.objcpp; name = BrowserWindowController.mm; path = src/browser/BrowserWindowController.mm; sourceTree = SOURCE_ROOT; tabWidth = 8; usesTabs = 0; };
 		F568C3D3023A4F71010001CA /* English */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = English; path = resources/application/English.lproj/Credits.rtf; sourceTree = SOURCE_ROOT; };
 		F56F241F02AC6D0401A967F3 /* nsStaticComponents.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = nsStaticComponents.cpp; path = src/application/nsStaticComponents.cpp; sourceTree = ""; };
 		F56F242602AC706801A967F3 /* libnecko.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libnecko.a; path = ../netwerk/build/libnecko.a; sourceTree = SOURCE_ROOT; };
 		F56F242B02AC706801A967F3 /* libuconv.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libuconv.a; path = ../intl/uconv/src/libuconv.a; sourceTree = SOURCE_ROOT; };
 		F56F243302AC706801A967F3 /* libxpconnect.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libxpconnect.a; path = ../js/src/xpconnect/src/libxpconnect.a; sourceTree = SOURCE_ROOT; };
@@ -3129,49 +3138,46 @@
 		F56F244902AC714601A967F3 /* libhtmlpars.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libhtmlpars.a; path = ../staticlib/components/libhtmlpars.a; sourceTree = SOURCE_ROOT; };
 		F56F244D02AC714601A967F3 /* libimglib2.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libimglib2.a; path = ../modules/libpr0n/build/libimglib2.a; sourceTree = SOURCE_ROOT; };
 		F56F245002AC714601A967F3 /* libpref.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libpref.a; path = ../modules/libpref/src/libpref.a; sourceTree = SOURCE_ROOT; };
 		F56F245102AC714601A967F3 /* librdf.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = librdf.a; path = ../rdf/build/librdf.a; sourceTree = SOURCE_ROOT; };
 		F56F246002AC723001A967F3 /* libdocshell.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libdocshell.a; path = ../docshell/build/libdocshell.a; sourceTree = SOURCE_ROOT; };
 		F56F246202AC723001A967F3 /* libembedcomponents.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libembedcomponents.a; path = ../embedding/components/build/libembedcomponents.a; sourceTree = SOURCE_ROOT; };
 		F56F246402AC723001A967F3 /* libgklayout.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libgklayout.a; path = ../layout/build/libgklayout.a; sourceTree = SOURCE_ROOT; };
 		F56F246502AC723001A967F3 /* libgkplugin.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libgkplugin.a; path = ../modules/plugin/base/src/libgkplugin.a; sourceTree = SOURCE_ROOT; };
-		F56F246B02AC723001A967F3 /* libmork.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmork.a; path = ../db/mork/build/libmork.a; sourceTree = SOURCE_ROOT; };
 		F56F247002AC723001A967F3 /* libtxmgr.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtxmgr.a; path = ../editor/txmgr/src/libtxmgr.a; sourceTree = SOURCE_ROOT; };
 		F56F247302AC723001A967F3 /* libwebbrwsr.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libwebbrwsr.a; path = ../embedding/browser/build/libwebbrwsr.a; sourceTree = SOURCE_ROOT; };
 		F56F247402AC723001A967F3 /* libwidget_mac.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libwidget_mac.a; path = ../widget/src/cocoa/libwidget_mac.a; sourceTree = SOURCE_ROOT; };
 		F56F248B02AC729901A967F3 /* libappcomps.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libappcomps.a; path = ../xpfe/components/build/libappcomps.a; sourceTree = SOURCE_ROOT; };
-		F56F248B02AC729901A967F4 /* libxpautocomplete.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libxpautocomplete.a; path = ../staticlib/components/libxpautocomplete.a; sourceTree = SOURCE_ROOT; };
 		F56F248C02AC729901A967F3 /* libcookie.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcookie.a; path = ../extensions/cookie/libcookie.a; sourceTree = SOURCE_ROOT; };
 		F56F248F02AC729901A967F3 /* libpipboot.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libpipboot.a; path = ../security/manager/boot/src/libpipboot.a; sourceTree = SOURCE_ROOT; };
 		F56F249002AC729901A967F3 /* libpipnss.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libpipnss.a; path = ../security/manager/ssl/src/libpipnss.a; sourceTree = SOURCE_ROOT; };
-		F56F249402AC729901A967F3 /* libxmlextras.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libxmlextras.a; path = ../extensions/xmlextras/build/src/libxmlextras.a; sourceTree = SOURCE_ROOT; };
 		F56F837202E47CCD01EF35C9 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = generated/PreferencePanes/Appearance/English.lproj/RegionNames.strings; sourceTree = SOURCE_ROOT; };
 		F57BED9703A1824001A9666E /* NetworkServices.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = NetworkServices.mm; path = src/rendezvous/NetworkServices.mm; sourceTree = SOURCE_ROOT; };
 		F57BED9A03A1824801A9666E /* NetworkServices.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = NetworkServices.h; path = src/rendezvous/NetworkServices.h; sourceTree = SOURCE_ROOT; };
 		F57BED9D03A1825001A9666E /* DNSUtils.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = DNSUtils.c; path = src/rendezvous/DNSUtils.c; sourceTree = SOURCE_ROOT; };
 		F57BED9E03A1825001A9666E /* DNSUtils.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = DNSUtils.h; path = src/rendezvous/DNSUtils.h; sourceTree = SOURCE_ROOT; };
-		F57F0F470209DF5301A967DF /* libxpcom.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libxpcom.dylib; path = ../dist/Embed/libxpcom.dylib; sourceTree = SOURCE_ROOT; };
+		F57F0F470209DF5301A967DF /* libxpcom.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libxpcom.dylib; path = ../dist/bin/libxpcom.dylib; sourceTree = SOURCE_ROOT; };
 		F57F205E029997E701000106 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = PreferencePanes/Privacy/English.lproj/Privacy.nib; sourceTree = SOURCE_ROOT; };
 		F57F205F029997E701000106 /* Privacy.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = Privacy.tiff; path = PreferencePanes/Privacy/Privacy.tiff; sourceTree = SOURCE_ROOT; };
 		F57F2060029997E701000106 /* PrivacyPane.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = PrivacyPane.h; path = PreferencePanes/Privacy/PrivacyPane.h; sourceTree = SOURCE_ROOT; };
 		F57F2061029997E701000106 /* PrivacyPane.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = PrivacyPane.mm; path = PreferencePanes/Privacy/PrivacyPane.mm; sourceTree = SOURCE_ROOT; };
 		F583E3BC03B820AC01A80166 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = resources/localized/English.lproj/ProgressView.nib; sourceTree = ""; };
 		F583E3BF03B8228701A80166 /* CHStackView.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = CHStackView.m; path = src/extensions/CHStackView.m; sourceTree = ""; };
 		F583E3C203B8228F01A80166 /* CHStackView.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = CHStackView.h; path = src/extensions/CHStackView.h; sourceTree = ""; };
 		F585677D02382E97010001CA /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = resources/localized/English.lproj/MVPreferences.nib; sourceTree = SOURCE_ROOT; };
 		F58DB2D20381FD3301A9666E /* JSConsole.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = JSConsole.h; path = src/application/JSConsole.h; sourceTree = ""; };
 		F58DB2D30381FD3301A9666E /* JSConsole.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = JSConsole.mm; path = src/application/JSConsole.mm; sourceTree = SOURCE_ROOT; };
 		F59236C002C89AC90100012B /* AppDirServiceProvider.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = AppDirServiceProvider.cpp; path = src/application/AppDirServiceProvider.cpp; sourceTree = ""; };
 		F59236C102C89AC90100012B /* AppDirServiceProvider.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = AppDirServiceProvider.h; path = src/application/AppDirServiceProvider.h; sourceTree = ""; };
 		F5949A47030D58A1014E8430 /* xhtml11.dtd */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.xml; path = xhtml11.dtd; sourceTree = ""; };
 		F59A0E320307635401A967F3 /* all-camino.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; name = "all-camino.js"; path = "generated/resources/application/all-camino.js"; sourceTree = SOURCE_ROOT; };
 		F59E9F3D0237E28401A967DF /* ContentClickListener.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ContentClickListener.h; path = src/browser/ContentClickListener.h; sourceTree = ""; };
 		F59E9F3F0237E43401A967DF /* ContentClickListener.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = ContentClickListener.mm; path = src/browser/ContentClickListener.mm; sourceTree = ""; };
-		F5A112C902DF270F01026D5D /* loading-image.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; name = "loading-image.gif"; path = "resources/images/gecko/loading-image.gif"; sourceTree = SOURCE_ROOT; };
+		F5A112C902DF270F01026D5D /* loading-image.png */ = {isa = PBXFileReference; lastKnownFileType = image.gif; name = "loading-image.png"; path = "resources/images/gecko/loading-image.png"; sourceTree = SOURCE_ROOT; };
 		F5A8CE4102DFEF4C013CA8EC /* PreferencePaneBase.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PreferencePaneBase.h; sourceTree = ""; };
 		F5A8CE4202DFEF4C013CA8EC /* PreferencePaneBase.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = PreferencePaneBase.mm; sourceTree = ""; };
 		F5A8CE4E02DFF167013CA8EC /* Appearance.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = Appearance.h; path = PreferencePanes/Appearance/Appearance.h; sourceTree = SOURCE_ROOT; };
 		F5A8CE4F02DFF167013CA8EC /* Appearance.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = Appearance.mm; path = PreferencePanes/Appearance/Appearance.mm; sourceTree = SOURCE_ROOT; };
 		F5A8CE5002DFF167013CA8EC /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = PreferencePanes/Appearance/English.lproj/Appearance.nib; sourceTree = SOURCE_ROOT; };
 		F5A8CE5102DFF167013CA8EC /* Appearance.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = Appearance.tiff; path = PreferencePanes/Appearance/Appearance.tiff; sourceTree = SOURCE_ROOT; };
 		F5AE04B20206A34801A967DF /* BrowserWindowController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = BrowserWindowController.h; path = src/browser/BrowserWindowController.h; sourceTree = ""; };
 		F5AE04B60206A37C01A967DF /* MainController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = MainController.h; path = src/application/MainController.h; sourceTree = ""; };
@@ -3184,32 +3190,27 @@
 		F5BF71460231B8BC010001CA /* BrowserTabView.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = BrowserTabView.mm; path = src/browser/BrowserTabView.mm; sourceTree = ""; };
 		F5C2CDA702383CE601A967DF /* libunicharutil_s.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libunicharutil_s.a; path = ../dist/lib/libunicharutil_s.a; sourceTree = SOURCE_ROOT; };
 		F5C3AB810270072A01A80166 /* ExtendedOutlineView.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ExtendedOutlineView.h; path = src/extensions/ExtendedOutlineView.h; sourceTree = ""; };
 		F5C3AB820270072A01A80166 /* ExtendedOutlineView.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = ExtendedOutlineView.mm; path = src/extensions/ExtendedOutlineView.mm; sourceTree = ""; };
 		F5C8D55203A2A42401A8016F /* ChimeraUIConstants.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ChimeraUIConstants.h; path = src/includes/ChimeraUIConstants.h; sourceTree = ""; };
 		F5D33CBC02EF61A901A967F3 /* SecurityDialogs.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = SecurityDialogs.h; path = src/browser/SecurityDialogs.h; sourceTree = ""; };
 		F5D33CBD02EF61A901A967F3 /* AppComponents.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = AppComponents.mm; path = src/application/AppComponents.mm; sourceTree = ""; };
 		F5D33CBE02EF61A901A967F3 /* SecurityDialogs.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = SecurityDialogs.mm; path = src/browser/SecurityDialogs.mm; sourceTree = ""; };
-		F5D3F1CE0209235A014E447F /* libmork.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libmork.dylib; path = ../db/mork/build/libmork.dylib; sourceTree = SOURCE_ROOT; };
 		F5D98EB9031AC37801A96654 /* NSBezierPath+Utils.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = "NSBezierPath+Utils.mm"; path = "src/extensions/NSBezierPath+Utils.mm"; sourceTree = ""; };
 		F5D98EBC031AC38601A96654 /* NSBezierPath+Utils.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = "NSBezierPath+Utils.h"; path = "src/extensions/NSBezierPath+Utils.h"; sourceTree = ""; };
-		F5DA444A027DD5AA01A80166 /* installed-chrome.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = "installed-chrome.txt"; path = "../dist/Embed/chrome/installed-chrome.txt"; sourceTree = SOURCE_ROOT; };
 		F5DE10E60209DC0601A967DF /* nsAlertController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = nsAlertController.h; path = src/browser/nsAlertController.h; sourceTree = ""; };
 		F5DE10E70209DC0601A967DF /* CHBrowserView.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = CHBrowserView.h; path = src/embedding/CHBrowserView.h; sourceTree = ""; };
 		F5DE10E80209DC0601A967DF /* CHBrowserService.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = CHBrowserService.h; path = src/embedding/CHBrowserService.h; sourceTree = ""; };
 		F5DE10E90209DC0601A967DF /* nsAlertController.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = nsAlertController.mm; path = src/browser/nsAlertController.mm; sourceTree = SOURCE_ROOT; };
 		F5DE10EA0209DC0601A967DF /* CHBrowserView.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = CHBrowserView.mm; path = src/embedding/CHBrowserView.mm; sourceTree = ""; };
 		F5DE10EB0209DC0601A967DF /* CHBrowserService.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = CHBrowserService.mm; path = src/embedding/CHBrowserService.mm; sourceTree = ""; };
 		F5E47654030C5FD501A967F3 /* libuniversalchardet.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libuniversalchardet.a; path = ../extensions/universalchardet/src/xpcom/libuniversalchardet.a; sourceTree = SOURCE_ROOT; };
 		F5EB9376030C92450100010C /* showsource.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = showsource.tiff; path = resources/images/toolbar/showsource.tiff; sourceTree = SOURCE_ROOT; };
-		F5F0BDC803C0A76F01202892 /* PrintPDE.plugin */ = {isa = PBXFileReference; lastKnownFileType = wrapper.cfbundle; name = PrintPDE.plugin; path = ../dist/package/PrintPDE.plugin; sourceTree = SOURCE_ROOT; };
-		F5F14E9602A5A43A01A967F3 /* libwidget.rsrc */ = {isa = PBXFileReference; lastKnownFileType = archive.rsrc; name = libwidget.rsrc; path = ../dist/Embed/libwidget.rsrc; sourceTree = SOURCE_ROOT; };
 		F5F181C90208006F0124611D /* libappcomps.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libappcomps.dylib; path = ../xpfe/components/build/libappcomps.dylib; sourceTree = SOURCE_ROOT; };
-		F5F181C90208006F0124611E /* libxpautocomplete.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libxpautocomplete.dylib; path = ../dist/bin/components/libxpautocomplete.dylib; sourceTree = SOURCE_ROOT; };
 		F5F190BB02D1F81A01026D5D /* ToolbarDefaults.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist; name = ToolbarDefaults.plist; path = resources/application/ToolbarDefaults.plist; sourceTree = SOURCE_ROOT; };
 		F5F190BE02D217C201026D5D /* WebsiteDefaults.strings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = WebsiteDefaults.strings; path = resources/application/WebsiteDefaults.strings; sourceTree = SOURCE_ROOT; };
 		F5F415C903B9223E01A80166 /* ProgressViewController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ProgressViewController.h; path = src/download/ProgressViewController.h; sourceTree = ""; };
 		F5F415CA03B9223E01A80166 /* ProgressViewController.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = ProgressViewController.mm; path = src/download/ProgressViewController.mm; sourceTree = ""; };
 		F5F59320020F4CD201ACA690 /* libtxmgr.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libtxmgr.dylib; path = ../editor/txmgr/src/libtxmgr.dylib; sourceTree = SOURCE_ROOT; };
 		F5F7EF0E03C1F29C01BDD337 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = resources/localized/English.lproj/Keychain.nib; sourceTree = ""; };
 		F5F94B900332532801026D5D /* KeychainService.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = KeychainService.h; path = src/formfill/KeychainService.h; sourceTree = ""; };
 		F5F94B910332532801026D5D /* KeychainService.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = KeychainService.mm; path = src/formfill/KeychainService.mm; sourceTree = ""; };
@@ -3217,108 +3218,108 @@
 		F5F9FBD902E13767012B5DB7 /* RegionMapping.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist; name = RegionMapping.plist; path = PreferencePanes/Appearance/RegionMapping.plist; sourceTree = SOURCE_ROOT; };
 		F5FCDD5D03A035E001A9666E /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = generated/PreferencePanes/General/English.lproj/Localizable.strings; sourceTree = SOURCE_ROOT; };
 		F5FDF166031AF47301DE816D /* DraggableImageAndTextCell.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = DraggableImageAndTextCell.h; path = src/extensions/DraggableImageAndTextCell.h; sourceTree = ""; };
 		F5FDF167031AF47301DE816D /* DraggableImageAndTextCell.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = DraggableImageAndTextCell.mm; path = src/extensions/DraggableImageAndTextCell.mm; sourceTree = ""; };
 		F5FEDBCB02AD8DD101A967F3 /* QuickTime.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuickTime.framework; path = /System/Library/Frameworks/QuickTime.framework; sourceTree = ""; };
 		F632AF8302B9AEBB01000103 /* BrowserWindow.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = BrowserWindow.h; path = src/browser/BrowserWindow.h; sourceTree = ""; };
 		F632AF8402B9AEBB01000103 /* BrowserWindow.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = BrowserWindow.mm; path = src/browser/BrowserWindow.mm; sourceTree = SOURCE_ROOT; };
 		F6BA6D4E01B2F8A601A962F7 /* BrowserWrapper.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = BrowserWrapper.mm; path = src/browser/BrowserWrapper.mm; sourceTree = ""; };
-		F6BD637F01B30EA301A962F7 /* libmozjs.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libmozjs.dylib; path = ../dist/Embed/libmozjs.dylib; sourceTree = SOURCE_ROOT; };
-		F6BD638001B30EA301A962F7 /* libnspr4.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libnspr4.dylib; path = ../dist/Embed/libnspr4.dylib; sourceTree = SOURCE_ROOT; };
-		F6BD638101B30EA301A962F7 /* libplc4.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libplc4.dylib; path = ../dist/Embed/libplc4.dylib; sourceTree = SOURCE_ROOT; };
-		F6BD638201B30EA301A962F7 /* libplds4.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libplds4.dylib; path = ../dist/Embed/libplds4.dylib; sourceTree = SOURCE_ROOT; };
-		F6BD638701B30F5301A962F7 /* libgkgfx.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libgkgfx.dylib; path = ../dist/Embed/libgkgfx.dylib; sourceTree = SOURCE_ROOT; };
-		F6BD639401B3131201A962F7 /* caps.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = caps.xpt; path = ../dist/Embed/components/caps.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD639601B3131201A962F7 /* docshell.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = docshell.xpt; path = ../dist/Embed/components/docshell.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD639701B3131201A962F7 /* dom_base.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = dom_base.xpt; path = ../dist/Embed/components/dom_base.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD639701B3131201A962F8 /* dom_canvas.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = dom_canvas.xpt; path = ../dist/Embed/components/dom_canvas.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD639801B3131201A962F7 /* dom_core.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = dom_core.xpt; path = ../dist/Embed/components/dom_core.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD639901B3131201A962F7 /* dom_css.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = dom_css.xpt; path = ../dist/Embed/components/dom_css.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD639A01B3131201A962F7 /* dom_events.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = dom_events.xpt; path = ../dist/Embed/components/dom_events.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD639B01B3131201A962F7 /* dom_html.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = dom_html.xpt; path = ../dist/Embed/components/dom_html.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD639C01B3131201A962F7 /* dom_range.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = dom_range.xpt; path = ../dist/Embed/components/dom_range.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD639D01B3131201A962F7 /* dom_stylesheets.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = dom_stylesheets.xpt; path = ../dist/Embed/components/dom_stylesheets.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD639D01B3131201A963F7 /* dom_svg.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = dom_svg.xpt; path = ../dist/Embed/components/dom_svg.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD639E01B3131201A962F7 /* dom_traversal.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = dom_traversal.xpt; path = ../dist/Embed/components/dom_traversal.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD639F01B3131201A962F7 /* dom_views.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = dom_views.xpt; path = ../dist/Embed/components/dom_views.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD63A001B3131201A962F7 /* dom_xbl.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = dom_xbl.xpt; path = ../dist/Embed/components/dom_xbl.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD63A101B3131201A962F7 /* dom_xul.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = dom_xul.xpt; path = ../dist/Embed/components/dom_xul.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD63A201B3131201A962F7 /* dom.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = dom.xpt; path = ../dist/Embed/components/dom.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD63A401B3131201A962F7 /* gfx.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = gfx.xpt; path = ../dist/Embed/components/gfx.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD63A601B3131201A962F7 /* libcaps.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libcaps.dylib; path = ../dist/Embed/components/libcaps.dylib; sourceTree = SOURCE_ROOT; };
-		F6BD63A701B3131201A962F7 /* libchrome.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libchrome.dylib; path = ../dist/Embed/components/libchrome.dylib; sourceTree = SOURCE_ROOT; };
-		F6BD63A801B3131201A962F7 /* libcookie.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libcookie.dylib; path = ../dist/Embed/components/libcookie.dylib; sourceTree = SOURCE_ROOT; };
-		F6BD63A901B3131201A962F7 /* libdocshell.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libdocshell.dylib; path = ../dist/Embed/components/libdocshell.dylib; sourceTree = SOURCE_ROOT; };
-		F6BD63AB01B3131201A962F7 /* libembedcomponents.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libembedcomponents.dylib; path = ../dist/Embed/components/libembedcomponents.dylib; sourceTree = SOURCE_ROOT; };
-		F6BD63B101B3131201A962F7 /* libwebbrwsr.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libwebbrwsr.dylib; path = ../dist/Embed/components/libwebbrwsr.dylib; sourceTree = SOURCE_ROOT; };
+		F6BD637F01B30EA301A962F7 /* libmozjs.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libmozjs.dylib; path = ../dist/bin/libmozjs.dylib; sourceTree = SOURCE_ROOT; };
+		F6BD638001B30EA301A962F7 /* libnspr4.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libnspr4.dylib; path = ../dist/bin/libnspr4.dylib; sourceTree = SOURCE_ROOT; };
+		F6BD638101B30EA301A962F7 /* libplc4.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libplc4.dylib; path = ../dist/bin/libplc4.dylib; sourceTree = SOURCE_ROOT; };
+		F6BD638201B30EA301A962F7 /* libplds4.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libplds4.dylib; path = ../dist/bin/libplds4.dylib; sourceTree = SOURCE_ROOT; };
+		F6BD638701B30F5301A962F7 /* libgkgfx.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libgkgfx.dylib; path = ../dist/bin/libgkgfx.dylib; sourceTree = SOURCE_ROOT; };
+		F6BD639401B3131201A962F7 /* caps.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = caps.xpt; path = ../dist/bin/components/caps.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD639601B3131201A962F7 /* docshell.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = docshell.xpt; path = ../dist/bin/components/docshell.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD639701B3131201A962F7 /* dom_base.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = dom_base.xpt; path = ../dist/bin/components/dom_base.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD639701B3131201A962F8 /* dom_canvas.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = dom_canvas.xpt; path = ../dist/bin/components/dom_canvas.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD639801B3131201A962F7 /* dom_core.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = dom_core.xpt; path = ../dist/bin/components/dom_core.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD639901B3131201A962F7 /* dom_css.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = dom_css.xpt; path = ../dist/bin/components/dom_css.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD639A01B3131201A962F7 /* dom_events.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = dom_events.xpt; path = ../dist/bin/components/dom_events.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD639B01B3131201A962F7 /* dom_html.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = dom_html.xpt; path = ../dist/bin/components/dom_html.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD639C01B3131201A962F7 /* dom_range.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = dom_range.xpt; path = ../dist/bin/components/dom_range.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD639D01B3131201A962F7 /* dom_stylesheets.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = dom_stylesheets.xpt; path = ../dist/bin/components/dom_stylesheets.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD639D01B3131201A963F7 /* dom_svg.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = dom_svg.xpt; path = ../dist/bin/components/dom_svg.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD639E01B3131201A962F7 /* dom_traversal.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = dom_traversal.xpt; path = ../dist/bin/components/dom_traversal.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD639F01B3131201A962F7 /* dom_views.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = dom_views.xpt; path = ../dist/bin/components/dom_views.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD63A001B3131201A962F7 /* dom_xbl.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = dom_xbl.xpt; path = ../dist/bin/components/dom_xbl.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD63A101B3131201A962F7 /* dom_xul.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = dom_xul.xpt; path = ../dist/bin/components/dom_xul.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD63A201B3131201A962F7 /* dom.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = dom.xpt; path = ../dist/bin/components/dom.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD63A401B3131201A962F7 /* gfx.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = gfx.xpt; path = ../dist/bin/components/gfx.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD63A601B3131201A962F7 /* libcaps.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libcaps.dylib; path = ../dist/bin/components/libcaps.dylib; sourceTree = SOURCE_ROOT; };
+		F6BD63A701B3131201A962F7 /* libchrome.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libchrome.dylib; path = ../dist/bin/components/libchrome.dylib; sourceTree = SOURCE_ROOT; };
+		F6BD63A801B3131201A962F7 /* libcookie.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libcookie.dylib; path = ../dist/bin/components/libcookie.dylib; sourceTree = SOURCE_ROOT; };
+		F6BD63A901B3131201A962F7 /* libdocshell.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libdocshell.dylib; path = ../dist/bin/components/libdocshell.dylib; sourceTree = SOURCE_ROOT; };
+		F6BD63AB01B3131201A962F7 /* libembedcomponents.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libembedcomponents.dylib; path = ../dist/bin/components/libembedcomponents.dylib; sourceTree = SOURCE_ROOT; };
+		F6BD63B101B3131201A962F7 /* libwebbrwsr.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libwebbrwsr.dylib; path = ../dist/bin/components/libwebbrwsr.dylib; sourceTree = SOURCE_ROOT; };
 		F6BD63B201B3131201A962F7 /* mimetype.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = mimetype.xpt; path = ../netwerk/mime/public/_xpidlgen/mimetype.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD63B301B3131201A962F7 /* txtsvc.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = txtsvc.xpt; path = ../dist/Embed/components/txtsvc.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD63B401B3131201A962F7 /* webBrowser_core.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = webBrowser_core.xpt; path = ../dist/Embed/components/webBrowser_core.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD63B501B3131201A962F7 /* windowwatcher.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = windowwatcher.xpt; path = ../dist/Embed/components/windowwatcher.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD63D901B313EE01A962F7 /* content_base.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = content_base.xpt; path = ../dist/Embed/components/content_base.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD63DA01B313EE01A962F7 /* jar.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = jar.xpt; path = ../dist/Embed/components/jar.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD63DC01B313EE01A962F7 /* layout_base.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = layout_base.xpt; path = ../dist/Embed/components/layout_base.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD63DD01B313EE01A962F7 /* layout_xul.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = layout_xul.xpt; path = ../dist/Embed/components/layout_xul.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD63DF01B313EE01A962F7 /* libgklayout.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libgklayout.dylib; path = ../dist/Embed/components/libgklayout.dylib; sourceTree = SOURCE_ROOT; };
-		F6BD63E101B313EE01A962F7 /* libhtmlpars.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libhtmlpars.dylib; path = ../dist/Embed/components/libhtmlpars.dylib; sourceTree = SOURCE_ROOT; };
-		F6BD63E201B313EE01A962F7 /* libjar50.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libjar50.dylib; path = ../dist/Embed/components/libjar50.dylib; sourceTree = SOURCE_ROOT; };
-		F6BD63E401B313EE01A962F7 /* libnecko.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libnecko.dylib; path = ../dist/Embed/components/libnecko.dylib; sourceTree = SOURCE_ROOT; };
-		F6BD63E601B313EE01A962F7 /* necko_about.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = necko_about.xpt; path = ../dist/Embed/components/necko_about.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD63E701B313EE01A962F7 /* necko_cache.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = necko_cache.xpt; path = ../dist/Embed/components/necko_cache.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD63E901B313EE01A962F7 /* necko_dns.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = necko_dns.xpt; path = ../dist/Embed/components/necko_dns.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD63EA01B313EE01A962F7 /* necko_ftp.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = necko_ftp.xpt; path = ../dist/Embed/components/necko_ftp.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD63EB01B313EE01A962F7 /* necko_http.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = necko_http.xpt; path = ../dist/Embed/components/necko_http.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD63ED01B313EE01A962F7 /* necko_res.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = necko_res.xpt; path = ../dist/Embed/components/necko_res.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD63B301B3131201A962F7 /* txtsvc.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = txtsvc.xpt; path = ../dist/bin/components/txtsvc.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD63B401B3131201A962F7 /* webBrowser_core.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = webBrowser_core.xpt; path = ../dist/bin/components/webBrowser_core.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD63B501B3131201A962F7 /* windowwatcher.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = windowwatcher.xpt; path = ../dist/bin/components/windowwatcher.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD63D901B313EE01A962F7 /* content_base.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = content_base.xpt; path = ../dist/bin/components/content_base.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD63DA01B313EE01A962F7 /* jar.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = jar.xpt; path = ../dist/bin/components/jar.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD63DC01B313EE01A962F7 /* layout_base.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = layout_base.xpt; path = ../dist/bin/components/layout_base.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD63DD01B313EE01A962F7 /* layout_xul.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = layout_xul.xpt; path = ../dist/bin/components/layout_xul.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD63DF01B313EE01A962F7 /* libgklayout.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libgklayout.dylib; path = ../dist/bin/components/libgklayout.dylib; sourceTree = SOURCE_ROOT; };
+		F6BD63E101B313EE01A962F7 /* libhtmlpars.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libhtmlpars.dylib; path = ../dist/bin/components/libhtmlpars.dylib; sourceTree = SOURCE_ROOT; };
+		F6BD63E201B313EE01A962F7 /* libjar50.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libjar50.dylib; path = ../dist/bin/components/libjar50.dylib; sourceTree = SOURCE_ROOT; };
+		F6BD63E401B313EE01A962F7 /* libnecko.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libnecko.dylib; path = ../dist/bin/components/libnecko.dylib; sourceTree = SOURCE_ROOT; };
+		F6BD63E601B313EE01A962F7 /* necko_about.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = necko_about.xpt; path = ../dist/bin/components/necko_about.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD63E701B313EE01A962F7 /* necko_cache.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = necko_cache.xpt; path = ../dist/bin/components/necko_cache.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD63E901B313EE01A962F7 /* necko_dns.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = necko_dns.xpt; path = ../dist/bin/components/necko_dns.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD63EA01B313EE01A962F7 /* necko_ftp.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = necko_ftp.xpt; path = ../dist/bin/components/necko_ftp.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD63EB01B313EE01A962F7 /* necko_http.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = necko_http.xpt; path = ../dist/bin/components/necko_http.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD63ED01B313EE01A962F7 /* necko_res.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = necko_res.xpt; path = ../dist/bin/components/necko_res.xpt; sourceTree = SOURCE_ROOT; };
 		F6BD63EE01B313EE01A962F7 /* necko_socket.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = necko_socket.xpt; path = ../netwerk/socket/base/_xpidlgen/necko_socket.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD63EF01B313EE01A962F7 /* necko_strconv.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = necko_strconv.xpt; path = ../dist/Embed/components/necko_strconv.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD63EF01B313EE01A962F7 /* necko_strconv.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = necko_strconv.xpt; path = ../dist/bin/components/necko_strconv.xpt; sourceTree = SOURCE_ROOT; };
 		F6BD63F001B313EE01A962F7 /* necko_viewsource.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = necko_viewsource.xpt; path = ../netwerk/protocol/viewsource/public/_xpidlgen/necko_viewsource.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD63F101B313EE01A962F7 /* necko.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = necko.xpt; path = ../dist/Embed/components/necko.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD63F201B313EE01A962F7 /* layout_printing.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = layout_printing.xpt; path = ../dist/Embed/components/layout_printing.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD640E01B3156701A962F7 /* libimglib2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libimglib2.dylib; path = ../dist/Embed/components/libimglib2.dylib; sourceTree = SOURCE_ROOT; };
-		F6BD641201B3156701A962F7 /* libpref.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libpref.dylib; path = ../dist/Embed/components/libpref.dylib; sourceTree = SOURCE_ROOT; };
-		F6BD641401B3156701A962F7 /* librdf.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = librdf.dylib; path = ../dist/Embed/components/librdf.dylib; sourceTree = SOURCE_ROOT; };
-		F6BD641701B3156701A962F7 /* libuconv.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libuconv.dylib; path = ../dist/Embed/components/libuconv.dylib; sourceTree = SOURCE_ROOT; };
-		F6BD641B01B3156701A962F7 /* libwidget_mac.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libwidget_mac.dylib; path = ../dist/Embed/components/libwidget_mac.dylib; sourceTree = SOURCE_ROOT; };
-		F6BD641C01B3156701A962F7 /* libxpconnect.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libxpconnect.dylib; path = ../dist/Embed/components/libxpconnect.dylib; sourceTree = SOURCE_ROOT; };
-		F6BD641D01B3156701A962F7 /* pref.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = pref.xpt; path = ../dist/Embed/components/pref.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD641F01B3156701A962F7 /* rdf.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = rdf.xpt; path = ../dist/Embed/components/rdf.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD642001B3156701A962F7 /* shistory.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = shistory.xpt; path = ../dist/Embed/components/shistory.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD642101B3156701A962F7 /* uconv.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = uconv.xpt; path = ../dist/Embed/components/uconv.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD642201B3156701A962F7 /* unicharutil.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = unicharutil.xpt; path = ../dist/Embed/components/unicharutil.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD642301B3156701A962F7 /* uriloader.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = uriloader.xpt; path = ../dist/Embed/components/uriloader.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD642501B3156701A962F7 /* xpcom_base.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = xpcom_base.xpt; path = ../dist/Embed/components/xpcom_base.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD642601B3156701A962F7 /* xpcom_components.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = xpcom_components.xpt; path = ../dist/Embed/components/xpcom_components.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD642701B3156701A962F7 /* xpcom_ds.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = xpcom_ds.xpt; path = ../dist/Embed/components/xpcom_ds.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD642801B3156701A962F7 /* xpcom_io.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = xpcom_io.xpt; path = ../dist/Embed/components/xpcom_io.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD642901B3156701A962F7 /* xpcom_threads.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = xpcom_threads.xpt; path = ../dist/Embed/components/xpcom_threads.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD642A01B3156701A962F7 /* xpcom_xpti.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = xpcom_xpti.xpt; path = ../dist/Embed/components/xpcom_xpti.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD642B01B3156701A962F7 /* xpconnect.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = xpconnect.xpt; path = ../dist/Embed/components/xpconnect.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD63F101B313EE01A962F7 /* necko.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = necko.xpt; path = ../dist/bin/components/necko.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD63F201B313EE01A962F7 /* layout_printing.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = layout_printing.xpt; path = ../dist/bin/components/layout_printing.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD640E01B3156701A962F7 /* libimglib2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libimglib2.dylib; path = ../dist/bin/components/libimglib2.dylib; sourceTree = SOURCE_ROOT; };
+		F6BD641201B3156701A962F7 /* libpref.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libpref.dylib; path = ../dist/bin/components/libpref.dylib; sourceTree = SOURCE_ROOT; };
+		F6BD641401B3156701A962F7 /* librdf.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = librdf.dylib; path = ../dist/bin/components/librdf.dylib; sourceTree = SOURCE_ROOT; };
+		F6BD641701B3156701A962F7 /* libuconv.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libuconv.dylib; path = ../dist/bin/components/libuconv.dylib; sourceTree = SOURCE_ROOT; };
+		F6BD641B01B3156701A962F7 /* libwidget_mac.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libwidget_mac.dylib; path = ../dist/bin/components/libwidget_mac.dylib; sourceTree = SOURCE_ROOT; };
+		F6BD641C01B3156701A962F7 /* libxpconnect.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libxpconnect.dylib; path = ../dist/bin/components/libxpconnect.dylib; sourceTree = SOURCE_ROOT; };
+		F6BD641D01B3156701A962F7 /* pref.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = pref.xpt; path = ../dist/bin/components/pref.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD641F01B3156701A962F7 /* rdf.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = rdf.xpt; path = ../dist/bin/components/rdf.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD642001B3156701A962F7 /* shistory.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = shistory.xpt; path = ../dist/bin/components/shistory.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD642101B3156701A962F7 /* uconv.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = uconv.xpt; path = ../dist/bin/components/uconv.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD642201B3156701A962F7 /* unicharutil.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = unicharutil.xpt; path = ../dist/bin/components/unicharutil.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD642301B3156701A962F7 /* uriloader.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = uriloader.xpt; path = ../dist/bin/components/uriloader.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD642501B3156701A962F7 /* xpcom_base.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = xpcom_base.xpt; path = ../dist/bin/components/xpcom_base.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD642601B3156701A962F7 /* xpcom_components.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = xpcom_components.xpt; path = ../dist/bin/components/xpcom_components.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD642701B3156701A962F7 /* xpcom_ds.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = xpcom_ds.xpt; path = ../dist/bin/components/xpcom_ds.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD642801B3156701A962F7 /* xpcom_io.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = xpcom_io.xpt; path = ../dist/bin/components/xpcom_io.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD642901B3156701A962F7 /* xpcom_threads.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = xpcom_threads.xpt; path = ../dist/bin/components/xpcom_threads.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD642A01B3156701A962F7 /* xpcom_xpti.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = xpcom_xpti.xpt; path = ../dist/bin/components/xpcom_xpti.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD642B01B3156701A962F7 /* xpconnect.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = xpconnect.xpt; path = ../dist/bin/components/xpconnect.xpt; sourceTree = SOURCE_ROOT; };
 		F6BD644D01B315FA01A962F7 /* embed_base.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = embed_base.xpt; path = ../embedding/base/_xpidlgen/embed_base.xpt; sourceTree = SOURCE_ROOT; };
-		F6BD644E01B315FA01A962F7 /* imglib2.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = imglib2.xpt; path = ../dist/Embed/components/imglib2.xpt; sourceTree = SOURCE_ROOT; };
+		F6BD644E01B315FA01A962F7 /* imglib2.xpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = imglib2.xpt; path = ../dist/bin/components/imglib2.xpt; sourceTree = SOURCE_ROOT; };
 		F6BD644F01B315FA01A962F7 /* libgkplugin.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; name = libgkplugin.dylib; path = ../modules/plugin/base/src/libgkplugin.dylib; sourceTree = SOURCE_ROOT; };
-		F6BD64B801B316DA01A962F7 /* charsetalias.properties */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = charsetalias.properties; path = ../dist/Embed/res/charsetalias.properties; sourceTree = SOURCE_ROOT; };
-		F6BD64B901B316DA01A962F7 /* charsetData.properties */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = charsetData.properties; path = ../dist/Embed/res/charsetData.properties; sourceTree = SOURCE_ROOT; };
-		F6BD64BA01B316DA01A962F7 /* langGroups.properties */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = langGroups.properties; path = ../dist/Embed/res/langGroups.properties; sourceTree = SOURCE_ROOT; };
-		F6BD64BB01B316DA01A962F7 /* language.properties */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = language.properties; path = ../dist/Embed/res/language.properties; sourceTree = SOURCE_ROOT; };
-		F6BD64BC01B316DA01A962F7 /* maccharset.properties */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = maccharset.properties; path = ../dist/Embed/res/maccharset.properties; sourceTree = SOURCE_ROOT; };
-		F6BD64D801B3172601A962F7 /* html40Latin1.properties */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = html40Latin1.properties; path = ../dist/Embed/res/entityTables/html40Latin1.properties; sourceTree = SOURCE_ROOT; };
-		F6BD64D901B3172601A962F7 /* html40Special.properties */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = html40Special.properties; path = ../dist/Embed/res/entityTables/html40Special.properties; sourceTree = SOURCE_ROOT; };
-		F6BD64DA01B3172601A962F7 /* html40Symbols.properties */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = html40Symbols.properties; path = ../dist/Embed/res/entityTables/html40Symbols.properties; sourceTree = SOURCE_ROOT; };
-		F6BD64DB01B3172601A962F7 /* htmlEntityVersions.properties */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = htmlEntityVersions.properties; path = ../dist/Embed/res/entityTables/htmlEntityVersions.properties; sourceTree = SOURCE_ROOT; };
-		F6BD64DC01B3172601A962F7 /* transliterate.properties */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = transliterate.properties; path = ../dist/Embed/res/entityTables/transliterate.properties; sourceTree = SOURCE_ROOT; };
-		F6BD64DD01B3172601A962F7 /* forms.css */ = {isa = PBXFileReference; lastKnownFileType = text; name = forms.css; path = ../dist/Embed/res/forms.css; sourceTree = SOURCE_ROOT; };
-		F6BD64DE01B3172601A962F7 /* html.css */ = {isa = PBXFileReference; lastKnownFileType = text; name = html.css; path = ../dist/Embed/res/html.css; sourceTree = SOURCE_ROOT; };
-		F6BD64DF01B3172601A962F7 /* quirk.css */ = {isa = PBXFileReference; lastKnownFileType = text; name = quirk.css; path = ../dist/Embed/res/quirk.css; sourceTree = SOURCE_ROOT; };
-		F6BD64DF01B3172601A963F7 /* svg.css */ = {isa = PBXFileReference; lastKnownFileType = text; name = svg.css; path = ../dist/Embed/res/svg.css; sourceTree = SOURCE_ROOT; };
-		F6BD64E001B3172601A962F7 /* ua.css */ = {isa = PBXFileReference; lastKnownFileType = text; name = ua.css; path = ../dist/Embed/res/ua.css; sourceTree = SOURCE_ROOT; };
-		F6BD64E101B3172601A962F7 /* viewsource.css */ = {isa = PBXFileReference; lastKnownFileType = text; name = viewsource.css; path = ../dist/Embed/res/viewsource.css; sourceTree = SOURCE_ROOT; };
-		F6BD64FC01B3184301A962F7 /* all.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; name = all.js; path = ../dist/Embed/greprefs/all.js; sourceTree = SOURCE_ROOT; };
-		F6BD650001B3184301A962F7 /* embed.jar */ = {isa = PBXFileReference; lastKnownFileType = archive.jar; name = embed.jar; path = ../dist/Embed/chrome/embed.jar; sourceTree = SOURCE_ROOT; };
-		F6BD650001B3184301A96307 /* flashblock.jar */ = {isa = PBXFileReference; lastKnownFileType = archive.jar; name = flashblock.jar; path = ../dist/Embed/chrome/flashblock.jar; sourceTree = SOURCE_ROOT; };
+		F6BD64B801B316DA01A962F7 /* charsetalias.properties */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = charsetalias.properties; path = ../dist/bin/res/charsetalias.properties; sourceTree = SOURCE_ROOT; };
+		F6BD64B901B316DA01A962F7 /* charsetData.properties */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = charsetData.properties; path = ../dist/bin/res/charsetData.properties; sourceTree = SOURCE_ROOT; };
+		F6BD64BA01B316DA01A962F7 /* langGroups.properties */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = langGroups.properties; path = ../dist/bin/res/langGroups.properties; sourceTree = SOURCE_ROOT; };
+		F6BD64BB01B316DA01A962F7 /* language.properties */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = language.properties; path = ../dist/bin/res/language.properties; sourceTree = SOURCE_ROOT; };
+		F6BD64BC01B316DA01A962F7 /* maccharset.properties */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = maccharset.properties; path = ../dist/bin/res/maccharset.properties; sourceTree = SOURCE_ROOT; };
+		F6BD64D801B3172601A962F7 /* html40Latin1.properties */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = html40Latin1.properties; path = ../dist/bin/res/entityTables/html40Latin1.properties; sourceTree = SOURCE_ROOT; };
+		F6BD64D901B3172601A962F7 /* html40Special.properties */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = html40Special.properties; path = ../dist/bin/res/entityTables/html40Special.properties; sourceTree = SOURCE_ROOT; };
+		F6BD64DA01B3172601A962F7 /* html40Symbols.properties */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = html40Symbols.properties; path = ../dist/bin/res/entityTables/html40Symbols.properties; sourceTree = SOURCE_ROOT; };
+		F6BD64DB01B3172601A962F7 /* htmlEntityVersions.properties */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = htmlEntityVersions.properties; path = ../dist/bin/res/entityTables/htmlEntityVersions.properties; sourceTree = SOURCE_ROOT; };
+		F6BD64DC01B3172601A962F7 /* transliterate.properties */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = transliterate.properties; path = ../dist/bin/res/entityTables/transliterate.properties; sourceTree = SOURCE_ROOT; };
+		F6BD64DD01B3172601A962F7 /* forms.css */ = {isa = PBXFileReference; lastKnownFileType = text; name = forms.css; path = ../dist/bin/res/forms.css; sourceTree = SOURCE_ROOT; };
+		F6BD64DE01B3172601A962F7 /* html.css */ = {isa = PBXFileReference; lastKnownFileType = text; name = html.css; path = ../dist/bin/res/html.css; sourceTree = SOURCE_ROOT; };
+		F6BD64DF01B3172601A962F7 /* quirk.css */ = {isa = PBXFileReference; lastKnownFileType = text; name = quirk.css; path = ../dist/bin/res/quirk.css; sourceTree = SOURCE_ROOT; };
+		F6BD64DF01B3172601A963F7 /* svg.css */ = {isa = PBXFileReference; lastKnownFileType = text; name = svg.css; path = ../dist/bin/res/svg.css; sourceTree = SOURCE_ROOT; };
+		F6BD64E001B3172601A962F7 /* ua.css */ = {isa = PBXFileReference; lastKnownFileType = text; name = ua.css; path = ../dist/bin/res/ua.css; sourceTree = SOURCE_ROOT; };
+		F6BD64E101B3172601A962F7 /* viewsource.css */ = {isa = PBXFileReference; lastKnownFileType = text; name = viewsource.css; path = ../dist/bin/res/viewsource.css; sourceTree = SOURCE_ROOT; };
+		F6BD64FC01B3184301A962F7 /* all.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; name = all.js; path = ../dist/bin/greprefs/all.js; sourceTree = SOURCE_ROOT; };
+		F6BD650001B3184301A962F7 /* toolkit.jar */ = {isa = PBXFileReference; lastKnownFileType = archive.jar; name = toolkit.jar; path = ../dist/bin/chrome/toolkit.jar; sourceTree = SOURCE_ROOT; };
+		F6BD650001B3184301A96307 /* flashblock.jar */ = {isa = PBXFileReference; lastKnownFileType = archive.jar; name = flashblock.jar; path = ../dist/bin/chrome/flashblock.jar; sourceTree = SOURCE_ROOT; };
 		F72434200FE6DA90008B783E /* AutoCompleteCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AutoCompleteCell.m; path = src/extensions/AutoCompleteCell.m; sourceTree = SOURCE_ROOT; };
 		F72434210FE6DA90008B783E /* AutoCompleteResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AutoCompleteResult.h; path = src/extensions/AutoCompleteResult.h; sourceTree = SOURCE_ROOT; };
 		F72434220FE6DA90008B783E /* AutoCompleteResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AutoCompleteResult.m; path = src/extensions/AutoCompleteResult.m; sourceTree = SOURCE_ROOT; };
 		F72434230FE6DA90008B783E /* AutoCompleteCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AutoCompleteCell.h; path = src/extensions/AutoCompleteCell.h; sourceTree = SOURCE_ROOT; };
 		F72434280FE6DAAA008B783E /* MAAttachedWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MAAttachedWindow.h; path = src/extensions/MAAttachedWindow.h; sourceTree = SOURCE_ROOT; };
 		F72434290FE6DAAA008B783E /* MAAttachedWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MAAttachedWindow.m; path = src/extensions/MAAttachedWindow.m; sourceTree = SOURCE_ROOT; };
 /* End PBXFileReference section */
 
@@ -3371,16 +3372,17 @@
 				0FF288560961EDDD007527B4 /* libfreebl3.dylib in Frameworks */,
 				DEB968320B0D8E9F0023F8B1 /* Security.framework in Frameworks */,
 				008115430B180F35001CB3F0 /* libthebes.dylib in Frameworks */,
 				33B775AA0C4EAC1E00A6D67F /* libsqlite3.dylib in Frameworks */,
 				7B64B7E10CCFDA640098406C /* Sparkle.framework in Frameworks */,
 				7BC5674C0D4113D8007503E1 /* libnssutil3.dylib in Frameworks */,
 				DEFAA3450F241C1600BD51C1 /* Growl.framework in Frameworks */,
 				33820E800F8AA62C00D2164A /* Breakpad.framework in Frameworks */,
+				B33032C910AE16D7002FA0A7 /* libmorkreader_s.a in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 		3F44AD9705BDFB9F00CB4B08 /* Frameworks */ = {
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
 				3F44AD9A05BDFB9F00CB4B08 /* Cocoa.framework in Frameworks */,
@@ -3434,53 +3436,47 @@
 				3F44AF9E05BDFBA000CB4B08 /* libhtmlpars.a in Frameworks */,
 				3F44AF9F05BDFBA000CB4B08 /* libimglib2.a in Frameworks */,
 				3F44AFA005BDFBA000CB4B08 /* libpref.a in Frameworks */,
 				3F44AFA105BDFBA000CB4B08 /* librdf.a in Frameworks */,
 				3F44AFA205BDFBA000CB4B08 /* libdocshell.a in Frameworks */,
 				3F44AFA405BDFBA000CB4B08 /* libembedcomponents.a in Frameworks */,
 				3F44AFA505BDFBA000CB4B08 /* libgklayout.a in Frameworks */,
 				3F44AFA605BDFBA000CB4B08 /* libgkplugin.a in Frameworks */,
-				3F44AFA805BDFBA000CB4B08 /* libmork.a in Frameworks */,
 				3F44AFAA05BDFBA000CB4B08 /* libtxmgr.a in Frameworks */,
 				3F44AFAB05BDFBA000CB4B08 /* libwebbrwsr.a in Frameworks */,
 				3F44AFAC05BDFBA000CB4B08 /* libwidget_mac.a in Frameworks */,
-				3F44AFAD05BDFBA000CB4B09 /* libxpautocomplete.a in Frameworks */,
 				3F44AFAD05BDFBA000CB4B08 /* libappcomps.a in Frameworks */,
 				3F44AFAE05BDFBA000CB4B08 /* libcookie.a in Frameworks */,
 				3F44AFAF05BDFBA000CB4B08 /* libpipboot.a in Frameworks */,
 				3F44AFB005BDFBA000CB4B08 /* libpipnss.a in Frameworks */,
-				3F44AFB105BDFBA000CB4B08 /* libxmlextras.a in Frameworks */,
 				3F44AFB205BDFBA000CB4B08 /* libcrmf.a in Frameworks */,
 				0081150D0B180DFA001CB3F0 /* libgkgfxthebes.a in Frameworks */,
 				0081150B0B180DDE001CB3F0 /* libthebes.a in Frameworks */,
 				3F44AFB305BDFBA000CB4B08 /* libgkgfx.a in Frameworks */,
 				3F44AFB405BDFBA000CB4B08 /* libunicharutil_s.a in Frameworks */,
 				3F44AFB505BDFBA000CB4B08 /* liboji.a in Frameworks */,
 				3F44AFB605BDFBA000CB4B08 /* libuniversalchardet.a in Frameworks */,
-				3F44AFB705BDFBA000CB4B08 /* libsuitetypeaheadfind.a in Frameworks */,
 				3F44AFB805BDFBA000CB4B08 /* libi18n.a in Frameworks */,
 				3F44AFB905BDFBA000CB4B08 /* libjar50.a in Frameworks */,
-				3F44AFBA05BDFBA000CB4B08 /* libgfxshared_s.a in Frameworks */,
 				4D29957E0869C44B00E84287 /* libxpcom.dylib in Frameworks */,
 				4D2995800869C44B00E84287 /* libxpcom_core.dylib in Frameworks */,
 				4D29957A0869C44B00E84287 /* libplds4.dylib in Frameworks */,
 				4D2995790869C44B00E84287 /* libplc4.dylib in Frameworks */,
 				4D2995770869C44B00E84287 /* libnspr4.dylib in Frameworks */,
 				4D29957B0869C44B00E84287 /* libsmime3.dylib in Frameworks */,
 				4D29957D0869C44B00E84287 /* libssl3.dylib in Frameworks */,
 				4D2995780869C44B00E84287 /* libnss3.dylib in Frameworks */,
 				4D29957C0869C44B00E84287 /* libsoftokn3.dylib in Frameworks */,
 				4D2995760869C44B00E84287 /* libmozjs.dylib in Frameworks */,
 				4DC41D400869D7A400947044 /* libmozjpeg.a in Frameworks */,
 				4DC41D3F0869D7A400947044 /* libjsj.a in Frameworks */,
 				4DC41D410869D7A400947044 /* libmozpng.a in Frameworks */,
 				4DC41D410869D7A400947045 /* libmozcairo.a in Frameworks */,
 				4DC41D410869D7A400947046 /* libmozlibpixman.a in Frameworks */,
-				33B777E20C55890200A6D67F /* libmozlcms.a in Frameworks */,
 				3F44AFBB05BDFBA000CB4B08 /* Cocoa.framework in Frameworks */,
 				3F44AFBC05BDFBA000CB4B08 /* PreferencePanes.framework in Frameworks */,
 				3F44AFBD05BDFBA000CB4B08 /* Carbon.framework in Frameworks */,
 				3F44AFBE05BDFBA000CB4B08 /* QuickTime.framework in Frameworks */,
 				3F44AFBF05BDFBA000CB4B08 /* CoreFoundation.framework in Frameworks */,
 				3F44AFC005BDFBA000CB4B08 /* SystemConfiguration.framework in Frameworks */,
 				3F44AFC205BDFBA000CB4B08 /* libucvutil_s.a in Frameworks */,
 				3F44AFC305BDFBA000CB4B08 /* IOKit.framework in Frameworks */,
@@ -3497,16 +3493,20 @@
 				DEC87B150C288403002EB106 /* libstoragecomps.a in Frameworks */,
 				33B775AB0C4EAC1E00A6D67F /* libsqlite3.dylib in Frameworks */,
 				7B64B7E30CCFDA860098406C /* Sparkle.framework in Frameworks */,
 				7B9A26190D411275008CDB39 /* libnssutil3.dylib in Frameworks */,
 				DE846DA90D84D03400009C6A /* libimgicon.a in Frameworks */,
 				DEFAA3440F241C1600BD51C1 /* Growl.framework in Frameworks */,
 				DE2AC7180F33EBAB009C0A42 /* libcaminosafebrowsing.a in Frameworks */,
 				33820E810F8AA63800D2164A /* Breakpad.framework in Frameworks */,
+				B33032CA10AE16D7002FA0A7 /* libmorkreader_s.a in Frameworks */,
+				DE317964111E87E700A9D40A /* libmozqcms.a in Frameworks */,
+				DE3179DA111E91E100A9D40A /* AudioUnit.framework in Frameworks */,
+				DE317B89111F71F000A9D40A /* libplaces.a in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 /* End PBXFrameworksBuildPhase section */
 
 /* Begin PBXGroup section */
 		032FFDCC077351A800440548 /* Downloads */ = {
 			isa = PBXGroup;
@@ -3573,64 +3573,64 @@
 			children = (
 				0E6A988E097E0044007962C1 /* mathfont.properties */,
 				DE1EBDBD0D066F5100BE9ECC /* mathfontStandardSymbolsL.properties */,
 				DE1EBDBB0D066F5100BE9ECC /* mathfontSTIXSize1.properties */,
 				DE1EBDBC0D066F5100BE9ECC /* mathfontSTIXNonUnicode.properties */,
 				DE1EBDBA0D066F5100BE9ECC /* mathfontUnicode.properties */,
 			);
 			name = fonts;
-			path = ../dist/Embed/res/fonts;
+			path = ../dist/bin/res/fonts;
 			sourceTree = SOURCE_ROOT;
 		};
 		0FA8EFA20423B36300A80166 /* Components */ = {
 			isa = PBXGroup;
 			children = (
+				B330336010AE1C4C002FA0A7 /* libplaces.dylib */,
+				B33032AA10AE15EA002FA0A7 /* nsLivemarkService.js */,
+				B3C5B25C1123B9A5002E4C7B /* nsPlacesDBFlush.js */,
 				E4C7D98B0A32108500B455AD /* libspellchecker.dylib */,
 				82180AC907368BDF002EFA6D /* libcomposer.dylib */,
 				F5F181C90208006F0124611D /* libappcomps.dylib */,
-				F5F181C90208006F0124611E /* libxpautocomplete.dylib */,
 				F507A82C030BFB7901026D5D /* libuniversalchardet.dylib */,
 				F6BD63A601B3131201A962F7 /* libcaps.dylib */,
 				DEDDE22D0ABFB21A00D415F2 /* libchardet.dylib */,
 				F6BD63A701B3131201A962F7 /* libchrome.dylib */,
 				F6BD63A801B3131201A962F7 /* libcookie.dylib */,
 				F6BD63A901B3131201A962F7 /* libdocshell.dylib */,
 				F6BD63AB01B3131201A962F7 /* libembedcomponents.dylib */,
 				008115470B1811F0001CB3F0 /* libgkgfxthebes.dylib */,
 				F6BD63B101B3131201A962F7 /* libwebbrwsr.dylib */,
 				F6BD63DF01B313EE01A962F7 /* libgklayout.dylib */,
 				F6BD63E101B313EE01A962F7 /* libhtmlpars.dylib */,
 				F6BD63E201B313EE01A962F7 /* libjar50.dylib */,
 				F6BD63E401B313EE01A962F7 /* libnecko.dylib */,
 				DED015F90D84C5B00017CFE5 /* libimgicon.dylib */,
 				F6BD640E01B3156701A962F7 /* libimglib2.dylib */,
-				F5D3F1CE0209235A014E447F /* libmork.dylib */,
 				F6BD641201B3156701A962F7 /* libpref.dylib */,
 				F6BD641401B3156701A962F7 /* librdf.dylib */,
 				F5F59320020F4CD201ACA690 /* libtxmgr.dylib */,
 				F6BD641701B3156701A962F7 /* libuconv.dylib */,
 				F6BD641B01B3156701A962F7 /* libwidget_mac.dylib */,
 				F6BD641C01B3156701A962F7 /* libxpconnect.dylib */,
 				F6BD644F01B315FA01A962F7 /* libgkplugin.dylib */,
 				F53A902202C1127A01A967F3 /* liboji.dylib */,
 				A708E74103FB9041003C038B /* libi18n.dylib */,
-				A708E74303FB90AB003C038B /* libxmlextras.dylib */,
-				A7D88E680465D94000A80196 /* libsuitetypeaheadfind.dylib */,
 				0F5187C308858E620091F3FB /* libpermissions.dylib */,
 				DE62E42F0B72B3D200142851 /* libauth.dylib */,
 				DEC87B0F0C2882DC002EB106 /* libstoragecomps.dylib */,
 				C7DE8E2B0F30D27300CD3872 /* libcaminosafebrowsing.dylib */,
 			);
 			name = Components;
 			sourceTree = "";
 		};
 		0FA8EFA30423B37000A80166 /* XPT files */ = {
 			isa = PBXGroup;
 			children = (
+				B33032AE10AE166F002FA0A7 /* places.xpt */,
 				F6BD639401B3131201A962F7 /* caps.xpt */,
 				82CE28C40736625800B4DE07 /* composer.xpt */,
 				F6BD63D901B313EE01A962F7 /* content_base.xpt */,
 				DEFD23560D021C63006899B9 /* content_html.xpt */,
 				DEFD23570D021C63006899B9 /* content_htmldoc.xpt */,
 				DEFD23550D021C63006899B9 /* content_xmldoc.xpt */,
 				82AC0D5D065A5F2300776B02 /* content_xslt.xpt */,
 				DEFD235E0D021C6A006899B9 /* content_xtf.xpt */,
@@ -3643,16 +3643,17 @@
 				F6BD639A01B3131201A962F7 /* dom_events.xpt */,
 				F6BD639B01B3131201A962F7 /* dom_html.xpt */,
 				DE8EEA0B0D39A2A500BB96C1 /* dom_json.xpt */,
 				DEFD234F0D021C3A006899B9 /* dom_loadsave.xpt */,
 				F6BD639C01B3131201A962F7 /* dom_range.xpt */,
 				DEFD23520D021C48006899B9 /* dom_storage.xpt */,
 				F6BD639D01B3131201A962F7 /* dom_stylesheets.xpt */,
 				F6BD639D01B3131201A963F7 /* dom_svg.xpt */,
+				DE317C39111F7DF300A9D40A /* dom_threads.xpt */,
 				F6BD639E01B3131201A962F7 /* dom_traversal.xpt */,
 				F6BD639F01B3131201A962F7 /* dom_views.xpt */,
 				F6BD63A001B3131201A962F7 /* dom_xbl.xpt */,
 				82AC0D5E065A5F5100776B02 /* dom_xpath.xpt */,
 				F6BD63A101B3131201A962F7 /* dom_xul.xpt */,
 				DE878FCB0C175ABB00153511 /* dom_offline.xpt */,
 				F6BD644D01B315FA01A962F7 /* embed_base.xpt */,
 				0098B19E0CAEAAE800DA0F2F /* exthandler.xpt */,
@@ -3680,17 +3681,16 @@
 				F6BD63F001B313EE01A962F7 /* necko_viewsource.xpt */,
 				F6BD641D01B3156701A962F7 /* pref.xpt */,
 				F6BD641F01B3156701A962F7 /* rdf.xpt */,
 				F6BD642001B3156701A962F7 /* shistory.xpt */,
 				E4C7D99E0A32109D00B455AD /* spellchecker.xpt */,
 				DEC87B110C288337002EB106 /* storage.xpt */,
 				82CE28C80736633900B4DE07 /* txmgr.xpt */,
 				F6BD63B301B3131201A962F7 /* txtsvc.xpt */,
-				A7D88E6A0465D9F800A80196 /* suitetypeaheadfind.xpt */,
 				F6BD642101B3156701A962F7 /* uconv.xpt */,
 				F6BD642201B3156701A962F7 /* unicharutil.xpt */,
 				F6BD642301B3156701A962F7 /* uriloader.xpt */,
 				C7DE8E260F30D1BC00CD3872 /* url-classifier.xpt */,
 				F6BD63B401B3131201A962F7 /* webBrowser_core.xpt */,
 				3F7C6CC505B5B42E002FFFD3 /* widget.xpt */,
 				F6BD63B501B3131201A962F7 /* windowwatcher.xpt */,
 				F6BD642501B3156701A962F7 /* xpcom_base.xpt */,
@@ -3741,16 +3741,17 @@
 				1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */,
 				F557193A022B4102010001CA /* PreferencePanes.framework */,
 				F52D5CDB027D412A01A80166 /* Carbon.framework */,
 				F52D5CDC027D412A01A80166 /* CoreFoundation.framework */,
 				DEB968300B0D8E9F0023F8B1 /* Security.framework */,
 				F52D5CDD027D412A01A80166 /* SystemConfiguration.framework */,
 				F5FEDBCB02AD8DD101A967F3 /* QuickTime.framework */,
 				3F558E950552122E006156FD /* IOKit.framework */,
+				DE3179D9111E91E100A9D40A /* AudioUnit.framework */,
 				7B64B7BA0CCFD9F50098406C /* Sparkle.xcodeproj */,
 				7BAEF7470CCFDE7D00384F4E /* Sparkle.framework */,
 				DEFAA2850F24192200BD51C1 /* Growl.xcodeproj */,
 				DEFAA3430F241C1600BD51C1 /* Growl.framework */,
 				33820D980F8AA24500D2164A /* Breakpad.xcodeproj */,
 				33820DC00F8AA31B00D2164A /* Breakpad.framework */,
 			);
 			name = "Linked Frameworks";
@@ -4080,17 +4081,16 @@
 				DEE34A560B84F5E100BCD687 /* FileChangeWatcher.m */,
 			);
 			name = UI;
 			sourceTree = "";
 		};
 		33563A520C84ED2700DC4D06 /* Backend */ = {
 			isa = PBXGroup;
 			children = (
-				0FBC0ED90798F9A000E8E0E2 /* nsSimpleGlobalHistory.cpp */,
 				F52F87CB027D75C301A80165 /* HistoryDataSource */,
 				F52F87CD027D75C301A80165 /* HistoryDataSource.mm */,
 				3F7C6CB905B4819E002FFFD3 /* HistoryItem.h */,
 				3F7C6CBA05B4819E002FFFD3 /* HistoryItem.mm */,
 			);
 			name = Backend;
 			sourceTree = "";
 		};
@@ -4423,18 +4423,18 @@
 				00A29E860BC9AA5B00BF313F /* tab_menu_button.tiff */,
 				F540BD1A029ED15301026D5D /* security_lock.tiff */,
 				F540BD1C029ED17901026D5D /* security_broken.tiff */,
 				0FCD888808C52A9900A1923B /* certificate.tiff */,
 				0FCD888908C52A9900A1923B /* mini_cert_invalid.tiff */,
 				0FCD888A08C52A9900A1923B /* mini_cert_valid.tiff */,
 				0FE772B908C7FF4100AFB850 /* mini_cert_untrusted.tiff */,
 				0F2453D508C96478001C264F /* lock_badge.tiff */,
-				F5A112C902DF270F01026D5D /* loading-image.gif */,
-				F55B6BF402EF1F7E01026D5D /* broken-image.gif */,
+				F5A112C902DF270F01026D5D /* loading-image.png */,
+				F55B6BF402EF1F7E01026D5D /* broken-image.png */,
 				3FB2BAE90545EBF2002B9691 /* addressbook_icon.tiff */,
 				3FB2BAEA0545EBF2002B9691 /* bookmarkmenu_icon.tiff */,
 				3FB2BAEB0545EBF2002B9691 /* bookmarktoolbar_icon.tiff */,
 				3FB2BAEC0545EBF2002B9691 /* error_page_site_icon.tiff */,
 				3FB2BAEF0545EBF2002B9691 /* rendezvous_icon.tiff */,
 				3FB2BAF10545EBF2002B9691 /* top10_icon.tiff */,
 				0FFE0A7E079B147F00966027 /* bm_sort.tiff */,
 				0FFE0A7F079B147F00966027 /* bm_add.tiff */,
@@ -4590,16 +4590,17 @@
 				3F8C005506800E1300658CBC /* Localizable.strings */,
 			);
 			name = "Web Features";
 			sourceTree = "";
 		};
 		F51D9B1402094BB501A80166 /* Gecko Statics */ = {
 			isa = PBXGroup;
 			children = (
+				B33032C810AE16D7002FA0A7 /* libmorkreader_s.a */,
 				F51D9B2D0209573701A80166 /* libembed_base_s.a */,
 				F5C2CDA702383CE601A967DF /* libunicharutil_s.a */,
 			);
 			name = "Gecko Statics";
 			sourceTree = "";
 		};
 		F5247C2F0228B5E7013DD99A /* Gecko Security */ = {
 			isa = PBXGroup;
@@ -4808,18 +4809,17 @@
 				F5179422028275B801A967DF /* globe_ico.tiff */,
 			);
 			name = Sidebar;
 			sourceTree = "";
 		};
 		F56610A40394767101A9666E /* Plugins */ = {
 			isa = PBXGroup;
 			children = (
-				F56610BC0394775201A9666E /* Default Plugin.plugin */,
-				F5F0BDC803C0A76F01202892 /* PrintPDE.plugin */,
+				F56610BC0394775201A9666E /* DefaultPlugin.plugin */,
 				3FEBB0E60899C18600BD8373 /* MRJPlugin.plugin */,
 				3FEBB08E0899C0F600BD8373 /* JavaEmbeddingPlugin.bundle */,
 			);
 			name = Plugins;
 			sourceTree = "";
 		};
 		F56F242202AC6F7101A967F3 /* Gecko Static Components */ = {
 			isa = PBXGroup;
@@ -4836,50 +4836,46 @@
 				F56F244902AC714601A967F3 /* libhtmlpars.a */,
 				F56F244D02AC714601A967F3 /* libimglib2.a */,
 				F56F245002AC714601A967F3 /* libpref.a */,
 				F56F245102AC714601A967F3 /* librdf.a */,
 				F56F246002AC723001A967F3 /* libdocshell.a */,
 				F56F246202AC723001A967F3 /* libembedcomponents.a */,
 				F56F246402AC723001A967F3 /* libgklayout.a */,
 				F56F246502AC723001A967F3 /* libgkplugin.a */,
-				F56F246B02AC723001A967F3 /* libmork.a */,
 				F56F247002AC723001A967F3 /* libtxmgr.a */,
 				F56F247302AC723001A967F3 /* libwebbrwsr.a */,
 				F56F247402AC723001A967F3 /* libwidget_mac.a */,
 				F56F248B02AC729901A967F3 /* libappcomps.a */,
-				F56F248B02AC729901A967F4 /* libxpautocomplete.a */,
 				F56F248C02AC729901A967F3 /* libcookie.a */,
 				F56F248F02AC729901A967F3 /* libpipboot.a */,
 				F56F249002AC729901A967F3 /* libpipnss.a */,
-				F56F249402AC729901A967F3 /* libxmlextras.a */,
 				F507423C02AD808201A967F3 /* libcrmf.a */,
 				0081150C0B180DFA001CB3F0 /* libgkgfxthebes.a */,
 				0081150A0B180DDE001CB3F0 /* libthebes.a */,
 				F524EF6702AD8B9301A967F3 /* libgkgfx.a */,
 				F54AD84402C115D901A967F3 /* liboji.a */,
 				F5E47654030C5FD501A967F3 /* libuniversalchardet.a */,
 				A7E5D960041A07C900A967F8 /* libi18n.a */,
-				A72CB3D8041A0BA100A967F8 /* libgfxshared_s.a */,
 				0FEBFCA1044F989900A96652 /* libucvutil_s.a */,
 				7BB332F30A7E99BC0075521C /* libspellchecker.a */,
-				A7FD31C90466004E00A80196 /* libsuitetypeaheadfind.a */,
 				0F518834088593F30091F3FB /* libpermissions.a */,
 				A7C1276F0495618300A967F8 /* libjar50.a */,
 				3FECC8E505D1FE800068E7ED /* libprofdirserviceprovider_s.a */,
 				4DC41D3D0869D7A400947044 /* libmozjpeg.a */,
 				4DC41D3C0869D7A400947044 /* libjsj.a */,
 				4DC41D3E0869D7A400947044 /* libmozpng.a */,
 				4DC41D3E0869D7A400947045 /* libmozcairo.a */,
 				4DC41D3E0869D7A400947046 /* libmozlibpixman.a */,
 				4DC28F5D099184B80081939B /* libucvmath.a */,
 				DE62E4310B72B50C00142851 /* libauth.a */,
 				DEC87B140C288403002EB106 /* libstoragecomps.a */,
-				33B777E10C5588E500A6D67F /* libmozlcms.a */,
 				DE2AC6EC0F33EB8F009C0A42 /* libcaminosafebrowsing.a */,
+				DE317963111E87E700A9D40A /* libmozqcms.a */,
+				DE317B88111F71F000A9D40A /* libplaces.a */,
 			);
 			name = "Gecko Static Components";
 			sourceTree = "";
 		};
 		F57BED9603A1822701A9666E /* Rendezvous */ = {
 			isa = PBXGroup;
 			children = (
 				F57BED9E03A1825001A9666E /* DNSUtils.h */,
@@ -4937,17 +4933,17 @@
 		};
 		F5949A46030D58A1014E8430 /* dtd */ = {
 			isa = PBXGroup;
 			children = (
 				0E6A9888097DFFF4007962C1 /* mathml.dtd */,
 				F5949A47030D58A1014E8430 /* xhtml11.dtd */,
 			);
 			name = dtd;
-			path = ../dist/Embed/res/dtd;
+			path = ../dist/bin/res/dtd;
 			sourceTree = SOURCE_ROOT;
 		};
 		F5A3669402CCFAF601DC3354 /* Bookmarks */ = {
 			isa = PBXGroup;
 			children = (
 				3FB2BA8D0545EA80002B9691 /* BookmarksClient.h */,
 				335639B10C84E60D00DC4D06 /* UI */,
 				335639AF0C84E59700DC4D06 /* Backend */,
@@ -5026,31 +5022,29 @@
 				F6BD638101B30EA301A962F7 /* libplc4.dylib */,
 				F6BD638201B30EA301A962F7 /* libplds4.dylib */,
 				33B775A90C4EAC1E00A6D67F /* libsqlite3.dylib */,
 				F50DCB4302C2856001A967F3 /* libjsj.dylib */,
 				008115420B180F35001CB3F0 /* libthebes.dylib */,
 				F6BD638701B30F5301A962F7 /* libgkgfx.dylib */,
 				0E6A9882097DFF9A007962C1 /* libucvmath.dylib */,
 				3FE5B9FC068A090F0001CECD /* libmozz.dylib */,
-				33B777950C55851800A6D67F /* libmozlcms.dylib */,
 				F5461CBB03AAC25C01A96660 /* nsProxyAutoConfig.js */,
 				0098B11D0CAEA75700DA0F2F /* nsHandlerService.js */,
 				C7DE8E150F30D14F00CD3872 /* nsUrlClassifierListManager.js */,
 				C7DE8E160F30D14F00CD3872 /* nsUrlClassifierLib.js */,
+				DEF2115D1128FF4B00C32DAA /* PlacesDBUtils.jsm */,
 				0098B17F0CAEA9CF00DA0F2F /* XPCOMUtils.jsm */,
-				F5F14E9602A5A43A01A967F3 /* libwidget.rsrc */,
 				F5247C2F0228B5E7013DD99A /* Gecko Security */,
 				F6BD645501B3167601A962F7 /* Gecko Res */,
 				F6BD64FB01B3184301A962F7 /* Gecko Pref Defaults */,
 				F507BA530213C26501D93544 /* Gecko Profile Defaults */,
 				F56F242202AC6F7101A967F3 /* Gecko Static Components */,
 				F6BD638901B30F5301A962F7 /* Gecko Components */,
 				F6BD64FF01B3184301A962F7 /* Gecko Chrome */,
-				7919FCF0044631350000010E /* PrintPDE.plugin */,
 			);
 			name = Gecko;
 			sourceTree = "";
 		};
 		F6BD638901B30F5301A962F7 /* Gecko Components */ = {
 			isa = PBXGroup;
 			children = (
 				0FA8EFA20423B36300A80166 /* Components */,
@@ -5092,36 +5086,42 @@
 			children = (
 				F6BD64D801B3172601A962F7 /* html40Latin1.properties */,
 				F6BD64D901B3172601A962F7 /* html40Special.properties */,
 				F6BD64DA01B3172601A962F7 /* html40Symbols.properties */,
 				F6BD64DB01B3172601A962F7 /* htmlEntityVersions.properties */,
 				F6BD64DC01B3172601A962F7 /* transliterate.properties */,
 			);
 			name = entityTables;
-			path = ../dist/Embed/res/entityTables;
+			path = ../dist/bin/res/entityTables;
 			sourceTree = SOURCE_ROOT;
 		};
 		F6BD64FB01B3184301A962F7 /* Gecko Pref Defaults */ = {
 			isa = PBXGroup;
 			children = (
 				F6BD64FC01B3184301A962F7 /* all.js */,
 				F55A9BC60228CCE101DAE4DB /* security-prefs.js */,
 				F59A0E320307635401A967F3 /* all-camino.js */,
 			);
 			name = "Gecko Pref Defaults";
 			sourceTree = "";
 		};
 		F6BD64FF01B3184301A962F7 /* Gecko Chrome */ = {
 			isa = PBXGroup;
 			children = (
-				F6BD650001B3184301A962F7 /* embed.jar */,
+				DE317876111E3D7F00A9D40A /* classic.jar */,
+				DE31787F111E3E6700A9D40A /* comm.jar */,
+				F54EF7ED022A2F9C01A80165 /* en-US.jar */,
 				F6BD650001B3184301A96307 /* flashblock.jar */,
-				F54EF7ED022A2F9C01A80165 /* pipnss.jar */,
-				F5DA444A027DD5AA01A80166 /* installed-chrome.txt */,
+				F6BD650001B3184301A962F7 /* toolkit.jar */,
+				DE317880111E3E6700A9D40A /* classic.manifest */,
+				DE31787E111E3E6700A9D40A /* comm.manifest */,
+				DE31787B111E3E6700A9D40A /* flashblock.manifest */,
+				DE31787D111E3E6700A9D40A /* en-US.manifest */,
+				DE31787C111E3E6700A9D40A /* toolkit.manifest */,
 			);
 			name = "Gecko Chrome";
 			sourceTree = "";
 		};
 /* End PBXGroup section */
 
 /* Begin PBXNativeTarget section */
 		035A4974079DC83D0084B05F /* HistoryPrefPane */ = {
@@ -5192,17 +5192,16 @@
 				3F44AD5105BDFB9F00CB4B08 /* Copy Camino Prefs */,
 				3FBDC88908253CCC00D7F8E0 /* Copy Wallet Resources */,
 				3F44AD5305BDFB9F00CB4B08 /* Copy Base Prefs */,
 				0098B1F60CAEC4FD00DA0F2F /* Copy Profile Defaults */,
 				3F44AD5705BDFB9F00CB4B08 /* Copy Chrome */,
 				3F44AD5A05BDFB9F00CB4B08 /* Copy Security Libraries */,
 				3F44AD6005BDFB9F00CB4B08 /* Copy Libraries */,
 				3F44AD6A05BDFB9F00CB4B08 /* Copy Security Components */,
-				3F44AD6F05BDFB9F00CB4B08 /* Copy Security Chrome */,
 				33819D740D98189700CA9F52 /* Copy Feed Handlers */,
 				3F44AD7705BDFB9F00CB4B08 /* Copy Frameworks */,
 				DE578A7A0FA69EAF0032CFD2 /* Copy Crash Reporter InfoPlists.strings Override */,
 				0080C7DE0E2E4CD9006AFD32 /* Change Sparkle Load ID */,
 				3365CA1F0D073ECA00ACBF18 /* Scrub Sparkle Languages */,
 				3F44AD7A05BDFB9F00CB4B08 /* Copy Plugins */,
 				4D5881750864B276001305B3 /* Copy Gecko Plugins */,
 				33820EA50F8AB1F400D2164A /* Force Copy Before Link */,
@@ -5330,17 +5329,16 @@
 				3F44AF5B05BDFBA000CB4B08 /* Copy Gecko Entity Tables */,
 				3F44AF6C05BDFBA000CB4B08 /* Copy Camino Prefs */,
 				3FBDC8C908254DF000D7F8E0 /* Copy Wallet Resources */,
 				3F44AF6E05BDFBA000CB4B08 /* Copy Base Prefs */,
 				0098B1FE0CAEC52500DA0F2F /* Copy Profile Defaults */,
 				3F44AF7205BDFBA000CB4B08 /* Copy Chrome */,
 				3F44AF7505BDFBA000CB4B08 /* Copy Security Libraries */,
 				3F44AF7B05BDFBA000CB4B08 /* Copy Security Components */,
-				3F44AF7E05BDFBA000CB4B08 /* Copy Security Chrome */,
 				3F44AF8605BDFBA000CB4B08 /* Copy Libraries */,
 				33819D750D98189700CA9F52 /* Copy Feed Handlers */,
 				3F44AF9005BDFBA000CB4B08 /* Copy Frameworks */,
 				DE578A7C0FA69FCB0032CFD2 /* Copy Crash Reporter InfoPlist.strings Override */,
 				0080C7F10E2E4D7A006AFD32 /* Change Sparkle Load ID */,
 				3365CA0F0D07197E00ACBF18 /* Scrub Sparkle Languages */,
 				3F44AF9205BDFBA000CB4B08 /* Copy Plugins */,
 				4D5881790864B297001305B3 /* Copy Gecko Plugins */,
@@ -6140,33 +6138,33 @@
 			files = (
 			);
 			inputPaths = (
 				"$(BUILT_PRODUCTS_DIR)/$(WRAPPER_NAME)/Contents/MacOS/libmozlcms.dylib",
 				"$(BUILT_PRODUCTS_DIR)/$(WRAPPER_NAME)/Contents/Frameworks/Breakpad.framework",
 			);
 			name = "Force Copy Before Link";
 			outputPaths = (
-				../dist/Embed/libthebes.dylib,
+				../dist/bin/libthebes.dylib,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 			shellPath = /bin/sh;
 			shellScript = "# This script does nothing; it is here only to force Xcode (via the input and output files)\n# into understanding that library and framework copy phases must take place before linking.\n# This is necessary to be able to set an @executable_path that works for both libthebes.dylib\n# and Breakpad.framework.\necho \"Forcing library and framework copy phase to happen before linking.\"";
 		};
 		33A72CD40F8ADDE4003D3D78 /* Force Copy Before Link */ = {
 			isa = PBXShellScriptBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
 			);
 			inputPaths = (
 				"$(BUILT_PRODUCTS_DIR)/$(WRAPPER_NAME)/Contents/Frameworks/Breakpad.framework",
 			);
 			name = "Force Copy Before Link";
 			outputPaths = (
-				../dist/Embed/libxpcom.dylib,
+				../dist/bin/libxpcom.dylib,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 			shellPath = /bin/sh;
 			shellScript = "# This script does nothing; it is here only to force Xcode (via the input and output files)\n# into understanding that library and framework copy phases must take place before linking.\n# This is necessary to be able to set an @executable_path that works for both libthebes.dylib\n# and Breakpad.framework. (It's really only necessary for the non-static build, since we\n# don't have to worry about libthebes in a static build, but this minimizes divergence\n# between the two builds.)\necho \"Forcing library and framework copy phase to happen before linking.\"";
 		};
 		DE578A7A0FA69EAF0032CFD2 /* Copy Crash Reporter InfoPlists.strings Override */ = {
 			isa = PBXShellScriptBuildPhase;
 			buildActionMask = 2147483647;
@@ -6294,17 +6292,16 @@
 				3F44ACCC05BDFB9E00CB4B08 /* ProgressView.mm in Sources */,
 				3F44ACCD05BDFB9E00CB4B08 /* HistoryItem.mm in Sources */,
 				3F27D94D05DB2600007B543D /* NSSplitView+Utils.mm in Sources */,
 				3FF08EFA06E7CF3F001C9B19 /* BrowserTabBarView.mm in Sources */,
 				3FF08F0206E7CF86001C9B19 /* TruncatingTextAndImageCell.mm in Sources */,
 				3489ADCC0753B717005ADF6C /* ABAddressBook+Utils.mm in Sources */,
 				0FBC0ECE0798F94900E8E0E2 /* NSDate+Utils.m in Sources */,
 				0FBC0ED10798F95400E8E0E2 /* NSMenu+Utils.m in Sources */,
-				0FBC0EDA0798F9A000E8E0E2 /* nsSimpleGlobalHistory.cpp in Sources */,
 				0FBC0EDD0798F9B400E8E0E2 /* HistoryOutlineViewDelegate.mm in Sources */,
 				0FBC0EE00798FA1900E8E0E2 /* PopupMenuButton.m in Sources */,
 				0F13A31007D7F3930034B176 /* nsAboutBookmarks.mm in Sources */,
 				0F4752D507DC0F4D002AEE9F /* AddBookmarkDialogController.mm in Sources */,
 				3FFFEC1F081C3F0B00843C07 /* StatusBarView.mm in Sources */,
 				3FBDC7DB08252CF300D7F8E0 /* PhoneNumber.mm in Sources */,
 				3FBDC7DC08252CF300D7F8E0 /* wallet.mm in Sources */,
 				3FE4ECEA082C2D89003BF39E /* NSURL+Utils.m in Sources */,
@@ -6493,17 +6490,16 @@
 				3F44AF0605BDFBA000CB4B08 /* ProgressView.mm in Sources */,
 				3F44AF0705BDFBA000CB4B08 /* HistoryItem.mm in Sources */,
 				3F27D94F05DB2600007B543D /* NSSplitView+Utils.mm in Sources */,
 				3FF08EFC06E7CF3F001C9B19 /* BrowserTabBarView.mm in Sources */,
 				3FF08F0506E7CF86001C9B19 /* TruncatingTextAndImageCell.mm in Sources */,
 				3489ADCE0753B717005ADF6C /* ABAddressBook+Utils.mm in Sources */,
 				0FBC0ECF0798F94900E8E0E2 /* NSDate+Utils.m in Sources */,
 				0FBC0ED20798F95400E8E0E2 /* NSMenu+Utils.m in Sources */,
-				0FBC0EDB0798F9A000E8E0E2 /* nsSimpleGlobalHistory.cpp in Sources */,
 				0FBC0EDE0798F9B400E8E0E2 /* HistoryOutlineViewDelegate.mm in Sources */,
 				0FBC0EE10798FA1900E8E0E2 /* PopupMenuButton.m in Sources */,
 				0F13A31207D7F3930034B176 /* nsAboutBookmarks.mm in Sources */,
 				0F4752D707DC0F4D002AEE9F /* AddBookmarkDialogController.mm in Sources */,
 				3FFFEC21081C3F0B00843C07 /* StatusBarView.mm in Sources */,
 				3FBDC7DD08252CF300D7F8E0 /* PhoneNumber.mm in Sources */,
 				3FBDC7DE08252CF300D7F8E0 /* wallet.mm in Sources */,
 				3FE4ECEB082C2D89003BF39E /* NSURL+Utils.m in Sources */,
@@ -7440,16 +7436,17 @@
 				);
 				HEADER_SEARCH_PATHS = (
 					../dist/include,
 					../dist/include/docshell,
 					../dist/include/history,
 					../dist/include/necko,
 					../dist/include/nkcache,
 					../dist/include/nspr,
+					../dist/include/places,
 					../dist/include/xpcom,
 				);
 				INFOPLIST_FILE = "Info-HistoryPrefPane.plist";
 				LIBRARY_SEARCH_PATHS = ../dist/lib;
 				OTHER_CFLAGS = (
 					"-fshort-wchar",
 					"-DDEBUG",
 					"-DMOZ_DEBUG",
@@ -7475,16 +7472,17 @@
 				);
 				HEADER_SEARCH_PATHS = (
 					../dist/include,
 					../dist/include/docshell,
 					../dist/include/history,
 					../dist/include/necko,
 					../dist/include/nkcache,
 					../dist/include/nspr,
+					../dist/include/places,
 					../dist/include/xpcom,
 				);
 				INFOPLIST_FILE = "Info-HistoryPrefPane.plist";
 				LIBRARY_SEARCH_PATHS = ../dist/lib;
 				OTHER_CFLAGS = "-fshort-wchar";
 				OTHER_CPLUSPLUSFLAGS = (
 					"$(OTHER_CPLUSPLUSFLAGS)",
 					"-Wno-non-virtual-dtor",
@@ -7500,18 +7498,20 @@
 		332377850C4D0F9600A34879 /* Development */ = {
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 332377970C4D0FBD00A34879 /* Camino.xcconfig */;
 			buildSettings = {
 				LIBRARY_SEARCH_PATHS = (
 					../embedding/base,
 					../dist/bin,
 					../dist/lib,
-					../dist/Embed/components,
+					../dist/bin/components,
 					../profile/dirserviceprovider/src,
+					../db/morkreader,
+					../staticlib/components,
 				);
 				OTHER_CFLAGS = (
 					"$(OTHER_CFLAGS)",
 					"-DDEBUG",
 					"-DMOZ_DEBUG",
 					"-DTRACING",
 				);
 			};
@@ -7520,18 +7520,20 @@
 		332377860C4D0F9600A34879 /* Deployment */ = {
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 332377970C4D0FBD00A34879 /* Camino.xcconfig */;
 			buildSettings = {
 				LIBRARY_SEARCH_PATHS = (
 					../embedding/base,
 					../dist/bin,
 					../dist/lib,
-					../dist/Embed/components,
+					../dist/bin/components,
 					../profile/dirserviceprovider/src,
+					../db/morkreader,
+					../staticlib/components,
 				);
 			};
 			name = Deployment;
 		};
 		3323778A0C4D0F9600A34879 /* Development */ = {
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 332377970C4D0FBD00A34879 /* Camino.xcconfig */;
 			buildSettings = {
@@ -7547,16 +7549,17 @@
 					../js/src/liveconnect,
 					../js/src/xpconnect/loader,
 					../jpeg,
 					../modules/libimg/png,
 					../gfx/cairo/cairo/src,
 					../gfx/cairo/libpixman/src,
 					../profile/dirserviceprovider/src,
 					../dist/bin/components,
+					../db/morkreader,
 				);
 				OTHER_CFLAGS = (
 					"$(OTHER_CFLAGS)",
 					"-DDEBUG",
 					"-DMOZ_DEBUG",
 					"-DTRACING",
 				);
 			};
@@ -7578,16 +7581,18 @@
 					../js/src/liveconnect,
 					../js/src/xpconnect/loader,
 					../jpeg,
 					../modules/libimg/png,
 					../gfx/cairo/cairo/src,
 					../gfx/cairo/libpixman/src,
 					../profile/dirserviceprovider/src,
 					../dist/bin/components,
+					../db/morkreader,
+					../dist/lib,
 				);
 			};
 			name = Deployment;
 		};
 		3323778F0C4D0F9600A34879 /* Development */ = {
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 332377CF0C4D886800A34879 /* Debug.xcconfig */;
 			buildSettings = {
Index: flashblock/Makefile.in
===================================================================
RCS file: /cvsroot/mozilla/camino/flashblock/Makefile.in,v
retrieving revision 1.1
diff -u -8 -r1.1 Makefile.in
--- flashblock/Makefile.in	21 Feb 2007 20:24:55 -0000	1.1
+++ flashblock/Makefile.in	23 Feb 2010 03:08:26 -0000
@@ -37,27 +37,8 @@
 DEPTH		= ../..
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 include $(topsrcdir)/config/rules.mk
-
-# The presence of jar.mn causes $(SOURCE_CHROME_DIR)/$(JAR_FILE).jar to be
-# built and $(SOURCE_CHROME_DIR)/installed-chrome.txt to be updated.  Camino
-# uses $(TARGET_CHROME_DIR)/installed-chrome.txt instead, though, so copy
-# the jar and update the correct installed-chrome.txt file.
-
-SOURCE_CHROME_DIR	= $(DIST)/bin/chrome
-TARGET_CHROME_DIR	= $(DIST)/Embed/chrome
-INSTALLED_CHROME	= $(TARGET_CHROME_DIR)/installed-chrome.txt
-CHROME_TYPE		= content
-CHROME_PKG_NAME		= flashblock
-JAR_FILE		= $(CHROME_PKG_NAME)
-
-libs realchrome:: $(CHROME_DEPS)
-	chmod a-x $(INSTALLED_CHROME)
-	$(NSINSTALL) -t -m 0644 \
-	  $(SOURCE_CHROME_DIR)/$(JAR_FILE).jar $(TARGET_CHROME_DIR)
-	$(PERL) -I$(MOZILLA_DIR)/config $(MOZILLA_DIR)/config/add-chrome.pl \
-	  $(INSTALLED_CHROME) 0 $(CHROME_TYPE) $(CHROME_PKG_NAME) $(JAR_FILE)
Index: flashblock/jar.mn
===================================================================
RCS file: /cvsroot/mozilla/camino/flashblock/jar.mn,v
retrieving revision 1.1
diff -u -8 -r1.1 jar.mn
--- flashblock/jar.mn	21 Feb 2007 20:24:55 -0000	1.1
+++ flashblock/jar.mn	23 Feb 2010 03:08:26 -0000
@@ -1,8 +1,8 @@
 flashblock.jar:
-  content/flashblock/contents.rdf    (content/contents.rdf)
+% content	flashblock	%content/flashblock/	contentaccessible=yes
   content/flashblock/flashblock.xml  (content/flashblock.xml)
   content/flashblock/flashblock.css  (content/flashblock.css)
   content/flashblock/authorware.png  (content/authorware.png)
   content/flashblock/director.png    (content/director.png)
   content/flashblock/flash.png       (content/flash.png)
   content/flashblock/flashplay.png   (content/flashplay.png)
Index: flashblock/content/contents.rdf
===================================================================
RCS file: flashblock/content/contents.rdf
diff -N flashblock/content/contents.rdf
--- flashblock/content/contents.rdf	21 Feb 2007 20:24:55 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,18 +0,0 @@
-
-
-
-  
-  
-    
-  
-
-  
-  
-  
-  
Index: pinstripe/Makefile.in
===================================================================
RCS file: /cvsroot/mozilla/camino/pinstripe/Makefile.in,v
retrieving revision 1.2
diff -u -8 -r1.2 Makefile.in
--- pinstripe/Makefile.in	2 Jun 2009 02:15:02 -0000	1.2
+++ pinstripe/Makefile.in	23 Feb 2010 03:08:26 -0000
@@ -49,27 +49,8 @@
 # Makefile.  The generated license.html file overwrites the existing 
 # content/global/license.html file.
 
 CHROME_DEPS += $(topsrcdir)/camino/config/app-license.html
 
 DEFINES += -DAPP_LICENSE_BLOCK=$(CM_APP_LICENSE_FILE)
 
 CM_APP_LICENSE_FILE = $(topsrcdir)/camino/config/app-license.html
-
-# The presence of jar.mn causes $(SOURCE_CHROME_DIR)/$(JAR_FILE).jar to be
-# built and $(SOURCE_CHROME_DIR)/installed-chrome.txt to be updated.  Camino
-# uses $(TARGET_CHROME_DIR)/installed-chrome.txt instead, though, so copy
-# the jar and update the correct installed-chrome.txt file.
-
-SOURCE_CHROME_DIR	= $(DIST)/bin/chrome
-TARGET_CHROME_DIR	= $(DIST)/Embed/chrome
-INSTALLED_CHROME	= $(TARGET_CHROME_DIR)/installed-chrome.txt
-CHROME_TYPE		= skin
-CHROME_PKG_NAME		= classic/global
-JAR_FILE		= embed
-
-libs realchrome:: $(CHROME_DEPS)
-	chmod a-x $(INSTALLED_CHROME)
-	$(NSINSTALL) -t -m 0644 \
-	  $(SOURCE_CHROME_DIR)/$(JAR_FILE).jar $(TARGET_CHROME_DIR)
-	$(PERL) -I$(MOZILLA_DIR)/config $(MOZILLA_DIR)/config/add-chrome.pl \
-	  $(INSTALLED_CHROME) 0 $(CHROME_TYPE) $(CHROME_PKG_NAME) $(JAR_FILE)
Index: pinstripe/jar.mn
===================================================================
RCS file: /cvsroot/mozilla/camino/pinstripe/jar.mn,v
retrieving revision 1.2
diff -u -8 -r1.2 jar.mn
--- pinstripe/jar.mn	2 Jun 2009 02:15:02 -0000	1.2
+++ pinstripe/jar.mn	23 Feb 2010 03:08:26 -0000
@@ -1,221 +1,33 @@
-embed.jar:
-# Replace the generic Toolkit license with one appropriate for Camino
-*  content/global/license.html                                        (/toolkit/content/license.html)
-# Use up-to-date skin files from pinstripe instead of outdated ones from xpfe
-   skin/classic/global/contents.rdf                                   (global/contents.rdf)
-+  skin/classic/global/10pct_transparent_grey.png                     (/toolkit/themes/pinstripe/global/10pct_transparent_grey.png)
-+  skin/classic/global/10pct_transparent_pixel.png                    (/toolkit/themes/pinstripe/global/10pct_transparent_pixel.png)
-+  skin/classic/global/20pct_transparent_pixel.png                    (/toolkit/themes/pinstripe/global/20pct_transparent_pixel.png)
-+  skin/classic/global/50pct_transparent_grey.png                     (/toolkit/themes/pinstripe/global/50pct_transparent_grey.png)
-+  skin/classic/global/50pct_transparent_white.png                    (/toolkit/themes/pinstripe/global/50pct_transparent_white.png)
-+  skin/classic/global/about.css                                      (/toolkit/themes/winstripe/global/about.css)
-+  skin/classic/global/appPicker.css                                  (/toolkit/themes/winstripe/global/appPicker.css)
-+  skin/classic/global/arrow.css                                      (/toolkit/themes/pinstripe/global/arrow.css)
-+  skin/classic/global/autocomplete.css                               (/toolkit/themes/pinstripe/global/autocomplete.css)
-+  skin/classic/global/button.css                                     (/toolkit/themes/pinstripe/global/button.css)
-+  skin/classic/global/checkbox.css                                   (/toolkit/themes/pinstripe/global/checkbox.css)
-+  skin/classic/global/closetab.png                                   (/toolkit/themes/pinstripe/global/closetab.png)
-+  skin/classic/global/colorpicker.css                                (/toolkit/themes/pinstripe/global/colorpicker.css)
-+  skin/classic/global/config.css                                     (/toolkit/themes/pinstripe/global/config.css)
-+  skin/classic/global/customizeToolbar.css                           (/toolkit/themes/pinstripe/global/customizeToolbar.css)
-+  skin/classic/global/dialog.css                                     (/toolkit/themes/pinstripe/global/dialog.css)
-+  skin/classic/global/dropmarker.css                                 (/toolkit/themes/pinstripe/global/dropmarker.css)
-+  skin/classic/global/filepicker.css                                 (/toolkit/themes/pinstripe/global/filepicker.css)
-+  skin/classic/global/formatting.css                                 (/toolkit/themes/pinstripe/global/formatting.css)
-+  skin/classic/global/findBar.css                                    (/toolkit/themes/pinstripe/global/findBar.css)
-+  skin/classic/global/global.css                                     (/toolkit/themes/pinstripe/global/global.css)
-+  skin/classic/global/groupbox.css                                   (/toolkit/themes/pinstripe/global/groupbox.css)
-+  skin/classic/global/linkTree.css                                   (/toolkit/themes/pinstripe/global/linkTree.css)
-+  skin/classic/global/listbox_highlight.png                          (/toolkit/themes/pinstripe/global/listbox_highlight.png)
-+  skin/classic/global/listbox.css                                    (/toolkit/themes/pinstripe/global/listbox.css)
-+  skin/classic/global/menu.css                                       (/toolkit/themes/pinstripe/global/menu.css)
-+  skin/classic/global/menulist.css                                   (/toolkit/themes/pinstripe/global/menulist.css)
-+  skin/classic/global/notification.css                               (/toolkit/themes/pinstripe/global/notification.css)
-+  skin/classic/global/netError.css                                   (/toolkit/themes/pinstripe/global/netError.css)
-+  skin/classic/global/numberbox.css                                  (/toolkit/themes/pinstripe/global/numberbox.css)
-   skin/classic/global/plugins.css                                    (/toolkit/empty-file)
-+  skin/classic/global/passwordmgr.css                                (/toolkit/themes/pinstripe/global/passwordmgr.css)
-+  skin/classic/global/popup.css                                      (/toolkit/themes/pinstripe/global/popup.css)
-+  skin/classic/global/preferences.css                                (/toolkit/themes/pinstripe/global/preferences.css)
-+  skin/classic/global/progressmeter.css                              (/toolkit/themes/pinstripe/global/progressmeter.css)
-+  skin/classic/global/radio.css                                      (/toolkit/themes/pinstripe/global/radio.css)
-+  skin/classic/global/richlistbox.css                                (/toolkit/themes/pinstripe/global/richlistbox.css)
-+  skin/classic/global/scrollbars.css                                 (/toolkit/themes/pinstripe/global/nativescrollbars.css)
-*+ skin/classic/global/scale.css                                      (/toolkit/themes/pinstripe/global/scale.css)
-+  skin/classic/global/scrollbox.css                                  (/toolkit/themes/pinstripe/global/scrollbox.css)
-+  skin/classic/global/spinbuttons.css                                (/toolkit/themes/pinstripe/global/spinbuttons.css)
-+  skin/classic/global/splitter.css                                   (/toolkit/themes/pinstripe/global/splitter.css)
-+  skin/classic/global/statusbar-background.gif                       (/toolkit/themes/pinstripe/global/statusbar-background.gif)
-+  skin/classic/global/statusbar-background-inactive.gif              (/toolkit/themes/pinstripe/global/statusbar-background-inactive.gif)
-+  skin/classic/global/tabbox.css                                     (/toolkit/themes/pinstripe/global/tabbox.css)
-+  skin/classic/global/textbox.css                                    (/toolkit/themes/pinstripe/global/textbox.css)
-+  skin/classic/global/datetimepicker.css                             (/toolkit/themes/pinstripe/global/datetimepicker.css)
-+  skin/classic/global/toolbar.css                                    (/toolkit/themes/pinstripe/global/toolbar.css)
-+  skin/classic/global/toolbarbutton.css                              (/toolkit/themes/pinstripe/global/toolbarbutton.css)
-+  skin/classic/global/tree.css                                       (/toolkit/themes/pinstripe/global/tree.css)
-+  skin/classic/global/wizard.css                                     (/toolkit/themes/pinstripe/global/wizard.css)
-+  skin/classic/global/wizardOverlay.css                              (/toolkit/themes/pinstripe/global/wizardOverlay.css)
-+  skin/classic/global/globalBindings.xml                             (/toolkit/themes/pinstripe/global/globalBindings.xml)
-+  skin/classic/global/arrow/arrow-dn-dis.gif                         (/toolkit/themes/pinstripe/global/arrow/arrow-dn-dis.gif)
-+  skin/classic/global/arrow/arrow-dn-dis.png                         (/toolkit/themes/pinstripe/global/arrow/arrow-dn-dis.png)
-+  skin/classic/global/arrow/arrow-dn-hov.gif                         (/toolkit/themes/pinstripe/global/arrow/arrow-dn-hov.gif)
-+  skin/classic/global/arrow/arrow-dn-sharp.gif                       (/toolkit/themes/pinstripe/global/arrow/arrow-dn-sharp.gif)
-+  skin/classic/global/arrow/arrow-dn-small-dis.png                   (/toolkit/themes/pinstripe/global/arrow/arrow-dn-small-dis.png)
-+  skin/classic/global/arrow/arrow-dn-small.png                       (/toolkit/themes/pinstripe/global/arrow/arrow-dn-small.png)
-+  skin/classic/global/arrow/arrow-dn.gif                             (/toolkit/themes/pinstripe/global/arrow/arrow-dn.gif)
-+  skin/classic/global/arrow/arrow-dn.png                             (/toolkit/themes/pinstripe/global/arrow/arrow-dn.png)
-+  skin/classic/global/arrow/arrow-lft-dis.gif                        (/toolkit/themes/pinstripe/global/arrow/arrow-lft-dis.gif)
-+  skin/classic/global/arrow/arrow-lft-hov.gif                        (/toolkit/themes/pinstripe/global/arrow/arrow-lft-hov.gif)
-+  skin/classic/global/arrow/arrow-lft-sharp-end.gif                  (/toolkit/themes/pinstripe/global/arrow/arrow-lft-sharp-end.gif)
-+  skin/classic/global/arrow/arrow-lft-sharp.gif                      (/toolkit/themes/pinstripe/global/arrow/arrow-lft-sharp.gif)
-+  skin/classic/global/arrow/arrow-lft.gif                            (/toolkit/themes/pinstripe/global/arrow/arrow-lft.gif)
-+  skin/classic/global/arrow/arrow-rit-dis.gif                        (/toolkit/themes/pinstripe/global/arrow/arrow-rit-dis.gif)
-+  skin/classic/global/arrow/arrow-rit-hov.gif                        (/toolkit/themes/pinstripe/global/arrow/arrow-rit-hov.gif)
-+  skin/classic/global/arrow/arrow-rit-sharp-end.gif                  (/toolkit/themes/pinstripe/global/arrow/arrow-rit-sharp-end.gif)
-+  skin/classic/global/arrow/arrow-rit-sharp.gif                      (/toolkit/themes/pinstripe/global/arrow/arrow-rit-sharp.gif)
-+  skin/classic/global/arrow/arrow-rit.gif                            (/toolkit/themes/pinstripe/global/arrow/arrow-rit.gif)
-+  skin/classic/global/arrow/arrow-up-dis.gif                         (/toolkit/themes/pinstripe/global/arrow/arrow-up-dis.gif)
-+  skin/classic/global/arrow/arrow-up-dis.png                         (/toolkit/themes/pinstripe/global/arrow/arrow-up-dis.png)
-+  skin/classic/global/arrow/arrow-up-hov.gif                         (/toolkit/themes/pinstripe/global/arrow/arrow-up-hov.gif)  
-+  skin/classic/global/arrow/arrow-up-sharp.gif                       (/toolkit/themes/pinstripe/global/arrow/arrow-up-sharp.gif)
-+  skin/classic/global/arrow/arrow-up.gif                             (/toolkit/themes/pinstripe/global/arrow/arrow-up.gif)
-+  skin/classic/global/arrow/arrow-up.png                             (/toolkit/themes/pinstripe/global/arrow/arrow-up.png)
-+  skin/classic/global/console/console-toolbar.png                    (/toolkit/themes/pinstripe/global/console/console-toolbar.png)
-+  skin/classic/global/console/console-bullets.png                    (/toolkit/themes/pinstripe/global/console/console-bullets.png)
-+  skin/classic/global/console/console-error-caret.gif                (/toolkit/themes/pinstripe/global/console/console-error-caret.gif)
-+  skin/classic/global/console/console-error-dash.gif                 (/toolkit/themes/pinstripe/global/console/console-error-dash.gif)
-+  skin/classic/global/console/console.css                            (/toolkit/themes/pinstripe/global/console/console.css)
-+  skin/classic/global/dirListing/dirListing.css                      (/toolkit/themes/pinstripe/global/dirListing/dirListing.css)
-+  skin/classic/global/dirListing/folder.png                          (/toolkit/themes/pinstripe/global/dirListing/folder.png)
-+  skin/classic/global/dirListing/local.png                           (/toolkit/themes/pinstripe/global/dirListing/local.png)
-+  skin/classic/global/dirListing/remote.png                          (/toolkit/themes/pinstripe/global/dirListing/remote.png)
-+  skin/classic/global/dirListing/up.png                              (/toolkit/themes/pinstripe/global/dirListing/up.png)
-+  skin/classic/global/icons/alltabs.png                              (/toolkit/themes/pinstripe/global/icons/alltabs.png)
-+  skin/classic/global/icons/alert-error.gif                          (/toolkit/themes/pinstripe/global/icons/alert-error.gif)
-+  skin/classic/global/icons/alert-message.gif                        (/toolkit/themes/pinstripe/global/icons/alert-message.gif)
-+  skin/classic/global/icons/alert-question.gif                       (/toolkit/themes/pinstripe/global/icons/alert-question.gif)
-+  skin/classic/global/icons/autocomplete-dropmarker.png              (/toolkit/themes/pinstripe/global/icons/autocomplete-dropmarker.png)
-+  skin/classic/global/icons/autoscroll.png                           (/toolkit/themes/pinstripe/global/icons/autoscroll.png)
-+  skin/classic/global/icons/button-gradient.png                      (/toolkit/themes/pinstripe/global/icons/button-gradient.png)
-+  skin/classic/global/icons/button-gradient-active.png               (/toolkit/themes/pinstripe/global/icons/button-gradient-active.png)
-+  skin/classic/global/icons/blacklist_favicon.png                    (/toolkit/themes/pinstripe/global/icons/blacklist_favicon.png)
-+  skin/classic/global/icons/blacklist_large.png                      (/toolkit/themes/pinstripe/global/icons/blacklist_large.png)
-+  skin/classic/global/icons/blacklist_64.png                         (/toolkit/themes/pinstripe/global/icons/blacklist_64.png)
-+  skin/classic/global/icons/chevron.png                              (/toolkit/themes/pinstripe/global/icons/chevron.png)
-+  skin/classic/global/icons/close.gif                                (/toolkit/themes/pinstripe/global/icons/close.gif)
-+  skin/classic/global/icons/checkbox.png                             (/toolkit/themes/pinstripe/global/icons/checkbox.png)
-+  skin/classic/global/icons/closetab-active.png                      (/toolkit/themes/pinstripe/global/icons/closetab-active.png)
-+  skin/classic/global/icons/closetab-hover.png                       (/toolkit/themes/pinstripe/global/icons/closetab-hover.png)
-+  skin/classic/global/icons/closetab.png                             (/toolkit/themes/pinstripe/global/icons/closetab.png)
-+  skin/classic/global/icons/find.png                                 (/toolkit/themes/pinstripe/global/icons/find.png)
-+  skin/classic/global/icons/find-bar-background.png                  (/toolkit/themes/pinstripe/global/icons/find-bar-background.png)
-+  skin/classic/global/icons/find-bar-flash.png                       (/toolkit/themes/pinstripe/global/icons/find-bar-flash.png)
-+  skin/classic/global/icons/find-bar-notfound.png                    (/toolkit/themes/pinstripe/global/icons/find-bar-notfound.png)
-+  skin/classic/global/icons/grip-vrt.gif                             (/toolkit/themes/pinstripe/global/icons/grip-vrt.gif)
-+  skin/classic/global/icons/information-16.png                       (/toolkit/themes/pinstripe/global/icons/information-16.png)
-+  skin/classic/global/icons/information-24.png                       (/toolkit/themes/pinstripe/global/icons/information-24.png)
-+  skin/classic/global/icons/information-32.png                       (/toolkit/themes/pinstripe/global/icons/information-32.png)
-+  skin/classic/global/icons/information-64.png                       (/toolkit/themes/pinstripe/global/icons/information-64.png)
-+  skin/classic/global/icons/information-large.png                    (/toolkit/themes/pinstripe/global/icons/information-large.png)
-+  skin/classic/global/icons/loading_16_grey.gif                      (/toolkit/themes/pinstripe/global/icons/loading_16_grey.gif)
-+  skin/classic/global/icons/loading_16.png                           (/toolkit/themes/pinstripe/global/icons/loading_16.png)
-+  skin/classic/global/icons/menulist-dropmarker.png                  (/toolkit/themes/pinstripe/global/icons/menulist-dropmarker.png)
-+  skin/classic/global/icons/menuflashblue.gif                        (/toolkit/themes/pinstripe/global/icons/menuflashblue.gif)
-+  skin/classic/global/icons/menuselected.png                         (/toolkit/themes/pinstripe/global/icons/menuselected.png)
-+  skin/classic/global/icons/minimize.gif                             (/toolkit/themes/pinstripe/global/icons/minimize.gif)
-+  skin/classic/global/icons/notloading_16.png                        (/toolkit/themes/pinstripe/global/icons/notloading_16.png)
-+  skin/classic/global/icons/notfound.png                             (/toolkit/themes/pinstripe/global/icons/notfound.png)
-+  skin/classic/global/icons/popup-icon-spacer.png                    (/toolkit/themes/pinstripe/global/icons/popup-icon-spacer.png)
-+  skin/classic/global/icons/popup-overlay.png                        (/toolkit/themes/pinstripe/global/icons/popup-overlay.png)
-+  skin/classic/global/icons/question-mark.png                        (/toolkit/themes/pinstripe/global/icons/question-mark.png)
-+  skin/classic/global/icons/restore.gif                              (/toolkit/themes/pinstripe/global/icons/restore.gif)
-+  skin/classic/global/icons/search-textbox.png                       (/toolkit/themes/pinstripe/global/icons/search-textbox.png)
-+  skin/classic/global/icons/small-document.png                       (/toolkit/themes/pinstripe/global/icons/small-document.png)
-+  skin/classic/global/icons/small-globe-sunken-grey.png              (/toolkit/themes/pinstripe/global/icons/small-globe-sunken-grey.png)
-+  skin/classic/global/icons/small-globe-sunken.png                   (/toolkit/themes/pinstripe/global/icons/small-globe-sunken.png)
-+  skin/classic/global/icons/white-gray-gradient.gif                  (/toolkit/themes/pinstripe/global/icons/white-gray-gradient.gif)
-+  skin/classic/global/icons/white-gray-gradient-active.gif           (/toolkit/themes/pinstripe/global/icons/white-gray-gradient-active.gif)
-+  skin/classic/global/icons/warning-16.png                           (/toolkit/themes/pinstripe/global/icons/warning-16.png)
-+  skin/classic/global/icons/warning-24.png                           (/toolkit/themes/pinstripe/global/icons/warning-24.png)
-+  skin/classic/global/icons/warning-32.png                           (/toolkit/themes/pinstripe/global/icons/warning-32.png)
-+  skin/classic/global/icons/warning-64.png                           (/toolkit/themes/pinstripe/global/icons/warning-64.png)
-+  skin/classic/global/icons/warning-large.png                        (/toolkit/themes/pinstripe/global/icons/warning-large.png)
-+  skin/classic/global/icons/error-16.png                             (/toolkit/themes/pinstripe/global/icons/error-16.png)
-+  skin/classic/global/icons/error-24.png                             (/toolkit/themes/pinstripe/global/icons/error-24.png)
-+  skin/classic/global/icons/error-64.png                             (/toolkit/themes/pinstripe/global/icons/error-64.png)
-+  skin/classic/global/icons/error-large.png                          (/toolkit/themes/pinstripe/global/icons/error-large.png)
-+  skin/classic/global/icons/Error.png                                (/toolkit/themes/pinstripe/global/icons/Error.png)
-+  skin/classic/global/icons/thumb.png                                (/toolkit/themes/pinstripe/global/icons/thumb.png)
-+  skin/classic/global/icons/highlight-active-leftcap.png             (/toolkit/themes/pinstripe/global/icons/highlight-active-leftcap.png)
-+  skin/classic/global/icons/highlight-active-right.png               (/toolkit/themes/pinstripe/global/icons/highlight-active-right.png)
-+  skin/classic/global/icons/question-16.png                          (/toolkit/themes/pinstripe/global/icons/question-16.png)
-+  skin/classic/global/icons/question-24.png                          (/toolkit/themes/pinstripe/global/icons/question-24.png)
-+  skin/classic/global/icons/question-32.png                          (/toolkit/themes/pinstripe/global/icons/question-32.png)
-+  skin/classic/global/icons/question-64.png                          (/toolkit/themes/pinstripe/global/icons/question-64.png)
-+  skin/classic/global/icons/question-large.png                       (/toolkit/themes/pinstripe/global/icons/question-large.png)
-+  skin/classic/global/icons/round-button-active-dropmarker.png       (/toolkit/themes/pinstripe/global/icons/round-button-active-dropmarker.png)
-+  skin/classic/global/icons/round-button-active-left.png             (/toolkit/themes/pinstripe/global/icons/round-button-active-left.png)
-+  skin/classic/global/icons/round-button-active-leftcap.png          (/toolkit/themes/pinstripe/global/icons/round-button-active-leftcap.png)
-+  skin/classic/global/icons/round-button-active-middle.png           (/toolkit/themes/pinstripe/global/icons/round-button-active-middle.png)
-+  skin/classic/global/icons/round-button-active-right.png            (/toolkit/themes/pinstripe/global/icons/round-button-active-right.png)
-+  skin/classic/global/icons/round-button-dropmarker.png              (/toolkit/themes/pinstripe/global/icons/round-button-dropmarker.png)
-+  skin/classic/global/icons/round-button-left.png                    (/toolkit/themes/pinstripe/global/icons/round-button-left.png)
-+  skin/classic/global/icons/round-button-leftcap.png                 (/toolkit/themes/pinstripe/global/icons/round-button-leftcap.png)
-+  skin/classic/global/icons/round-button-middle.png                  (/toolkit/themes/pinstripe/global/icons/round-button-middle.png)
-+  skin/classic/global/icons/round-button-right.png                   (/toolkit/themes/pinstripe/global/icons/round-button-right.png)
-+  skin/classic/global/icons/sslWarning.png                           (/toolkit/themes/pinstripe/global/icons/sslWarning.png)
-+  skin/classic/global/icons/white-checkbox-active.png                (/toolkit/themes/pinstripe/global/icons/white-checkbox-active.png)
-+  skin/classic/global/icons/white-checkbox-checked.png               (/toolkit/themes/pinstripe/global/icons/white-checkbox-checked.png)
-+  skin/classic/global/icons/white-checkbox.png                       (/toolkit/themes/pinstripe/global/icons/white-checkbox.png)
-+  skin/classic/global/notification/critical-bar-background.png       (/toolkit/themes/pinstripe/global/notification/critical-bar-background.png)
-+  skin/classic/global/notification/info-bar-background.png           (/toolkit/themes/pinstripe/global/notification/info-bar-background.png)
-+  skin/classic/global/notification/warning-bar-background.png        (/toolkit/themes/pinstripe/global/notification/warning-bar-background.png)
-+  skin/classic/global/menu/menu-arrow-dis.gif                        (/toolkit/themes/pinstripe/global/menu/menu-arrow-dis.gif)
-+  skin/classic/global/menu/menu-arrow-hov.gif                        (/toolkit/themes/pinstripe/global/menu/menu-arrow-hov.gif)
-+  skin/classic/global/menu/menu-arrow.gif                            (/toolkit/themes/pinstripe/global/menu/menu-arrow.gif)
-+  skin/classic/global/menu/menu-arrow-dis-rtl.gif                    (/toolkit/themes/pinstripe/global/menu/menu-arrow-dis-rtl.gif)
-+  skin/classic/global/menu/menu-arrow-hov-rtl.gif                    (/toolkit/themes/pinstripe/global/menu/menu-arrow-hov-rtl.gif)
-+  skin/classic/global/menu/menu-arrow-rtl.gif                        (/toolkit/themes/pinstripe/global/menu/menu-arrow-rtl.gif)
-+  skin/classic/global/menu/menu-check-dis.gif                        (/toolkit/themes/pinstripe/global/menu/menu-check-dis.gif)
-+  skin/classic/global/menu/menu-check-dis.png                        (/toolkit/themes/pinstripe/global/menu/menu-check-dis.png)
-+  skin/classic/global/menu/menu-check-hov.gif                        (/toolkit/themes/pinstripe/global/menu/menu-check-hov.gif)
-+  skin/classic/global/menu/menu-check-hov.png                        (/toolkit/themes/pinstripe/global/menu/menu-check-hov.png)
-+  skin/classic/global/menu/menu-check.gif                            (/toolkit/themes/pinstripe/global/menu/menu-check.gif)
-+  skin/classic/global/menu/menu-check.png                            (/toolkit/themes/pinstripe/global/menu/menu-check.png)
-+  skin/classic/global/menu/menu-radio-hov.gif                        (/toolkit/themes/pinstripe/global/menu/menu-radio-hov.gif)
-+  skin/classic/global/menu/menu-radio.gif                            (/toolkit/themes/pinstripe/global/menu/menu-radio.gif)
-+  skin/classic/global/menu/menu-separator.png                        (/toolkit/themes/pinstripe/global/menu/menu-separator.png)
-+  skin/classic/global/menulist/menulist-arrow-act.gif                (/toolkit/themes/pinstripe/global/menulist/menulist-arrow-act.gif)
-+  skin/classic/global/menulist/menulist-arrow-dis.gif                (/toolkit/themes/pinstripe/global/menulist/menulist-arrow-dis.gif)
-+  skin/classic/global/menulist/menulist-arrow.gif                    (/toolkit/themes/pinstripe/global/menulist/menulist-arrow.gif)
-+  skin/classic/global/scale/scale-tray-horiz.gif                     (/toolkit/themes/pinstripe/global/scale/scale-tray-horiz.gif)
-+  skin/classic/global/scale/scale-tray-vert.gif                      (/toolkit/themes/pinstripe/global/scale/scale-tray-vert.gif)
-+  skin/classic/global/scrollbox/autorepeat-arrow-dn.gif              (/toolkit/themes/pinstripe/global/scrollbox/autorepeat-arrow-dn.gif)
-+  skin/classic/global/scrollbox/autorepeat-arrow-dn-dis.gif          (/toolkit/themes/pinstripe/global/scrollbox/autorepeat-arrow-dn-dis.gif)
-+  skin/classic/global/scrollbox/autorepeat-arrow-up.gif              (/toolkit/themes/pinstripe/global/scrollbox/autorepeat-arrow-up.gif)
-+  skin/classic/global/scrollbox/autorepeat-arrow-up-dis.gif          (/toolkit/themes/pinstripe/global/scrollbox/autorepeat-arrow-up-dis.gif)
-+  skin/classic/global/splitter/dimple.png                            (/toolkit/themes/pinstripe/global/splitter/dimple.png)
-+  skin/classic/global/splitter/grip-hrz-after.gif                    (/toolkit/themes/pinstripe/global/splitter/grip-hrz-after.gif)
-+  skin/classic/global/splitter/grip-hrz-before.gif                   (/toolkit/themes/pinstripe/global/splitter/grip-hrz-before.gif)
-+  skin/classic/global/splitter/grip-vrt-after.gif                    (/toolkit/themes/pinstripe/global/splitter/grip-vrt-after.gif)
-+  skin/classic/global/splitter/grip-vrt-before.gif                   (/toolkit/themes/pinstripe/global/splitter/grip-vrt-before.gif)
-+  skin/classic/global/toolbar/Lighten.png                            (/toolkit/themes/pinstripe/global/toolbar/Lighten.png)
-+  skin/classic/global/toolbar/dropmark-nav.png                       (/toolkit/themes/pinstripe/global/toolbar/dropmark-nav.png)
-+  skin/classic/global/toolbar/dropmark-nav-small.png                 (/toolkit/themes/pinstripe/global/toolbar/dropmark-nav-small.png)
-+  skin/classic/global/toolbar/spring.gif                             (/toolkit/themes/pinstripe/global/toolbar/spring.gif)
-+  skin/classic/global/toolbar/toolbar-background.gif                 (/toolkit/themes/pinstripe/global/toolbar/toolbar-background.gif)
-+  skin/classic/global/toolbar/toolbar-background-inactive.png        (/toolkit/themes/pinstripe/global/toolbar/toolbar-background-inactive.png)
-+  skin/classic/global/toolbar/toolbar-background-tall.png            (/toolkit/themes/pinstripe/global/toolbar/toolbar-background-tall.png)
-+  skin/classic/global/toolbar/toolbar-background-tall-inactive.png   (/toolkit/themes/pinstripe/global/toolbar/toolbar-background-tall-inactive.png)
-+  skin/classic/global/toolbar/toolbar-pinstripe-overlay.png          (/toolkit/themes/pinstripe/global/toolbar/toolbar-pinstripe-overlay.png)
-+  skin/classic/global/toolbar/toolbar-separator.png                  (/toolkit/themes/pinstripe/global/toolbar/toolbar-separator.png)
-+  skin/classic/global/toolbar/toolbarbutton-customhover-left.png     (/toolkit/themes/pinstripe/global/toolbar/toolbarbutton-customhover-left.png)
-+  skin/classic/global/toolbar/toolbarbutton-customhover-mid.png      (/toolkit/themes/pinstripe/global/toolbar/toolbarbutton-customhover-mid.png)
-+  skin/classic/global/toolbar/toolbarbutton-customhover-right.png    (/toolkit/themes/pinstripe/global/toolbar/toolbarbutton-customhover-right.png)
-+  skin/classic/global/tree/columnpicker.gif                          (/toolkit/themes/pinstripe/global/tree/columnpicker.gif)
-+  skin/classic/global/tree/folder-dis.png                            (/toolkit/themes/pinstripe/global/tree/folder-dis.png)
-+  skin/classic/global/tree/folder.png                                (/toolkit/themes/pinstripe/global/tree/folder.png)
-+  skin/classic/global/tree/item.png                                  (/toolkit/themes/pinstripe/global/tree/item.png)
-+  skin/classic/global/tree/item-grayscale.png                        (/toolkit/themes/pinstripe/global/tree/item-grayscale.png)
-+  skin/classic/global/tree/sort-asc.gif                              (/toolkit/themes/pinstripe/global/tree/sort-asc.gif)
-+  skin/classic/global/tree/sort-dsc.gif                              (/toolkit/themes/pinstripe/global/tree/sort-dsc.gif)
+# These really should be override directives instead of replacements, but we don't have camino.jar,
+# and registering new chrome packages for each jar in order to have the override directives use the
+# new chrome packages seems silly when replacing things is so much simpler. 
+
+toolkit.jar:
+# Replace the generic Toolkit license and crashes.xhtml with ones appropriate for Camino
+*  content/global/license.html                             (/toolkit/content/license.html)
++  content/global/crashes.xhtml                            (../embed-replacements/content/global/crashes.xhtml)
+# Un-break about:config
+*+ content/global/config.js                                (../embed-replacements/content/global/config.js)
+# Uh, yeah.  On 1.9.3, this can move to classic.jar, though; see bug 520364.
++  content/global/aboutMemory.css                          (../embed-replacements/skin/classic/global/aboutMemory.css)
+
+classic.jar:
+# Override Firefox-styled theme files with those appropriate for Camino
++  skin/classic/global/about.css                           (../embed-replacements/skin/classic/global/about.css)
++  skin/classic/global/config.css                          (../embed-replacements/skin/classic/global/config.css)
++  skin/classic/global/netError.css                        (../embed-replacements/skin/classic/global/netError.css)
++  skin/classic/global/dirListing/dirListing.css           (../embed-replacements/skin/classic/global/dirListing/dirListing.css)
++  skin/classic/global/dirListing/folder.png               (../embed-replacements/skin/classic/global/dirListing/folder.png)
++  skin/classic/global/dirListing/local.png                (../embed-replacements/skin/classic/global/dirListing/folder.png)
++  skin/classic/global/dirListing/remote.png               (../embed-replacements/skin/classic/global/dirListing/remote.png)
++  skin/classic/global/dirListing/up.png                   (../embed-replacements/skin/classic/global/dirListing/up.png)
++  skin/classic/global/icons/blacklist.png                 (../embed-replacements/skin/classic/global/icons/blacklist.png)
++  skin/classic/global/icons/warning.png                   (../embed-replacements/skin/classic/global/icons/warning.png)
+
+en-US.jar:
+# Replace generic files with ones appropriate for Camino
++ locale/en-US/global/config.dtd                           (../embed-replacements/locale/en-US/global/config.dtd)
++ locale/en-US/global/netError.dtd                         (../embed-replacements/locale/en-US/global/netError.dtd)
+# Stub until we decide what to do about FAYT
+#% locale communicator en-US %locale/communicator/
+#+  locale/en-US/communicator/typeaheadfind.properties     (../embed-replacements/locale/en-US/communicator/typeaheadfind.properties)
Index: pinstripe/global/contents.rdf
===================================================================
RCS file: pinstripe/global/contents.rdf
diff -N pinstripe/global/contents.rdf
--- pinstripe/global/contents.rdf	9 Mar 2009 23:11:24 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,30 +0,0 @@
-
-
-
-
-  
-  
-    
-  
-
-  
-  
-    
-      
-        
-      
-    
-  
-
-  
-  
-
Index: embed-replacements/content/global/config.js
===================================================================
RCS file: embed-replacements/content/global/config.js
diff -N embed-replacements/content/global/config.js
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ embed-replacements/content/global/config.js	23 Feb 2010 03:08:28 -0000
@@ -0,0 +1,608 @@
+# -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
+# ***** BEGIN LICENSE BLOCK *****
+# Version: MPL 1.1/GPL 2.0/LGPL 2.1
+#
+# The contents of this file are subject to the Mozilla Public License Version
+# 1.1 (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+# http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# The Original Code is mozilla.org configuration viewer.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications Corporation.
+# Portions created by the Initial Developer are Copyright (C) 2002
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+#   Chip Clark 
+#   Seth Spitzer 
+#   Neil Rashbrook 
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either the GNU General Public License Version 2 or later (the "GPL"), or
+# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+# in which case the provisions of the GPL or the LGPL are applicable instead
+# of those above. If you wish to allow use of your version of this file only
+# under the terms of either the GPL or the LGPL, and not to allow others to
+# use your version of this file under the terms of the MPL, indicate your
+# decision by deleting the provisions above and replace them with the notice
+# and other provisions required by the GPL or the LGPL. If you do not delete
+# the provisions above, a recipient may use your version of this file under
+# the terms of any one of the MPL, the GPL or the LGPL.
+#
+# ***** END LICENSE BLOCK *****
+
+const nsIPrefLocalizedString = Components.interfaces.nsIPrefLocalizedString;
+const nsISupportsString = Components.interfaces.nsISupportsString;
+const nsIPromptService = Components.interfaces.nsIPromptService;
+const nsIPrefService = Components.interfaces.nsIPrefService;
+const nsIPrefBranch = Components.interfaces.nsIPrefBranch;
+const nsIClipboardHelper = Components.interfaces.nsIClipboardHelper;
+const nsIAtomService = Components.interfaces.nsIAtomService;
+
+const nsSupportsString_CONTRACTID = "@mozilla.org/supports-string;1";
+const nsPrompt_CONTRACTID = "@mozilla.org/embedcomp/prompt-service;1";
+const nsPrefService_CONTRACTID = "@mozilla.org/preferences-service;1";
+const nsClipboardHelper_CONTRACTID = "@mozilla.org/widget/clipboardhelper;1";
+const nsAtomService_CONTRACTID = "@mozilla.org/atom-service;1";
+
+const gPromptService = Components.classes[nsPrompt_CONTRACTID].getService(nsIPromptService);
+const gPrefService = Components.classes[nsPrefService_CONTRACTID].getService(nsIPrefService);
+const gPrefBranch = gPrefService.getBranch(null).QueryInterface(Components.interfaces.nsIPrefBranch2);
+const gClipboardHelper = Components.classes[nsClipboardHelper_CONTRACTID].getService(nsIClipboardHelper);
+const gAtomService = Components.classes[nsAtomService_CONTRACTID].getService(nsIAtomService);
+
+var gLockAtoms = [gAtomService.getAtom("default"), gAtomService.getAtom("user"), gAtomService.getAtom("locked")];
+// we get these from a string bundle
+var gLockStrs = [];
+var gTypeStrs = [];
+
+const PREF_IS_DEFAULT_VALUE = 0;
+const PREF_IS_USER_SET = 1;
+const PREF_IS_LOCKED = 2;
+
+var gPrefHash = {};
+var gPrefArray = [];
+var gPrefView = gPrefArray; // share the JS array
+var gFastIndex = 0;
+var gSortedColumn = "prefCol";
+var gSortFunction = null;
+var gSortDirection = 1; // 1 is ascending; -1 is descending
+var gConfigBundle = null;
+
+var view = {
+  get rowCount() { return gPrefView.length; },
+  getCellText : function(index, col) {
+    if (!(index in gPrefView))
+      return "";
+    
+    var value = gPrefView[index][col.id];
+
+    switch (col.id) {
+      case "lockCol":           
+        return gLockStrs[value];
+      case "typeCol":
+        return gTypeStrs[value];
+      default:
+        return value;
+    }
+  },
+  getRowProperties : function(index, prop) {},
+  getCellProperties : function(index, col, prop) {
+    if (index in gPrefView)
+      prop.AppendElement(gLockAtoms[gPrefView[index].lockCol]);
+  },
+  getColumnProperties : function(col, prop) {},
+  treebox : null,
+  selection : null,
+  isContainer : function(index) { return false; },
+  isContainerOpen : function(index) { return false; },
+  isContainerEmpty : function(index) { return false; },
+  isSorted : function() { return true; },
+  canDrop : function(index, orientation) { return false; },
+  drop : function(row, orientation) {},
+  setTree : function(out) { this.treebox = out; },
+  getParentIndex: function(rowIndex) { return -1; },
+  hasNextSibling: function(rowIndex, afterIndex) { return false; },
+  getLevel: function(index) { return 1; },
+  getImageSrc: function(row, col) { return ""; },
+  toggleOpenState : function(index) {},
+  cycleHeader: function(col) {
+    var index = this.selection.currentIndex;
+    if (col.id == gSortedColumn)
+      gSortDirection = -gSortDirection;
+    if (col.id == gSortedColumn && gFastIndex == gPrefArray.length) {
+      gPrefArray.reverse();
+      if (gPrefView != gPrefArray)
+        gPrefView.reverse();
+      if (index >= 0)
+        index = gPrefView.length - index - 1;
+    }
+    else {
+      var pref = null;
+      if (index >= 0) {
+        if (gPrefArray != gPrefView)
+          index = gPrefView.length - index - 1;
+        else
+          pref = gPrefArray[index];
+      }
+      var old = document.getElementById(gSortedColumn);
+      old.setAttribute("sortDirection", "");
+      gPrefArray.sort(gSortFunction = gSortFunctions[col.id]);
+      if (gPrefView != gPrefArray) {
+        if (col.id == gSortedColumn)
+          gPrefView.reverse();
+        else
+          gPrefView.sort(gSortFunction);
+      }
+      gSortedColumn = col.id;
+      if (pref)
+        index = getIndexOfPref(pref);
+    }
+    col.element.setAttribute("sortDirection", gSortDirection > 0 ? "ascending" : "descending");
+    this.treebox.invalidate();
+    if (index >= 0) {
+      this.selection.select(index);
+      this.treebox.ensureRowIsVisible(index);
+    }
+    gFastIndex = gPrefArray.length;
+  },
+  selectionChanged : function() {},
+  cycleCell: function(row, col) {},
+  isEditable: function(row, col) {return false; },
+  isSelectable: function(row, col) {return false; },
+  setCellValue: function(row, col, value) {},
+  setCellText: function(row, col, value) {},
+  performAction: function(action) {},
+  performActionOnRow: function(action, row) {},
+  performActionOnCell: function(action, row, col) {},
+  isSeparator: function(index) {return false; }
+};
+
+// find the index in gPrefView of a pref object
+// or -1 if it does not exist in the filtered view
+function getViewIndexOfPref(pref)
+{
+  var low = -1, high = gPrefView.length;
+  var index = (low + high) >> 1;
+  while (index > low) {
+    var mid = gPrefView[index];
+    if (mid == pref)
+      return index;
+    if (gSortFunction(mid, pref) < 0)
+      low = index;
+    else
+      high = index;
+    index = (low + high) >> 1;
+  }
+  return -1;
+}
+
+// find the index in gPrefArray of a pref object
+// either one that was looked up in gPrefHash
+// or in case it was moved after sorting
+function getIndexOfPref(pref)
+{
+  var low = -1, high = gFastIndex;
+  var index = (low + high) >> 1;
+  while (index > low) {
+    var mid = gPrefArray[index];
+    if (mid == pref)
+      return index;
+    if (gSortFunction(mid, pref) < 0)
+      low = index;
+    else
+      high = index;
+    index = (low + high) >> 1;
+  }
+
+  for (index = gFastIndex; index < gPrefArray.length; ++index)
+    if (gPrefArray[index] == pref)
+      break;
+  return index;
+}
+
+function getNearestIndexOfPref(pref)
+{
+  var low = -1, high = gFastIndex;
+  var index = (low + high) >> 1;
+  while (index > low) {
+    if (gSortFunction(gPrefArray[index], pref) < 0)
+      low = index;
+    else
+      high = index;
+    index = (low + high) >> 1;
+  }
+  return high;
+}
+
+var gPrefListener =
+{
+  observe: function(subject, topic, prefName)
+  {
+    if (topic != "nsPref:changed")
+      return;
+
+    if (/^capability\./.test(prefName)) // avoid displaying "private" preferences
+      return;
+
+    var index = gPrefArray.length;
+    if (prefName in gPrefHash) {
+      index = getViewIndexOfPref(gPrefHash[prefName]);
+      fetchPref(prefName, getIndexOfPref(gPrefHash[prefName]));
+      if (index >= 0) {
+        // Might need to update the filtered view
+        gPrefView[index] = gPrefHash[prefName];
+        view.treebox.invalidateRow(index);
+      }
+      if (gSortedColumn == "lockCol" || gSortedColumn == "valueCol")
+        gFastIndex = 1; // TODO: reinsert and invalidate range
+    } else {
+      fetchPref(prefName, index);
+      if (index == gFastIndex) {
+        // Keep the array sorted by reinserting the pref object
+        var pref = gPrefArray.pop();
+        index = getNearestIndexOfPref(pref);
+        gPrefArray.splice(index, 0, pref);
+        gFastIndex = gPrefArray.length;
+      }
+      if (gPrefView == gPrefArray)
+        view.treebox.rowCountChanged(index, 1);
+    }
+  }
+};
+
+function prefObject(prefName, prefIndex)
+{
+  this.prefCol = prefName;
+}
+
+prefObject.prototype =
+{
+  lockCol: PREF_IS_DEFAULT_VALUE,
+  typeCol: nsIPrefBranch.PREF_STRING,
+  valueCol: ""
+};
+
+function fetchPref(prefName, prefIndex)
+{
+  var pref = new prefObject(prefName);
+
+  gPrefHash[prefName] = pref;
+  gPrefArray[prefIndex] = pref;
+
+  if (gPrefBranch.prefIsLocked(prefName))
+    pref.lockCol = PREF_IS_LOCKED;
+  else if (gPrefBranch.prefHasUserValue(prefName))
+    pref.lockCol = PREF_IS_USER_SET;
+
+  try {
+    switch (gPrefBranch.getPrefType(prefName)) {
+      case gPrefBranch.PREF_BOOL:
+        pref.typeCol = gPrefBranch.PREF_BOOL;
+        // convert to a string
+        pref.valueCol = gPrefBranch.getBoolPref(prefName).toString();
+        break;
+      case gPrefBranch.PREF_INT:
+        pref.typeCol = gPrefBranch.PREF_INT;
+        // convert to a string
+        pref.valueCol = gPrefBranch.getIntPref(prefName).toString();
+        break;
+      default:
+      case gPrefBranch.PREF_STRING:
+        pref.valueCol = gPrefBranch.getComplexValue(prefName, nsISupportsString).data;
+        // Try in case it's a localized string (will throw an exception if not)
+        if (pref.lockCol == PREF_IS_DEFAULT_VALUE &&
+            /^chrome:\/\/.+\/locale\/.+\.properties/.test(pref.valueCol))
+          pref.valueCol = gPrefBranch.getComplexValue(prefName, nsIPrefLocalizedString).data;
+        break;
+    }
+  } catch (e) {
+    // Also catch obscure cases in which you can't tell in advance
+    // that the pref exists but has no user or default value...
+  }
+}
+
+function onConfigLoad()
+{
+  // Load strings
+  gConfigBundle = document.getElementById("configBundle");
+
+  gLockStrs[PREF_IS_DEFAULT_VALUE] = gConfigBundle.getString("default");
+  gLockStrs[PREF_IS_USER_SET] = gConfigBundle.getString("user");
+  gLockStrs[PREF_IS_LOCKED] = gConfigBundle.getString("locked");
+
+  gTypeStrs[nsIPrefBranch.PREF_STRING] = gConfigBundle.getString("string");
+  gTypeStrs[nsIPrefBranch.PREF_INT] = gConfigBundle.getString("int");
+  gTypeStrs[nsIPrefBranch.PREF_BOOL] = gConfigBundle.getString("bool");
+
+  var showWarning = gPrefBranch.getBoolPref("general.warnOnAboutConfig");
+
+  if (showWarning)
+    document.getElementById("warningButton").focus();
+  else
+    ShowPrefs();
+}
+
+// Unhide the warning message
+function ShowPrefs()
+{
+  var prefCount = { value: 0 };
+  var prefArray = gPrefBranch.getChildList("", prefCount);
+
+  for (var i = 0; i < prefCount.value; ++i) 
+  {
+    var prefName = prefArray[i];
+    if (/^capability\./.test(prefName)) // avoid displaying "private" preferences
+      continue;
+
+    fetchPref(prefName, gPrefArray.length);
+  }
+
+  var descending = document.getElementsByAttribute("sortDirection", "descending");
+  if (descending.item(0)) {
+    gSortedColumn = descending[0].id;
+    gSortDirection = -1;
+  }
+  else {
+    var ascending = document.getElementsByAttribute("sortDirection", "ascending");
+    if (ascending.item(0))
+      gSortedColumn = ascending[0].id;
+    else
+      document.getElementById(gSortedColumn).setAttribute("sortDirection", "ascending");
+  }
+  gSortFunction = gSortFunctions[gSortedColumn];
+  gPrefArray.sort(gSortFunction);
+  gFastIndex = gPrefArray.length;
+  
+  gPrefBranch.addObserver("", gPrefListener, false);
+
+  var configTree = document.getElementById("configTree");
+  configTree.view = view;
+  configTree.controllers.insertControllerAt(0, configController);
+
+  document.getElementById("configDeck").setAttribute("selectedIndex", 1);
+  document.getElementById("configTreeKeyset").removeAttribute("disabled");
+  if (!document.getElementById("showWarningNextTime").checked)
+    gPrefBranch.setBoolPref("general.warnOnAboutConfig", false);
+
+  var textbox = document.getElementById("textbox");
+  if (textbox.value)
+    // somebody seems to already have tried to apply a filter
+    FilterPrefs();
+  textbox.focus();
+}
+
+function onConfigUnload()
+{
+  if (document.getElementById("configDeck").getAttribute("selectedIndex") == 1) {
+    gPrefBranch.removeObserver("", gPrefListener);
+    var configTree = document.getElementById("configTree");
+    configTree.view = null;
+    configTree.controllers.removeController(configController);
+  }
+}
+
+function FilterPrefs()
+{
+  var substring = document.getElementById("textbox").value;
+  var rex;
+  // Check for "/regex/[i]"
+  if (substring.charAt(0) == '/') {
+    var r = substring.match(/^\/(.*)\/(i?)$/);
+    try {
+      rex = RegExp(r[1], r[2]);
+    }
+    catch (e) {
+      return; // Do nothing on incomplete or bad RegExp
+    }
+  }
+
+  var prefCol = view.selection.currentIndex < 0 ? null : gPrefView[view.selection.currentIndex].prefCol;
+  var oldlen = gPrefView.length;
+  gPrefView = gPrefArray;
+  if (substring) {
+    gPrefView = [];
+    if (!rex)
+      rex = RegExp(substring.replace(/([^* \w])/g, "\\$1").replace(/^\*+/, "")
+                            .replace(/\*+/g, ".*"), "i");
+    for (var i = 0; i < gPrefArray.length; ++i)
+      if (rex.test(gPrefArray[i].prefCol + ";" + gPrefArray[i].valueCol))
+        gPrefView.push(gPrefArray[i]);
+    if (gFastIndex < gPrefArray.length)
+      gPrefView.sort(gSortFunction);
+  }
+  view.treebox.invalidate();
+  view.treebox.rowCountChanged(oldlen, gPrefView.length - oldlen);
+  gotoPref(prefCol);
+}
+
+function prefColSortFunction(x, y)
+{
+  if (x.prefCol > y.prefCol)
+    return gSortDirection;
+  if (x.prefCol < y.prefCol) 
+    return -gSortDirection;
+  return 0;
+}
+
+function lockColSortFunction(x, y)
+{
+  if (x.lockCol != y.lockCol)
+    return gSortDirection * (y.lockCol - x.lockCol);
+  return prefColSortFunction(x, y);
+}
+
+function typeColSortFunction(x, y)
+{
+  if (x.typeCol != y.typeCol) 
+    return gSortDirection * (y.typeCol - x.typeCol);
+  return prefColSortFunction(x, y);
+}
+
+function valueColSortFunction(x, y)
+{
+  if (x.valueCol > y.valueCol)
+    return gSortDirection;
+  if (x.valueCol < y.valueCol) 
+    return -gSortDirection;
+  return prefColSortFunction(x, y);
+}
+
+const gSortFunctions =
+{
+  prefCol: prefColSortFunction, 
+  lockCol: lockColSortFunction, 
+  typeCol: typeColSortFunction, 
+  valueCol: valueColSortFunction
+};
+
+const configController = {
+  supportsCommand: function supportsCommand(command) {
+    return command == "cmd_copy";
+  },
+  isCommandEnabled: function isCommandEnabled(command) {
+    return view.selection && view.selection.currentIndex >= 0;
+  },
+  doCommand: function doCommand(command) {
+    copyPref();
+  },
+  onEvent: function onEvent(event) {
+  }
+}
+
+function updateContextMenu()
+{
+  var lockCol = PREF_IS_LOCKED;
+  var typeCol = nsIPrefBranch.PREF_STRING;
+  var valueCol = "";
+  var copyDisabled = true;
+  var prefSelected = view.selection.currentIndex >= 0;
+
+  if (prefSelected) {
+    var prefRow = gPrefView[view.selection.currentIndex];
+    lockCol = prefRow.lockCol;
+    typeCol = prefRow.typeCol;
+    valueCol = prefRow.valueCol;
+    copyDisabled = false;
+  }
+
+  var copyPref = document.getElementById("copyPref");
+  copyPref.setAttribute("disabled", copyDisabled);
+
+  var copyName = document.getElementById("copyName");
+  copyName.setAttribute("disabled", copyDisabled);
+
+  var copyValue = document.getElementById("copyValue");
+  copyValue.setAttribute("disabled", copyDisabled);
+
+  var resetSelected = document.getElementById("resetSelected");
+  resetSelected.setAttribute("disabled", lockCol != PREF_IS_USER_SET);
+
+  var canToggle = typeCol == nsIPrefBranch.PREF_BOOL && valueCol != "";
+  // indicates that a pref is locked or no pref is selected at all
+  var isLocked = lockCol == PREF_IS_LOCKED;
+
+  var modifySelected = document.getElementById("modifySelected");
+  modifySelected.setAttribute("disabled", isLocked);
+  modifySelected.hidden = canToggle;
+
+  var toggleSelected = document.getElementById("toggleSelected");
+  toggleSelected.setAttribute("disabled", isLocked);
+  toggleSelected.hidden = !canToggle;
+}
+
+function copyPref()
+{
+  var pref = gPrefView[view.selection.currentIndex];
+  gClipboardHelper.copyString(pref.prefCol + ';' + pref.valueCol);
+}
+
+function copyName()
+{
+  gClipboardHelper.copyString(gPrefView[view.selection.currentIndex].prefCol);
+}
+
+function copyValue()
+{
+  gClipboardHelper.copyString(gPrefView[view.selection.currentIndex].valueCol);
+}
+
+function ModifySelected()
+{
+  if (view.selection.currentIndex >= 0)
+    ModifyPref(gPrefView[view.selection.currentIndex]);
+}
+
+function ResetSelected()
+{
+  var entry = gPrefView[view.selection.currentIndex];
+  gPrefBranch.clearUserPref(entry.prefCol);
+}
+
+function NewPref(type)
+{
+  var result = { value: "" };
+  var dummy = { value: 0 };
+  if (gPromptService.prompt(window,
+                            gConfigBundle.getFormattedString("new_title", [gTypeStrs[type]]),
+                            gConfigBundle.getString("new_prompt"),
+                            result,
+                            null,
+                            dummy) && result.value) {
+    var pref;
+    if (result.value in gPrefHash)
+      pref = gPrefHash[result.value];
+    else
+      pref = { prefCol: result.value, lockCol: PREF_IS_DEFAULT_VALUE, typeCol: type, valueCol: "" };
+    if (ModifyPref(pref))
+      setTimeout(gotoPref, 0, result.value);
+  }
+}
+
+function gotoPref(pref)
+{
+  // make sure the pref exists and is displayed in the current view
+  var index = pref in gPrefHash ? getViewIndexOfPref(gPrefHash[pref]) : -1;
+  if (index >= 0) {
+    view.selection.select(index);
+    view.treebox.ensureRowIsVisible(index);
+  } else {
+    view.selection.clearSelection();
+    view.selection.currentIndex = -1;
+  }
+}
+
+function ModifyPref(entry)
+{
+  if (entry.lockCol == PREF_IS_LOCKED)
+    return false;
+  var title = gConfigBundle.getFormattedString("modify_title", [gTypeStrs[entry.typeCol]]);
+  if (entry.typeCol == nsIPrefBranch.PREF_BOOL) {
+    var check = { value: entry.valueCol == "false" };
+    if (!entry.valueCol && !gPromptService.select(window, title, entry.prefCol, 2, [false, true], check))
+      return false;
+    gPrefBranch.setBoolPref(entry.prefCol, check.value);
+  } else {
+    var result = { value: entry.valueCol };
+    var dummy = { value: 0 };
+    if (!gPromptService.prompt(window, title, entry.prefCol, result, null, dummy))
+      return false;
+    if (entry.typeCol == nsIPrefBranch.PREF_INT) {
+      gPrefBranch.setIntPref(entry.prefCol, parseInt(result.value, 10));
+    } else {
+      var supportsString = Components.classes[nsSupportsString_CONTRACTID].createInstance(nsISupportsString);
+      supportsString.data = result.value;
+      gPrefBranch.setComplexValue(entry.prefCol, nsISupportsString, supportsString);
+    }
+  }
+
+  gPrefService.savePrefFile(null);
+  return true;
+}
Index: embed-replacements/locale/en-US/communicator/contents.rdf
===================================================================
RCS file: embed-replacements/locale/en-US/communicator/contents.rdf
diff -N embed-replacements/locale/en-US/communicator/contents.rdf
--- embed-replacements/locale/en-US/communicator/contents.rdf	22 Apr 2008 21:26:38 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,28 +0,0 @@
-
-
-
-  
-  
-    
-  
-
-  
-  
-    
-      
-        
-      
-    
-  
-
-  
-  
-
Index: embed-replacements/locale/en-US/global/config.dtd
===================================================================
RCS file: /cvsroot/mozilla/camino/embed-replacements/locale/en-US/global/config.dtd,v
retrieving revision 1.4
diff -u -8 -r1.4 config.dtd
--- embed-replacements/locale/en-US/global/config.dtd	29 Jan 2008 07:47:31 -0000	1.4
+++ embed-replacements/locale/en-US/global/config.dtd	23 Feb 2010 03:08:28 -0000
@@ -39,19 +39,18 @@
 
 
 
 
 
 
 
 
-
-
-
+
+
 
 
 
 
 
 
 
 
Index: embed-replacements/locale/en-US/global-platform/contents.rdf
===================================================================
RCS file: embed-replacements/locale/en-US/global-platform/contents.rdf
diff -N embed-replacements/locale/en-US/global-platform/contents.rdf
--- embed-replacements/locale/en-US/global-platform/contents.rdf	30 Jul 2009 17:26:11 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,23 +0,0 @@
-
-
-
-  
-  
-    
-  
-
-  
-  
-    
-      
-        
-      
-    
-  
-
-  
-  
-
Index: embed-replacements/locale/en-US/global-platform/intl.properties
===================================================================
RCS file: embed-replacements/locale/en-US/global-platform/intl.properties
diff -N embed-replacements/locale/en-US/global-platform/intl.properties
--- embed-replacements/locale/en-US/global-platform/intl.properties	30 Jul 2009 17:26:10 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,5 +0,0 @@
-# moved from navigator/locale/navigator.properties
-intl.charset.default=ISO-8859-1
-# LOCALIZATION NOTE (intl.ellipsis): Use the unicode ellipsis char, \u2026,
-# or use "..." unless \u2026 doesn't suit traditions in your locale.
-intl.ellipsis=…
Index: resources/application/DistinguishedSchema.tbl
===================================================================
RCS file: resources/application/DistinguishedSchema.tbl
diff -N resources/application/DistinguishedSchema.tbl
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ resources/application/DistinguishedSchema.tbl	23 Feb 2010 03:08:28 -0000
@@ -0,0 +1,14 @@
+Name
+Name.Last
+BillTo.Name
+BillTo.Name.Last
+ShipTo.Name
+ShipTo.Name.Last
+Home.Street.Line1
+BillTo.Street.Line1
+ShipTo.Street.Line1
+Business.Street.Line1
+Home.City
+BillTo.City
+ShipTo.City
+Business.City
Index: resources/application/FieldSchema.tbl
===================================================================
RCS file: resources/application/FieldSchema.tbl
diff -N resources/application/FieldSchema.tbl
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ resources/application/FieldSchema.tbl	23 Feb 2010 03:08:29 -0000
@@ -0,0 +1,2541 @@
+Name
+Name
+
+NamePrefix
+Name.Prefix
+
+NameFirst
+Name.First
+
+NameMiddle
+Name.Middle
+
+NameLast
+Name.Last
+
+NameSuffix
+Name.Suffix
+
+BillToName
+BillTo.Name
+
+BillToNamePrefix
+BillTo.Name.Prefix
+
+BillToNameFirst
+BillTo.Name.First
+
+BillToNameMiddle
+BillTo.Name.Middle
+
+BillToNameLast
+BillTo.Name.Last
+
+BillToNameSuffix
+BillTo.Name.Suffix
+
+ShipToName
+ShipTo.Name
+
+ShipToNamePrefix
+ShipTo.Name.Prefix
+
+ShipToNameFirst
+ShipTo.Name.First
+
+ShipToNameMiddle
+ShipTo.Name.Middle
+
+ShipToNameLast
+ShipTo.Name.Last
+
+ShipToNameSuffix
+ShipTo.Name.Suffix
+
+BusinessCompanyName
+Business.CompanyName
+
+BusinessJobTitle
+Business.JobTitle
+
+BusinessDepartment
+Business.Department
+
+HomeStreetLine1
+Home.Street.Line1
+
+HomeStreetLine2
+Home.Street.Line2
+
+HomeStreetLine3
+Home.Street.Line3
+
+HomeCity
+Home.City
+
+HomeState
+Home.State
+
+HomeProv
+Home.Prov
+
+HomePostalCode
+Home.PostalCode
+
+HomePostalCodePrefix
+Home.PostalCode.Prefix
+
+HomePostalCodeSuffix
+Home.PostalCode.Suffix
+
+HomeCountry
+Home.Country
+
+BillToStreetLine1
+BillTo.Street.Line1
+
+BillToStreetLine2
+BillTo.Street.Line2
+
+BillToStreetLine3
+BillTo.Street.Line3
+
+BillToCity
+BillTo.City
+
+BillToState
+BillTo.State
+
+BillToProv
+BillTo.Prov
+
+BillToPostalCode
+BillTo.PostalCode
+
+BillToPostalCodePrefix
+BillTo.PostalCode.Prefix
+
+BillToPostalCodeSuffix
+BillTo.PostalCode.Suffix
+
+BillToCountry
+BillTo.Country
+
+ShipToStreetLine1
+ShipTo.Street.Line1
+
+ShipToStreetLine2
+ShipTo.Street.Line2
+
+ShipToStreetLine3
+ShipTo.Street.Line3
+
+ShipToCity
+ShipTo.City
+
+ShipToState
+ShipTo.State
+
+ShipToProv
+ShipTo.Prov
+
+ShipToPostalCode
+ShipTo.PostalCode
+
+ShipToPostalCodePrefix
+ShipTo.PostalCode.Prefix
+
+ShipToPostalCodeSuffix
+ShipTo.PostalCode.Suffix
+
+ShipToCountry
+ShipTo.Country
+
+HomePhone
+Home.Phone
+
+HomePhoneLocCode
+Home.Phone.LocCode
+
+HomePhoneNumber
+Home.Phone.Number
+
+HomePhoneNumberPrefix
+Home.Phone.Number.Prefix
+
+HomePhoneNumberSuffix
+Home.Phone.Number.Suffix
+
+HomePhoneExtension
+Home.Phone.Extension
+
+BillToPhone
+BillTo.Phone
+
+BillToPhoneLocCode
+BillTo.Phone.LocCode
+
+BillToPhoneNumber
+BillTo.Phone.Number
+
+BillToPhoneNumberPrefix
+BillTo.Phone.Number.Prefix
+
+BillToPhoneNumberSuffix
+BillTo.Phone.Number.Suffix
+
+BillToPhoneExtension
+BillTo.Phone.Extension
+
+ShipToPhone
+ShipTo.Phone
+
+ShipToPhoneLocCode
+ShipTo.Phone.LocCode
+
+ShipToPhoneNumber
+ShipTo.Phone.Number
+
+ShipToPhoneNumberPrefix
+ShipTo.Phone.Number.Prefix
+
+ShipToPhoneNumberSuffix
+ShipTo.Phone.Number.Suffix
+
+ShipToPhoneExtension
+ShipTo.Phone.Extension
+
+HomeAltPhone
+Home.AltPhone
+
+HomeAltPhoneLocCode
+Home.AltPhone.LocCode
+
+HomeAltPhoneNumber
+Home.AltPhone.Number
+
+HomeAltPhoneNumberPrefix
+Home.AltPhone.Number.Prefix
+
+HomeAltPhoneNumberSuffix
+Home.AltPhone.Number.Suffix
+
+HomeAltPhoneExtension
+Home.AltPhone.Extension
+
+BillToAltPhone
+BillTo.AltPhone
+
+BillToAltPhoneLocCode
+BillTo.AltPhone.LocCode
+
+BillToAltPhoneNumber
+BillTo.AltPhone.Number
+
+BillToAltPhoneNumberPrefix
+BillTo.AltPhone.Number.Prefix
+
+BillToAltPhoneNumberSuffix
+BillTo.AltPhone.Number.Suffix
+
+BillToAltPhoneExtension
+BillTo.AltPhone.Extension
+
+ShipToAltPhone
+ShipTo.AltPhone
+
+ShipToAltPhoneLocCode
+ShipTo.AltPhone.LocCode
+
+ShipToAltPhoneNumber
+ShipTo.AltPhone.Number
+
+ShipToAltPhoneNumberPrefix
+ShipTo.AltPhone.Number.Prefix
+
+ShipToAltPhoneNumberSuffix
+ShipTo.AltPhone.Number.Suffix
+
+ShipToAltPhoneExtension
+ShipTo.AltPhone.Extension
+
+HomeFax
+Home.Fax
+
+HomeFaxLocCode
+Home.Fax.LocCode
+
+HomeFaxNumber
+Home.Fax.Number
+
+HomeFaxNumberPrefix
+Home.Fax.Number.Prefix
+
+HomeFaxNumberSuffix
+Home.Fax.Number.Suffix
+
+BillToFax
+BillTo.Fax
+
+BillToFaxLocCode
+BillTo.Fax.LocCode
+
+BillToFaxNumber
+BillTo.Fax.Number
+
+BillToFaxNumberPrefix
+BillTo.Fax.Number.Prefix
+
+BillToFaxNumberSuffix
+BillTo.Fax.Number.Suffix
+
+ShipToFax
+ShipTo.Fax
+
+ShipToFaxLocCode
+ShipTo.Fax.LocCode
+
+ShipToFaxNumber
+ShipTo.Fax.Number
+
+ShipToFaxNumberPrefix
+ShipTo.Fax.Number.Prefix
+
+ShipToFaxNumberSuffix
+ShipTo.Fax.Number.Suffix
+
+HomeMobile
+Home.Mobile
+
+HomeMobileLocCode
+Home.Mobile.LocCode
+
+HomeMobileNumber
+Home.Mobile.Number
+
+HomeMobileNumberPrefix
+Home.Mobile.Number.Prefix
+
+HomeMobileNumberSuffix
+Home.Mobile.Number.Suffix
+
+BillToMobile
+BillTo.Mobile
+
+BillToMobileLocCode
+BillTo.Mobile.LocCode
+
+BillToMobileNumber
+BillTo.Mobile.Number
+
+BillToMobileNumberPrefix
+BillTo.Mobile.Number.Prefix
+
+BillToMobileNumberSuffix
+BillTo.Mobile.Number.Suffix
+
+ShipToMobile
+ShipTo.Mobile
+
+ShipToMobileLocCode
+ShipTo.Mobile.LocCode
+
+ShipToMobileNumber
+ShipTo.Mobile.Number
+
+ShipToMobileNumberPrefix
+ShipTo.Mobile.Number.Prefix
+
+ShipToMobileNumberSuffix
+ShipTo.Mobile.Number.Suffix
+
+HomePager
+Home.Pager
+
+HomePagerLocCode
+Home.Pager.LocCode
+
+HomePagerNumber
+Home.Pager.Number
+
+HomePagerNumberPrefix
+Home.Pager.Number.Prefix
+
+HomePagerNumberSuffix
+Home.Pager.Number.Suffix
+
+BillToPager
+BillTo.Pager
+
+BillToPagerLocCode
+BillTo.Pager.LocCode
+
+BillToPagerNumber
+BillTo.Pager.Number
+
+BillToPagerNumberPrefix
+BillTo.Pager.Number.Prefix
+
+BillToPagerNumberSuffix
+BillTo.Pager.Number.Suffix
+
+ShipToPager
+ShipTo.Pager
+
+ShipToPagerLocCode
+ShipTo.Pager.LocCode
+
+ShipToPagerNumber
+ShipTo.Pager.Number
+
+ShipToPagerNumberPrefix
+ShipTo.Pager.Number.Prefix
+
+ShipToPagerNumberSuffix
+ShipTo.Pager.Number.Suffix
+
+HomeEmail
+Home.Email
+
+HomeURI
+Home.URI
+
+BillToEmail
+BillTo.Email
+
+BillToURI
+BillTo.URI
+
+ShipToEmail
+ShipTo.Email
+
+ShipToURI
+ShipTo.URI
+
+CardType
+Card.Type
+
+CardNumber
+Card.Number
+
+CardName
+Card.Name
+
+CardExpDate
+Card.ExpDate
+
+CardExpDateMonth
+Card.ExpDate.Month
+
+CardExpDateYear
+Card.ExpDate.Year
+
+SocSec
+SocSec
+
+SocSecPrefix
+SocSec.Prefix
+
+SocSecMiddle
+SocSec.Middle
+
+SocSecSuffix
+SocSec.Suffix
+
+LicenseNumber
+License.Number
+
+LicenseState
+License.State
+
+Bdate
+Bdate
+
+BdateMonth
+Bdate.Month
+
+BdateDay
+Bdate.Day
+
+BdateYear
+Bdate.Year
+
+Anniv
+Anniv
+
+AnnivMonth
+Anniv.Month
+
+AnnivDay
+Anniv.Day
+
+AnnivYear
+Anniv.Year
+
+MothersMaidenName
+MothersMaidenName
+
+anniversary
+Anniv
+
+birthday
+Bdate
+
+dateofbirth
+Bdate
+
+dob
+Bdate
+
+dobday
+Bdate.Day
+
+dobmonth
+Bdate.Month
+
+dobyear
+Bdate.Year
+
+bephone
+BillTo.AltPhone