Merge cedar into mozilla-central
authorEhsan Akhgari <ehsan@mozilla.com>
Wed, 06 Apr 2011 16:39:14 -0700
changeset 67590 4a3d11e05c8e6f87be21fd41ff6e8646fb4a0a98
parent 67589 18c60f250f9fdf314c74e6db24b6b2f90b93969c (current diff)
parent 67567 8e9f90073a20dfbf54c2ab2001fa7fa73bfceef9 (diff)
child 67591 ee12989404ec655f993c06e6184318b496f3265c
child 67625 883645192a0697c875101af8ebacc6e17c64629b
push id1
push userroot
push dateTue, 26 Apr 2011 22:38:44 +0000
treeherdermozilla-beta@bfdb6e623a36 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
milestone2.2a1pre
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Merge cedar into mozilla-central
docshell/base/nsDocShell.cpp
layout/style/nsCSSRule.h
layout/style/nsICSSGroupRule.h
netwerk/protocol/http/nsHttpHandler.cpp
--- a/.hgtags
+++ b/.hgtags
@@ -52,8 +52,12 @@ 138f593553b66c9f815e8f57870c19d6347f7702
 0327e126ea245112c0aa7283fee154e084866fb5 bsmedberg-static-xpcom-registration-base
 0327e126ea245112c0aa7283fee154e084866fb5 bsmedberg-static-xpcom-registration-base
 2f83edbbeef0de7dd901411d270da61106c8afae bsmedberg-static-xpcom-registration-base
 138f593553b66c9f815e8f57870c19d6347f7702 UPDATE_PACKAGING_R12
 138f593553b66c9f815e8f57870c19d6347f7702 UPDATE_PACKAGING_R13
 138f593553b66c9f815e8f57870c19d6347f7702 UPDATE_PACKAGING_R11_1_MU
 e56ecd8b3a68c158025207c5fd081d043e28f5ce GECKO_2_0_BASE
 e273946b74c8d631ed86bd74ba9afe0e67b12378 GECKO_2_1_BASE
+b70744835d94e54eec97b8fd186c96da5708a506 PRE_MOBILE_MERGE
+b70744835d94e54eec97b8fd186c96da5708a506 PRE_MOBILE_MERGE_20110406
+a71bd564ebf5bf4f93d13e84114f759c263130b0 MOBILE_MERGE_DONE
+a71bd564ebf5bf4f93d13e84114f759c263130b0 MOBILE_MERGE_DONE_20110406
--- a/browser/locales/en-US/chrome/overrides/appstrings.properties
+++ b/browser/locales/en-US/chrome/overrides/appstrings.properties
@@ -58,8 +58,9 @@ externalProtocolTitle=External Protocol 
 externalProtocolPrompt=An external application must be launched to handle %1$S: links.\n\n\nRequested link:\n\n%2$S\n\nApplication: %3$S\n\n\nIf you were not expecting this request it may be an attempt to exploit a weakness in that other program. Cancel this request unless you are sure it is not malicious.\n
 #LOCALIZATION NOTE (externalProtocolUnknown): The following string is shown if the application name can't be determined
 externalProtocolUnknown=<Unknown>
 externalProtocolChkMsg=Remember my choice for all links of this type.
 externalProtocolLaunchBtn=Launch application
 malwareBlocked=The site at %S has been reported as an attack site and has been blocked based on your security preferences.
 phishingBlocked=The web site at %S has been reported as a web forgery designed to trick users into sharing personal or financial information.
 cspFrameAncestorBlocked=This page has a content security policy that prevents it from being embedded in this way.
+remoteXUL=This page uses an unsupported technology that is no longer available by default in Firefox.
--- a/browser/locales/en-US/chrome/overrides/netError.dtd
+++ b/browser/locales/en-US/chrome/overrides/netError.dtd
@@ -181,8 +181,11 @@ button is included here (instead of netE
 functionality specific to firefox. -->
 
 <!ENTITY securityOverride.warningContent "
 <p>You should not add an exception if you are using an internet connection that you do not trust completely or if you are not used to seeing a warning for this server.</p>
 
 <button id='getMeOutOfHereButton'>&securityOverride.getMeOutOfHereButton;</button>
 <button id='exceptionDialogButton'>&securityOverride.exceptionButtonLabel;</button>
 ">
+
+<!ENTITY remoteXUL.title "Remote XUL">
+<!ENTITY remoteXUL.longDesc "<p><ul><li>Please contact the website owners to inform them of this problem.</li></ul></p>">
--- a/content/svg/content/src/nsSVGElement.cpp
+++ b/content/svg/content/src/nsSVGElement.cpp
@@ -1209,17 +1209,17 @@ MappedAttrParser::ParseMappedAttrValue(n
 
 already_AddRefed<css::StyleRule>
 MappedAttrParser::CreateStyleRule()
 {
   if (!mDecl) {
     return nsnull; // No mapped attributes were parsed
   }
 
-  nsRefPtr<css::StyleRule> rule = NS_NewCSSStyleRule(nsnull, mDecl);
+  nsRefPtr<css::StyleRule> rule = new css::StyleRule(nsnull, mDecl);
   mDecl = nsnull; // We no longer own the declaration -- drop our pointer to it
   return rule.forget();
 }
 
 } // anonymous namespace
 
 //----------------------------------------------------------------------
 // Implementation Helpers:
--- a/docshell/base/nsDocShell.cpp
+++ b/docshell/base/nsDocShell.cpp
@@ -3928,41 +3928,16 @@ nsDocShell::DisplayLoadError(nsresult aE
             break;
         case NS_ERROR_INVALID_CONTENT_ENCODING:
             // Bad Content Encoding.
             error.AssignLiteral("contentEncodingError");
             break;
         case NS_ERROR_REMOTE_XUL:
         {
             error.AssignLiteral("remoteXUL");
-
-            /**
-             * We want to set an hardcoded messageStr which uses the
-             * brandShortName.
-             */
-            nsCOMPtr<nsIStringBundleService> stringBundleService =
-                mozilla::services::GetStringBundleService();
-            if (!stringBundleService) {
-                return NS_ERROR_FAILURE;
-            }
-
-            nsCOMPtr<nsIStringBundle> brandBundle;
-            rv = stringBundleService->CreateBundle(kBrandBundleURL,
-                                                   getter_AddRefs(brandBundle));
-            NS_ENSURE_SUCCESS(rv, rv);
-
-            nsXPIDLString brandName;
-            rv = brandBundle->GetStringFromName(NS_LITERAL_STRING("brandShortName").get(),
-                                                getter_Copies(brandName));
-
-            // We could use something like nsTextFormatter::smprintf.
-            messageStr.AssignLiteral("This page uses an unsupported technology "
-                                     "that is no longer available by default in ");
-            messageStr.Append(brandName);
-            messageStr.AppendLiteral(".");
             break;
         }
         case NS_ERROR_UNSAFE_CONTENT_TYPE:
             // Channel refused to load from an unrecognized content type.
             error.AssignLiteral("unsafeContentType");
             break;
         }
     }
--- a/docshell/resources/content/netError.xhtml
+++ b/docshell/resources/content/netError.xhtml
@@ -323,17 +323,17 @@
         <h1 id="et_proxyResolveFailure">&proxyResolveFailure.title;</h1>
         <h1 id="et_proxyConnectFailure">&proxyConnectFailure.title;</h1>
         <h1 id="et_contentEncodingError">&contentEncodingError.title;</h1>
         <h1 id="et_unsafeContentType">&unsafeContentType.title;</h1>
         <h1 id="et_nssFailure2">&nssFailure2.title;</h1>
         <h1 id="et_nssBadCert">&nssBadCert.title;</h1>
         <h1 id="et_malwareBlocked">&malwareBlocked.title;</h1>
         <h1 id="et_cspFrameAncestorBlocked">&cspFrameAncestorBlocked.title;</h1>
-        <h1 id="et_remoteXUL">Remote XUL</h1>
+        <h1 id="et_remoteXUL">&remoteXUL.title;</h1>
       </div>
       <div id="errorDescriptionsContainer">
         <div id="ed_generic">&generic.longDesc;</div>
         <div id="ed_dnsNotFound">&dnsNotFound.longDesc;</div>
         <div id="ed_fileNotFound">&fileNotFound.longDesc;</div>
         <div id="ed_malformedURI">&malformedURI.longDesc;</div>
         <div id="ed_protocolNotFound">&protocolNotFound.longDesc;</div>
         <div id="ed_connectionFailure">&connectionFailure.longDesc;</div>
@@ -347,17 +347,17 @@
         <div id="ed_proxyResolveFailure">&proxyResolveFailure.longDesc;</div>
         <div id="ed_proxyConnectFailure">&proxyConnectFailure.longDesc;</div>
         <div id="ed_contentEncodingError">&contentEncodingError.longDesc;</div>
         <div id="ed_unsafeContentType">&unsafeContentType.longDesc;</div>
         <div id="ed_nssFailure2">&nssFailure2.longDesc;</div>
         <div id="ed_nssBadCert">&nssBadCert.longDesc2;</div>
         <div id="ed_malwareBlocked">&malwareBlocked.longDesc;</div>
         <div id="ed_cspFrameAncestorBlocked">&cspFrameAncestorBlocked.longDesc;</div>
-        <div id="ed_remoteXUL"><ul><li>Please contact the website owners to inform them of this problem.</li></ul></div>
+        <div id="ed_remoteXUL">&remoteXUL.longDesc;</div>
       </div>
     </div>
 
     <!-- PAGE CONTAINER (for styling purposes only) -->
     <div id="errorPageContainer">
     
       <!-- Error Title -->
       <div id="errorTitle">
--- a/dom/locales/en-US/chrome/appstrings.properties
+++ b/dom/locales/en-US/chrome/appstrings.properties
@@ -57,8 +57,9 @@ externalProtocolTitle=External Protocol 
 externalProtocolPrompt=An external application must be launched to handle %1$S: links.\n\n\nRequested link:\n\n%2$S\n\nApplication: %3$S\n\n\nIf you were not expecting this request it may be an attempt to exploit a weakness in that other program. Cancel this request unless you are sure it is not malicious.\n
 #LOCALIZATION NOTE (externalProtocolUnknown): The following string is shown if the application name can't be determined
 externalProtocolUnknown=<Unknown>
 externalProtocolChkMsg=Remember my choice for all links of this type.
 externalProtocolLaunchBtn=Launch application
 malwareBlocked=The site at %S has been reported as an attack site and has been blocked based on your security preferences.
 phishingBlocked=The web site at %S has been reported as a web forgery designed to trick users into sharing personal or financial information.
 cspFrameAncestorBlocked=This page has a content security policy that prevents it from being embedded in this way.
+remoteXUL=This page uses an unsupported technology that is no longer available by default.
--- a/dom/locales/en-US/chrome/netError.dtd
+++ b/dom/locales/en-US/chrome/netError.dtd
@@ -84,8 +84,11 @@
 <!ENTITY cspFrameAncestorBlocked.title "Blocked by Content Security Policy">
 <!ENTITY cspFrameAncestorBlocked.longDesc "<p>The browser prevented this page from loading in this way because the page has a content security policy that disallows it.</p>">
 
 <!-- Include app-specific error messages - do not change this in localization!
      Some applications might override netErrorApp.dtd with their specific version,
      this inclusion needs to be intact for that approach to work correctly. -->
 <!ENTITY % netErrorAppDTD SYSTEM "chrome://global/locale/netErrorApp.dtd">
 %netErrorAppDTD;
+
+<!ENTITY remoteXUL.title "Remote XUL">
+<!ENTITY remoteXUL.longDesc "<p><ul><li>Please contact the website owners to inform them of this problem.</li></ul></p>">
rename from layout/style/nsICSSGroupRule.h
rename to layout/style/GroupRule.h
--- a/layout/style/nsICSSGroupRule.h
+++ b/layout/style/GroupRule.h
@@ -35,52 +35,85 @@
  *
  * ***** END LICENSE BLOCK ***** */
 
 /*
  * internal interface representing CSS style rules that contain other
  * rules, such as @media rules
  */
 
-#ifndef nsICSSGroupRule_h
-#define nsICSSGroupRule_h
+#ifndef mozilla_css_GroupRule_h__
+#define mozilla_css_GroupRule_h__
 
-#include "nsICSSRule.h"
+#include "Rule.h"
 #include "nsCOMArray.h"
+#include "nsAutoPtr.h"
 
 class nsPresContext;
 class nsMediaQueryResultCacheKey;
 
-#define NS_ICSS_GROUP_RULE_IID \
-{ 0xf1e3d96b, 0xe381, 0x4533, \
-  { 0xa6, 0x5e, 0xa5, 0x31, 0xba, 0xca, 0x93, 0x62 } }
+namespace mozilla {
+namespace css {
+
+class GroupRuleRuleList;
 
-
-class nsICSSGroupRule : public nsICSSRule {
+// inherits from Rule so it can be shared between
+// MediaRule and DocumentRule
+class GroupRule : public Rule
+{
+protected:
+  GroupRule();
+  GroupRule(const GroupRule& aCopy);
+  virtual ~GroupRule();
 public:
-  NS_DECLARE_STATIC_IID_ACCESSOR(NS_ICSS_GROUP_RULE_IID)
+
+  // implement part of nsIStyleRule and nsICSSRule
+  DECL_STYLE_RULE_INHERIT_NO_DOMRULE
+  virtual void SetStyleSheet(nsCSSStyleSheet* aSheet);
 
-  NS_IMETHOD  AppendStyleRule(nsICSSRule* aRule) = 0;
+  // to help implement nsIStyleRule
+#ifdef DEBUG
+  virtual void List(FILE* out = stdout, PRInt32 aIndent = 0) const;
+#endif
 
-  NS_IMETHOD  StyleRuleCount(PRInt32& aCount) const = 0;
-  NS_IMETHOD  GetStyleRuleAt(PRInt32 aIndex, nsICSSRule*& aRule) const = 0;
+public:
+  void AppendStyleRule(nsICSSRule* aRule);
+
+  PRInt32 StyleRuleCount() const { return mRules.Count(); }
+  nsICSSRule* GetStyleRuleAt(PRInt32 aIndex) const;
 
   typedef nsCOMArray<nsICSSRule>::nsCOMArrayEnumFunc RuleEnumFunc;
-  NS_IMETHOD_(PRBool) EnumerateRulesForwards(RuleEnumFunc aFunc, void * aData) const = 0;
+  PRBool EnumerateRulesForwards(RuleEnumFunc aFunc, void * aData) const;
 
   /*
    * The next three methods should never be called unless you have first
    * called WillDirty() on the parent stylesheet.  After they are
    * called, DidDirty() needs to be called on the sheet.
    */
-  NS_IMETHOD  DeleteStyleRuleAt(PRUint32 aIndex) = 0;
-  NS_IMETHOD  InsertStyleRulesAt(PRUint32 aIndex,
-                                 nsCOMArray<nsICSSRule>& aRules) = 0;
-  NS_IMETHOD  ReplaceStyleRule(nsICSSRule* aOld, nsICSSRule* aNew) = 0;
+  nsresult DeleteStyleRuleAt(PRUint32 aIndex);
+  nsresult InsertStyleRulesAt(PRUint32 aIndex,
+                              nsCOMArray<nsICSSRule>& aRules);
+  nsresult ReplaceStyleRule(nsICSSRule *aOld, nsICSSRule *aNew);
+
+  virtual PRBool UseForPresentation(nsPresContext* aPresContext,
+                                    nsMediaQueryResultCacheKey& aKey) = 0;
 
-  NS_IMETHOD_(PRBool) UseForPresentation(nsPresContext* aPresContext,
-                                         nsMediaQueryResultCacheKey& aKey) = 0;
-   
+protected:
+  // to help implement nsIDOMCSSRule
+  nsresult AppendRulesToCssText(nsAString& aCssText);
+  // to implement methods on nsIDOMCSSRule
+  nsresult GetParentRule(nsIDOMCSSRule** aParentRule);
+
+  // to implement common methods on nsIDOMCSSMediaRule and
+  // nsIDOMCSSMozDocumentRule
+  nsIDOMCSSRuleList* GetCssRules();
+  nsresult InsertRule(const nsAString & aRule, PRUint32 aIndex,
+                      PRUint32* _retval);
+  nsresult DeleteRule(PRUint32 aIndex);
+
+  nsCOMArray<nsICSSRule> mRules;
+  nsRefPtr<GroupRuleRuleList> mRuleCollection; // lazily constructed
 };
 
-NS_DEFINE_STATIC_IID_ACCESSOR(nsICSSGroupRule, NS_ICSS_GROUP_RULE_IID)
+} // namespace css
+} // namespace mozilla
 
-#endif /* nsICSSGroupRule_h */
+#endif /* mozilla_css_GroupRule_h__ */
--- a/layout/style/ImportRule.h
+++ b/layout/style/ImportRule.h
@@ -35,57 +35,53 @@
  *
  * ***** END LICENSE BLOCK ***** */
 
 /* class for CSS @import rules */
 
 #ifndef mozilla_css_ImportRule_h__
 #define mozilla_css_ImportRule_h__
 
-#include "nsICSSRule.h"
-#include "nsCSSRule.h"
+#include "Rule.h"
 #include "nsIDOMCSSImportRule.h"
 #include "nsCSSRules.h"
 
 class nsMediaList;
 class nsString;
 
 namespace mozilla {
 namespace css {
 
-class NS_FINAL_CLASS ImportRule : public nsCSSRule,
-                                  public nsICSSRule,
+class NS_FINAL_CLASS ImportRule : public Rule,
                                   public nsIDOMCSSImportRule
 {
 public:
-  ImportRule(nsMediaList* aMedia);
+  ImportRule(nsMediaList* aMedia, const nsString& aURLSpec);
 private:
   // for |Clone|
   ImportRule(const ImportRule& aCopy);
   ~ImportRule();
 public:
-  NS_DECL_ISUPPORTS
+  NS_DECL_ISUPPORTS_INHERITED
 
   DECL_STYLE_RULE_INHERIT
 
+#ifdef HAVE_CPP_AMBIGUITY_RESOLVING_USING
+  using Rule::GetStyleSheet; // unhide since nsIDOMCSSImportRule has its own GetStyleSheet
+#endif
+
   // nsIStyleRule methods
 #ifdef DEBUG
   virtual void List(FILE* out = stdout, PRInt32 aIndent = 0) const;
 #endif
 
   // nsICSSRule methods
   virtual PRInt32 GetType() const;
   virtual already_AddRefed<nsICSSRule> Clone() const;
 
-  void SetURLSpec(const nsString& aURLSpec) { mURLSpec = aURLSpec; }
-  void GetURLSpec(nsString& aURLSpec) const { aURLSpec = mURLSpec; }
-
-  nsresult SetMedia(const nsString& aMedia);
-  void GetMedia(nsString& aMedia) const;
-
   void SetSheet(nsCSSStyleSheet*);
 
   // nsIDOMCSSRule interface
   NS_DECL_NSIDOMCSSRULE
 
   // nsIDOMCSSImportRule interface
   NS_DECL_NSIDOMCSSIMPORTRULE
 
@@ -93,13 +89,9 @@ private:
   nsString  mURLSpec;
   nsRefPtr<nsMediaList> mMedia;
   nsRefPtr<nsCSSStyleSheet> mChildSheet;
 };
 
 } // namespace css
 } // namespace mozilla
 
-nsresult
-NS_NewCSSImportRule(mozilla::css::ImportRule** aInstancePtrResult,
-                    const nsString& aURLSpec, nsMediaList* aMedia);
-
 #endif /* mozilla_css_ImportRule_h__ */
--- a/layout/style/Makefile.in
+++ b/layout/style/Makefile.in
@@ -67,17 +67,16 @@ EXPORTS		= \
 		nsCSSPseudoElementList.h \
 		nsCSSPseudoElements.h \
 		nsCSSRuleProcessor.h \
 		nsCSSStyleSheet.h \
 		nsCSSValue.h \
 		nsDOMCSSAttrDeclaration.h \
 		nsDOMCSSDeclaration.h \
 		nsICSSDeclaration.h \
-		nsICSSGroupRule.h \
 		nsICSSLoaderObserver.h \
 		nsICSSPseudoComparator.h \
 		nsICSSRule.h \
 		nsICSSRuleList.h \
 		nsICSSStyleRuleDOMWrapper.h \
 		nsIStyleRule.h \
 		nsIStyleRuleProcessor.h \
 		nsIStyleSheet.h \
@@ -94,16 +93,17 @@ EXPORTS		= \
 		nsStyleStructInlines.h \
 		nsStyleStructList.h \
 		nsStyleTransformMatrix.h \
 		nsStyleUtil.h \
 		$(NULL)
 
 EXPORTS_mozilla/css = \
 		Declaration.h \
+		GroupRule.h \
 		ImportRule.h \
 		Loader.h \
 		NameSpaceRule.h \
 		StyleRule.h \
 		$(NULL)
 
 CPPSRCS		= \
 		nsCSSAnonBoxes.cpp \
--- a/layout/style/NameSpaceRule.h
+++ b/layout/style/NameSpaceRule.h
@@ -35,72 +35,64 @@
  *
  * ***** END LICENSE BLOCK ***** */
 
 /* class for CSS @namespace rules */
 
 #ifndef mozilla_css_NameSpaceRule_h__
 #define mozilla_css_NameSpaceRule_h__
 
-#include "nsICSSRule.h"
-#include "nsCSSRule.h"
+#include "Rule.h"
 #include "nsIDOMCSSRule.h"
 
 class nsIAtom;
 
 // IID for the nsCSSNameSpaceRule class {f0b0dbe1-5031-4a21-b06a-dc141ef2af98}
 #define NS_CSS_NAMESPACE_RULE_IMPL_CID     \
 {0xf0b0dbe1, 0x5031, 0x4a21, {0xb0, 0x6a, 0xdc, 0x14, 0x1e, 0xf2, 0xaf, 0x98}}
 
 
 namespace mozilla {
 namespace css {
 
-class NS_FINAL_CLASS NameSpaceRule : public nsCSSRule,
-                                     public nsICSSRule,
+class NS_FINAL_CLASS NameSpaceRule : public Rule,
                                      public nsIDOMCSSRule
 {
 public:
-  NameSpaceRule();
+  NameSpaceRule(nsIAtom* aPrefix, const nsString& aURLSpec);
 private:
   // for |Clone|
   NameSpaceRule(const NameSpaceRule& aCopy);
   ~NameSpaceRule();
 public:
   NS_DECLARE_STATIC_IID_ACCESSOR(NS_CSS_NAMESPACE_RULE_IMPL_CID)
 
-  NS_DECL_ISUPPORTS
+  NS_DECL_ISUPPORTS_INHERITED
 
   DECL_STYLE_RULE_INHERIT
 
   // nsIStyleRule methods
 #ifdef DEBUG
   virtual void List(FILE* out = stdout, PRInt32 aIndent = 0) const;
 #endif
 
   // nsICSSRule methods
   virtual PRInt32 GetType() const;
   virtual already_AddRefed<nsICSSRule> Clone() const;
 
   nsIAtom* GetPrefix() const { return mPrefix; }
-  void SetPrefix(nsIAtom* aPrefix) { mPrefix = aPrefix; }
 
   void GetURLSpec(nsString& aURLSpec) const { aURLSpec = mURLSpec; }
-  void SetURLSpec(const nsString& aURLSpec) { mURLSpec = aURLSpec; }
 
   // nsIDOMCSSRule interface
   NS_DECL_NSIDOMCSSRULE
 
 private:
   nsCOMPtr<nsIAtom> mPrefix;
   nsString          mURLSpec;
 };
 
 } // namespace css
 } // namespace mozilla
 
 NS_DEFINE_STATIC_IID_ACCESSOR(mozilla::css::NameSpaceRule, NS_CSS_NAMESPACE_RULE_IMPL_CID)
 
-nsresult
-NS_NewCSSNameSpaceRule(mozilla::css::NameSpaceRule** aInstancePtrResult,
-                       nsIAtom* aPrefix, const nsString& aURLSpec);
-
 #endif /* mozilla_css_NameSpaceRule_h__ */
rename from layout/style/nsCSSRule.h
rename to layout/style/Rule.h
--- a/layout/style/nsCSSRule.h
+++ b/layout/style/Rule.h
@@ -32,62 +32,68 @@
  * 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 ***** */
 
 /* base class for all rule types in a CSS style sheet */
 
-#ifndef nsCSSRule_h___
-#define nsCSSRule_h___
+#ifndef mozilla_css_Rule_h___
+#define mozilla_css_Rule_h___
+
+#include "nsICSSRule.h"
+
+class nsIStyleSheet;
+class nsCSSStyleSheet;
+struct nsRuleData;
+template<class T> struct already_AddRefed;
 
-#include "nsISupports.h"
-#include "nsCOMPtr.h"
-#include "nsCSSStyleSheet.h"
+namespace mozilla {
+namespace css {
+class GroupRule;
+
+#define DECL_STYLE_RULE_INHERIT_NO_DOMRULE  \
+virtual void MapRuleInfoInto(nsRuleData* aRuleData);
 
-class nsICSSGroupRule;
+#define DECL_STYLE_RULE_INHERIT  \
+DECL_STYLE_RULE_INHERIT_NO_DOMRULE \
+virtual nsIDOMCSSRule* GetDOMRuleWeak(nsresult* aResult);
 
-class nsCSSRule {
-public:
-  nsCSSRule(void)
+class Rule : public nsICSSRule {
+protected:
+  Rule()
     : mSheet(nsnull),
       mParentRule(nsnull)
   {
   }
 
-  nsCSSRule(const nsCSSRule& aCopy)
+  Rule(const Rule& aCopy)
     : mSheet(aCopy.mSheet),
       mParentRule(aCopy.mParentRule)
   {
   }
 
-  already_AddRefed<nsIStyleSheet>
-  GetStyleSheet() const
-  {
-    NS_IF_ADDREF(mSheet);
-    return mSheet;
-  }
+  virtual ~Rule() {}
 
-  void
-  SetStyleSheet(nsCSSStyleSheet* aSheet)
-  {
-    // We don't reference count this up reference. The style sheet
-    // will tell us when it's going away or when we're detached from
-    // it.
-    mSheet = aSheet;
-  }
+public:
+  // for implementing nsISupports
+  NS_IMETHOD_(nsrefcnt) AddRef();
+  NS_IMETHOD_(nsrefcnt) Release();
+protected:
+  nsAutoRefCnt mRefCnt;
+  NS_DECL_OWNINGTHREAD
+public:
 
-  void
-  SetParentRule(nsICSSGroupRule* aRule)
-  {
-    // We don't reference count this up reference. The group rule
-    // will tell us when it's going away or when we're detached from
-    // it.
-    mParentRule = aRule;
-  }
+  virtual nsIStyleSheet* GetStyleSheet() const;
+  virtual void SetStyleSheet(nsCSSStyleSheet* aSheet);
+
+  virtual void SetParentRule(GroupRule* aRule);
 
 protected:
-  nsCSSStyleSheet*    mSheet;
-  nsICSSGroupRule*    mParentRule;
+  nsCSSStyleSheet*  mSheet;
+  GroupRule*        mParentRule;
 };
 
-#endif /* nsCSSRule_h___ */
+} // namespace css
+} // namespace mozilla
+
+#endif /* mozilla_css_Rule_h___ */
--- a/layout/style/StyleRule.cpp
+++ b/layout/style/StyleRule.cpp
@@ -40,17 +40,17 @@
 
 /*
  * representation of CSS style rules (selectors+declaration), CSS
  * selectors, and DOM objects for style rules, selectors, and
  * declarations
  */
 
 #include "mozilla/css/StyleRule.h"
-#include "nsICSSGroupRule.h"
+#include "mozilla/css/GroupRule.h"
 #include "mozilla/css/Declaration.h"
 #include "nsCSSStyleSheet.h"
 #include "mozilla/css/Loader.h"
 #include "nsIURL.h"
 #include "nsIDocument.h"
 #include "nsIDeviceContext.h"
 #include "nsIAtom.h"
 #include "nsCRT.h"
@@ -1069,19 +1069,18 @@ DOMCSSDeclarationImpl::GetCSSParsingEnvi
                                                 css::Loader** aCSSLoader)
 {
   // null out the out params since some of them may not get initialized below
   *aSheetURI = nsnull;
   *aBaseURI = nsnull;
   *aSheetPrincipal = nsnull;
   *aCSSLoader = nsnull;
 
-  nsCOMPtr<nsIStyleSheet> sheet;
   if (mRule) {
-    sheet = mRule->GetStyleSheet();
+    nsIStyleSheet* sheet = mRule->GetStyleSheet();
     if (sheet) {
       NS_IF_ADDREF(*aSheetURI = sheet->GetSheetURI());
       NS_IF_ADDREF(*aBaseURI = sheet->GetBaseURI());
 
       nsRefPtr<nsCSSStyleSheet> cssSheet(do_QueryObject(sheet));
       if (cssSheet) {
         NS_ADDREF(*aSheetPrincipal = cssSheet->Principal());
       }
@@ -1220,17 +1219,17 @@ DOMCSSStyleRule::GetParentStyleSheet(nsI
 
 NS_IMETHODIMP
 DOMCSSStyleRule::GetParentRule(nsIDOMCSSRule** aParentRule)
 {
   if (!Rule()) {
     *aParentRule = nsnull;
     return NS_OK;
   }
-  nsICSSGroupRule* rule = Rule()->GetParentRule();
+  GroupRule* rule = Rule()->GetParentRule();
   if (!rule) {
     *aParentRule = nsnull;
     return NS_OK;
   }
   return rule->GetDOMRule(aParentRule);
 }
 
 NS_IMETHODIMP
@@ -1274,43 +1273,44 @@ DOMCSSStyleRule::GetCSSStyleRule(StyleRu
 
 // -- StyleRule ------------------------------------
 
 namespace mozilla {
 namespace css {
 
 StyleRule::StyleRule(nsCSSSelectorList* aSelector,
                      Declaration* aDeclaration)
-  : nsCSSRule(),
+  : Rule(),
     mSelector(aSelector),
     mDeclaration(aDeclaration),
     mImportantRule(nsnull),
     mDOMRule(nsnull),
     mLineNumber(0),
     mWasMatched(PR_FALSE)
 {
+  NS_PRECONDITION(aDeclaration, "must have a declaration");
 }
 
 // for |Clone|
 StyleRule::StyleRule(const StyleRule& aCopy)
-  : nsCSSRule(aCopy),
+  : Rule(aCopy),
     mSelector(aCopy.mSelector ? aCopy.mSelector->Clone() : nsnull),
     mDeclaration(new Declaration(*aCopy.mDeclaration)),
     mImportantRule(nsnull),
     mDOMRule(nsnull),
     mLineNumber(aCopy.mLineNumber),
     mWasMatched(PR_FALSE)
 {
   // rest is constructed lazily on existing data
 }
 
 // for |SetCSSDeclaration|
 StyleRule::StyleRule(StyleRule& aCopy,
                      Declaration* aDeclaration)
-  : nsCSSRule(aCopy),
+  : Rule(aCopy),
     mSelector(aCopy.mSelector),
     mDeclaration(aDeclaration),
     mImportantRule(nsnull),
     mDOMRule(aCopy.mDOMRule),
     mLineNumber(aCopy.mLineNumber),
     mWasMatched(PR_FALSE)
 {
   // The DOM rule is replacing |aCopy| with |this|, so transfer
@@ -1349,18 +1349,18 @@ NS_INTERFACE_MAP_BEGIN(StyleRule)
     return NS_OK;
   }
   else
   NS_INTERFACE_MAP_ENTRY(nsICSSRule)
   NS_INTERFACE_MAP_ENTRY(nsIStyleRule)
   NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsICSSRule)
 NS_INTERFACE_MAP_END
 
-NS_IMPL_ADDREF(StyleRule)
-NS_IMPL_RELEASE(StyleRule)
+NS_IMPL_ADDREF_INHERITED(StyleRule, Rule)
+NS_IMPL_RELEASE_INHERITED(StyleRule, Rule)
 
 nsIStyleRule* StyleRule::GetImportantRule()
 {
   return mImportantRule;
 }
 
 void
 StyleRule::RuleMatched()
@@ -1371,35 +1371,16 @@ StyleRule::RuleMatched()
     mWasMatched = PR_TRUE;
     mDeclaration->SetImmutable();
     if (mDeclaration->HasImportantData()) {
       NS_ADDREF(mImportantRule = new ImportantRule(mDeclaration));
     }
   }
 }
 
-/* virtual */ already_AddRefed<nsIStyleSheet>
-StyleRule::GetStyleSheet() const
-{
-// XXX What about inner, etc.
-  return nsCSSRule::GetStyleSheet();
-}
-
-/* virtual */ void
-StyleRule::SetStyleSheet(nsCSSStyleSheet* aSheet)
-{
-  nsCSSRule::SetStyleSheet(aSheet);
-}
-
-/* virtual */ void
-StyleRule::SetParentRule(nsICSSGroupRule* aRule)
-{
-  nsCSSRule::SetParentRule(aRule);
-}
-
 /* virtual */ PRInt32
 StyleRule::GetType() const
 {
   return nsICSSRule::STYLE_RULE;
 }
 
 /* virtual */ already_AddRefed<nsICSSRule>
 StyleRule::Clone() const
@@ -1521,18 +1502,8 @@ StyleRule::SetSelectorText(const nsAStri
 {
   // XXX TBI - get a parser and re-parse the selectors,
   // XXX then need to re-compute the cascade
   // XXX and dirty sheet
 }
 
 } // namespace css
 } // namespace mozilla
-
-already_AddRefed<css::StyleRule>
-NS_NewCSSStyleRule(nsCSSSelectorList* aSelector,
-                   css::Declaration* aDeclaration)
-{
-  NS_PRECONDITION(aDeclaration, "must have a declaration");
-  css::StyleRule *it = new css::StyleRule(aSelector, aDeclaration);
-  NS_ADDREF(it);
-  return it;
-}
--- a/layout/style/StyleRule.h
+++ b/layout/style/StyleRule.h
@@ -41,18 +41,17 @@
  * representation of CSS style rules (selectors+declaration) and CSS
  * selectors
  */
 
 #ifndef mozilla_css_StyleRule_h__
 #define mozilla_css_StyleRule_h__
 
 //#include <stdio.h>
-#include "nsICSSRule.h"
-#include "nsCSSRule.h"
+#include "Rule.h"
 #include "nsString.h"
 #include "nsCOMPtr.h"
 #include "nsCSSPseudoElements.h"
 #include "nsCSSPseudoClasses.h"
 #include "nsAutoPtr.h"
 
 class nsIAtom;
 class nsCSSStyleSheet;
@@ -290,31 +289,31 @@ private:
 
 namespace mozilla {
 namespace css {
 
 class Declaration;
 class ImportantRule;
 class DOMCSSStyleRule;
 
-class NS_FINAL_CLASS StyleRule : public nsCSSRule,
-                                 public nsICSSRule {
+class NS_FINAL_CLASS StyleRule : public Rule
+{
  public:
   StyleRule(nsCSSSelectorList* aSelector,
             Declaration *aDeclaration);
 private:
   // for |Clone|
   StyleRule(const StyleRule& aCopy);
   // for |DeclarationChanged|
   StyleRule(StyleRule& aCopy,
             Declaration *aDeclaration);
 public:
   NS_DECLARE_STATIC_IID_ACCESSOR(NS_CSS_STYLE_RULE_IMPL_CID)
 
-  NS_DECL_ISUPPORTS
+  NS_DECL_ISUPPORTS_INHERITED
 
   // null for style attribute
   nsCSSSelectorList* Selector() { return mSelector; }
 
   PRUint32 GetLineNumber() const { return mLineNumber; }
   void SetLineNumber(PRUint32 aLineNumber) { mLineNumber = aLineNumber; }
 
   Declaration* GetDeclaration() const { return mDeclaration; }
@@ -338,26 +337,22 @@ public:
    * nsRuleWalker::Forward on this rule during rule matching.
    */
   void RuleMatched();
 
   // hooks for DOM rule
   void GetCssText(nsAString& aCssText);
   void SetCssText(const nsAString& aCssText);
   nsCSSStyleSheet* GetParentStyleSheet() { return mSheet; }
-  nsICSSGroupRule* GetParentRule() { return mParentRule; }
+  GroupRule* GetParentRule() { return mParentRule; }
   void GetSelectorText(nsAString& aSelectorText);
   void SetSelectorText(const nsAString& aSelectorText);
 
   virtual PRInt32 GetType() const;
 
-  virtual already_AddRefed<nsIStyleSheet> GetStyleSheet() const;
-  virtual void SetStyleSheet(nsCSSStyleSheet* aSheet);
-  virtual void SetParentRule(nsICSSGroupRule* aRule);
-
   virtual already_AddRefed<nsICSSRule> Clone() const;
 
   nsIDOMCSSRule* GetDOMRuleWeak(nsresult* aResult);
 
   // The new mapping function.
   virtual void MapRuleInfoInto(nsRuleData* aRuleData);
 
 #ifdef DEBUG
@@ -381,13 +376,9 @@ private:
   PRUint32                mWasMatched : 1;
 };
 
 } // namespace css
 } // namespace mozilla
 
 NS_DEFINE_STATIC_IID_ACCESSOR(mozilla::css::StyleRule, NS_CSS_STYLE_RULE_IMPL_CID)
 
-already_AddRefed<mozilla::css::StyleRule>
-NS_NewCSSStyleRule(nsCSSSelectorList* aSelector,
-                   mozilla::css::Declaration* aDeclaration);
-
 #endif /* mozilla_css_StyleRule_h__ */
--- a/layout/style/nsCSSParser.cpp
+++ b/layout/style/nsCSSParser.cpp
@@ -318,35 +318,35 @@ protected:
   PRBool CheckEndProperty();
   nsSubstring* NextIdent();
   void SkipUntil(PRUnichar aStopSymbol);
   void SkipUntilOneOf(const PRUnichar* aStopSymbolChars);
   void SkipRuleSet(PRBool aInsideBraces);
   PRBool SkipAtRule(PRBool aInsideBlock);
   PRBool SkipDeclaration(PRBool aCheckForBraces);
 
-  PRBool PushGroup(nsICSSGroupRule* aRule);
-  void PopGroup(void);
+  PRBool PushGroup(css::GroupRule* aRule);
+  void PopGroup();
 
   PRBool ParseRuleSet(RuleAppendFunc aAppendFunc, void* aProcessData,
                       PRBool aInsideBraces = PR_FALSE);
   PRBool ParseAtRule(RuleAppendFunc aAppendFunc, void* aProcessData);
   PRBool ParseCharsetRule(RuleAppendFunc aAppendFunc, void* aProcessData);
   PRBool ParseImportRule(RuleAppendFunc aAppendFunc, void* aProcessData);
   PRBool ParseURLOrString(nsString& aURL);
   PRBool GatherMedia(nsMediaList* aMedia,
                      PRBool aInAtRule);
   PRBool ParseMediaQuery(PRBool aInAtRule, nsMediaQuery **aQuery,
                          PRBool *aParsedSomething, PRBool *aHitStop);
   PRBool ParseMediaQueryExpression(nsMediaQuery* aQuery);
   void ProcessImport(const nsString& aURLSpec,
                      nsMediaList* aMedia,
                      RuleAppendFunc aAppendFunc,
                      void* aProcessData);
-  PRBool ParseGroupRule(nsICSSGroupRule* aRule, RuleAppendFunc aAppendFunc,
+  PRBool ParseGroupRule(css::GroupRule* aRule, RuleAppendFunc aAppendFunc,
                         void* aProcessData);
   PRBool ParseMediaRule(RuleAppendFunc aAppendFunc, void* aProcessData);
   PRBool ParseMozDocumentRule(RuleAppendFunc aAppendFunc, void* aProcessData);
   PRBool ParseNameSpaceRule(RuleAppendFunc aAppendFunc, void* aProcessData);
   void ProcessNameSpace(const nsString& aPrefix,
                         const nsString& aURLSpec, RuleAppendFunc aAppendFunc,
                         void* aProcessData);
 
@@ -651,17 +651,17 @@ protected:
   // when it encounters a prefix that is not mapped to a namespace.
   PRPackedBool  mFoundUnresolvablePrefix : 1;
 
 #ifdef DEBUG
   PRPackedBool mScannerInited : 1;
 #endif
 
   // Stack of rule groups; used for @media and such.
-  nsCOMArray<nsICSSGroupRule> mGroupStack;
+  nsTArray<nsRefPtr<css::GroupRule> > mGroupStack;
 
   // During the parsing of a property (which may be a shorthand), the data
   // are stored in |mTempData|.  (It is needed to ensure that parser
   // errors cause the data to be ignored, and to ensure that a
   // non-'!important' declaration does not override an '!important'
   // one.)
   nsCSSExpandedDataBlock mTempData;
 
@@ -982,17 +982,17 @@ CSSParserImpl::ParseStyleAttribute(const
   }
   else {
     haveBraces = PR_FALSE;
   }
 
   css::Declaration* declaration = ParseDeclarationBlock(haveBraces);
   if (declaration) {
     // Create a style rule for the declaration
-    *aResult = NS_NewCSSStyleRule(nsnull, declaration).get();
+    NS_ADDREF(*aResult = new css::StyleRule(nsnull, declaration));
   } else {
     *aResult = nsnull;
   }
 
   ReleaseScanner();
 
   // XXX check for low level errors
   return NS_OK;
@@ -1552,22 +1552,18 @@ CSSParserImpl::ParseCharsetRule(RuleAppe
   }
 
   nsAutoString charset = mToken.mIdent;
 
   if (!ExpectSymbol(';', PR_TRUE)) {
     return PR_FALSE;
   }
 
-  nsCOMPtr<nsICSSRule> rule;
-  NS_NewCSSCharsetRule(getter_AddRefs(rule), charset);
-
-  if (rule) {
-    (*aAppendFunc)(rule, aData);
-  }
+  nsCOMPtr<nsICSSRule> rule = new css::CharsetRule(charset);
+  (*aAppendFunc)(rule, aData);
 
   return PR_TRUE;
 }
 
 PRBool
 CSSParserImpl::ParseURLOrString(nsString& aURL)
 {
   if (!GetToken(PR_TRUE)) {
@@ -1921,28 +1917,23 @@ CSSParserImpl::ParseImportRule(RuleAppen
 
 
 void
 CSSParserImpl::ProcessImport(const nsString& aURLSpec,
                              nsMediaList* aMedia,
                              RuleAppendFunc aAppendFunc,
                              void* aData)
 {
-  nsRefPtr<css::ImportRule> rule;
-  nsresult rv = NS_NewCSSImportRule(getter_AddRefs(rule), aURLSpec, aMedia);
-  if (NS_FAILED(rv)) { // out of memory
-    mScanner.SetLowLevelError(rv);
-    return;
-  }
+  nsRefPtr<css::ImportRule> rule = new css::ImportRule(aMedia, aURLSpec);
   (*aAppendFunc)(rule, aData);
 
   // Diagnose bad URIs even if we don't have a child loader.
   nsCOMPtr<nsIURI> url;
   // Charset will be deduced from mBaseURI, which is more or less correct.
-  rv = NS_NewURI(getter_AddRefs(url), aURLSpec, nsnull, mBaseURI);
+  nsresult rv = NS_NewURI(getter_AddRefs(url), aURLSpec, nsnull, mBaseURI);
 
   if (NS_FAILED(rv)) {
     if (rv == NS_ERROR_MALFORMED_URI) {
       // import url is bad
       const PRUnichar *params[] = {
         aURLSpec.get()
       };
       REPORT_UNEXPECTED_P(PEImportBadURI, params);
@@ -1953,17 +1944,17 @@ CSSParserImpl::ProcessImport(const nsStr
 
   if (mChildLoader) {
     mChildLoader->LoadChildSheet(mSheet, url, aMedia, rule);
   }
 }
 
 // Parse the {} part of an @media or @-moz-document rule.
 PRBool
-CSSParserImpl::ParseGroupRule(nsICSSGroupRule* aRule,
+CSSParserImpl::ParseGroupRule(css::GroupRule* aRule,
                               RuleAppendFunc aAppendFunc,
                               void* aData)
 {
   // XXXbz this could use better error reporting throughout the method
   if (!ExpectSymbol('{', PR_TRUE)) {
     return PR_FALSE;
   }
 
@@ -2002,90 +1993,76 @@ CSSParserImpl::ParseGroupRule(nsICSSGrou
   return PR_TRUE;
 }
 
 // Parse a CSS2 media rule: "@media medium [, medium] { ... }"
 PRBool
 CSSParserImpl::ParseMediaRule(RuleAppendFunc aAppendFunc, void* aData)
 {
   nsRefPtr<nsMediaList> media = new nsMediaList();
-  if (!media) {
-    mScanner.SetLowLevelError(NS_ERROR_OUT_OF_MEMORY);
-    return PR_FALSE;
-  }
 
   if (GatherMedia(media, PR_TRUE)) {
     // XXXbz this could use better error reporting throughout the method
-    nsRefPtr<nsCSSMediaRule> rule(new nsCSSMediaRule());
+    nsRefPtr<css::MediaRule> rule = new css::MediaRule();
     // Append first, so when we do SetMedia() the rule
     // knows what its stylesheet is.
-    if (rule && ParseGroupRule(rule, aAppendFunc, aData)) {
+    if (ParseGroupRule(rule, aAppendFunc, aData)) {
       rule->SetMedia(media);
       return PR_TRUE;
     }
   }
 
   return PR_FALSE;
 }
 
 // Parse a @-moz-document rule.  This is like an @media rule, but instead
 // of a medium it has a nonempty list of items where each item is either
 // url(), url-prefix(), or domain().
 PRBool
 CSSParserImpl::ParseMozDocumentRule(RuleAppendFunc aAppendFunc, void* aData)
 {
-  nsCSSDocumentRule::URL *urls = nsnull;
-  nsCSSDocumentRule::URL **next = &urls;
+  css::DocumentRule::URL *urls = nsnull;
+  css::DocumentRule::URL **next = &urls;
   do {
     if (!GetToken(PR_TRUE) ||
         !(eCSSToken_URL == mToken.mType ||
           (eCSSToken_Function == mToken.mType &&
            (mToken.mIdent.LowerCaseEqualsLiteral("url-prefix") ||
             mToken.mIdent.LowerCaseEqualsLiteral("domain"))))) {
       REPORT_UNEXPECTED_TOKEN(PEMozDocRuleBadFunc);
       delete urls;
       return PR_FALSE;
     }
-    nsCSSDocumentRule::URL *cur = *next = new nsCSSDocumentRule::URL;
-    if (!cur) {
-      mScanner.SetLowLevelError(NS_ERROR_OUT_OF_MEMORY);
-      delete urls;
-      return PR_FALSE;
-    }
+    css::DocumentRule::URL *cur = *next = new css::DocumentRule::URL;
     next = &cur->next;
     if (mToken.mType == eCSSToken_URL) {
-      cur->func = nsCSSDocumentRule::eURL;
+      cur->func = css::DocumentRule::eURL;
       CopyUTF16toUTF8(mToken.mIdent, cur->url);
     } else {
       if (mToken.mIdent.LowerCaseEqualsLiteral("url-prefix")) {
-        cur->func = nsCSSDocumentRule::eURLPrefix;
+        cur->func = css::DocumentRule::eURLPrefix;
       } else if (mToken.mIdent.LowerCaseEqualsLiteral("domain")) {
-        cur->func = nsCSSDocumentRule::eDomain;
+        cur->func = css::DocumentRule::eDomain;
       }
 
       nsAutoString url;
       if (!GetURLInParens(url)) {
         REPORT_UNEXPECTED_TOKEN(PEMozDocRuleNotURI);
         delete urls;
         return PR_FALSE;
       }
 
       // We could try to make the URL (as long as it's not domain())
       // canonical and absolute with NS_NewURI and GetSpec, but I'm
       // inclined to think we shouldn't.
       CopyUTF16toUTF8(url, cur->url);
     }
   } while (ExpectSymbol(',', PR_TRUE));
 
-  nsRefPtr<nsCSSDocumentRule> rule(new nsCSSDocumentRule());
-  if (!rule) {
-    mScanner.SetLowLevelError(NS_ERROR_OUT_OF_MEMORY);
-    delete urls;
-    return PR_FALSE;
-  }
+  nsRefPtr<css::DocumentRule> rule = new css::DocumentRule();
   rule->SetURLs(urls);
 
   return ParseGroupRule(rule, aAppendFunc, aData);
 }
 
 // Parse a CSS3 namespace rule: "@namespace [prefix] STRING | URL;"
 PRBool
 CSSParserImpl::ParseNameSpaceRule(RuleAppendFunc aAppendFunc, void* aData)
@@ -2119,32 +2096,29 @@ CSSParserImpl::ParseNameSpaceRule(RuleAp
 }
 
 void
 CSSParserImpl::ProcessNameSpace(const nsString& aPrefix,
                                 const nsString& aURLSpec,
                                 RuleAppendFunc aAppendFunc,
                                 void* aData)
 {
-  nsRefPtr<css::NameSpaceRule> rule;
   nsCOMPtr<nsIAtom> prefix;
 
   if (!aPrefix.IsEmpty()) {
     prefix = do_GetAtom(aPrefix);
   }
 
-  NS_NewCSSNameSpaceRule(getter_AddRefs(rule), prefix, aURLSpec);
-  if (rule) {
-    (*aAppendFunc)(rule, aData);
-
-    // If this was the first namespace rule encountered, it will trigger
-    // creation of a namespace map.
-    if (!mNameSpaceMap) {
-      mNameSpaceMap = mSheet->GetNameSpaceMap();
-    }
+  nsRefPtr<css::NameSpaceRule> rule = new css::NameSpaceRule(prefix, aURLSpec);
+  (*aAppendFunc)(rule, aData);
+
+  // If this was the first namespace rule encountered, it will trigger
+  // creation of a namespace map.
+  if (!mNameSpaceMap) {
+    mNameSpaceMap = mSheet->GetNameSpaceMap();
   }
 }
 
 // font-face-rule: '@font-face' '{' font-description '}'
 // font-description: font-descriptor+
 PRBool
 CSSParserImpl::ParseFontFaceRule(RuleAppendFunc aAppendFunc, void* aData)
 {
@@ -2381,37 +2355,37 @@ CSSParserImpl::SkipRuleSet(PRBool aInsid
     } else if (eCSSToken_Function == tk->mType ||
                eCSSToken_Bad_URL == tk->mType) {
       SkipUntil(')');
     }
   } 
 }
 
 PRBool
-CSSParserImpl::PushGroup(nsICSSGroupRule* aRule)
-{
-  if (mGroupStack.AppendObject(aRule))
+CSSParserImpl::PushGroup(css::GroupRule* aRule)
+{
+  if (mGroupStack.AppendElement(aRule))
     return PR_TRUE;
 
   return PR_FALSE;
 }
 
 void
-CSSParserImpl::PopGroup(void)
-{
-  PRInt32 count = mGroupStack.Count();
+CSSParserImpl::PopGroup()
+{
+  PRUint32 count = mGroupStack.Length();
   if (0 < count) {
-    mGroupStack.RemoveObjectAt(count - 1);
+    mGroupStack.RemoveElementAt(count - 1);
   }
 }
 
 void
 CSSParserImpl::AppendRule(nsICSSRule* aRule)
 {
-  PRInt32 count = mGroupStack.Count();
+  PRUint32 count = mGroupStack.Length();
   if (0 < count) {
     mGroupStack[count - 1]->AppendStyleRule(aRule);
   }
   else {
     mSheet->AppendStyleRule(aRule);
   }
 }
 
@@ -2443,17 +2417,17 @@ CSSParserImpl::ParseRuleSet(RuleAppendFu
   slist->Dump();
   fputs("{\n", stdout);
   declaration->List();
   fputs("}\n", stdout);
 #endif
 
   // Translate the selector list and declaration block into style data
 
-  nsRefPtr<css::StyleRule> rule = NS_NewCSSStyleRule(slist, declaration);
+  nsRefPtr<css::StyleRule> rule = new css::StyleRule(slist, declaration);
   rule->SetLineNumber(linenum);
   (*aAppendFunc)(rule, aData);
 
   return PR_TRUE;
 }
 
 PRBool
 CSSParserImpl::ParseSelectorList(nsCSSSelectorList*& aListHead,
--- a/layout/style/nsCSSRuleProcessor.cpp
+++ b/layout/style/nsCSSRuleProcessor.cpp
@@ -54,17 +54,17 @@
 
 #include "nsCRT.h"
 #include "nsIAtom.h"
 #include "pldhash.h"
 #include "nsHashtable.h"
 #include "nsICSSPseudoComparator.h"
 #include "nsCSSRuleProcessor.h"
 #include "mozilla/css/StyleRule.h"
-#include "nsICSSGroupRule.h"
+#include "mozilla/css/GroupRule.h"
 #include "nsIDocument.h"
 #include "nsPresContext.h"
 #include "nsIEventStateManager.h"
 #include "nsGkAtoms.h"
 #include "nsString.h"
 #include "nsUnicharUtils.h"
 #include "nsDOMError.h"
 #include "nsRuleWalker.h"
@@ -2777,17 +2777,17 @@ CascadeRuleEnumFunc(nsICSSRule* aRule, v
       entry->data.mWeight = weight;
       // entry->data.mRules must be in forward order.
       entry->data.mRules.AppendElement(RuleSelectorPair(styleRule,
                                                         sel->mSelectors));
     }
   }
   else if (nsICSSRule::MEDIA_RULE == type ||
            nsICSSRule::DOCUMENT_RULE == type) {
-    nsICSSGroupRule* groupRule = (nsICSSGroupRule*)aRule;
+    css::GroupRule* groupRule = static_cast<css::GroupRule*>(aRule);
     if (groupRule->UseForPresentation(data->mPresContext, data->mCacheKey))
       if (!groupRule->EnumerateRulesForwards(CascadeRuleEnumFunc, aData))
         return PR_FALSE;
   }
   else if (nsICSSRule::FONT_FACE_RULE == type) {
     nsCSSFontFaceRule *fontFaceRule = static_cast<nsCSSFontFaceRule*>(aRule);
     nsFontFaceRuleContainer *ptr = data->mFontFaceRules.AppendElement();
     if (!ptr)
--- a/layout/style/nsCSSRules.cpp
+++ b/layout/style/nsCSSRules.cpp
@@ -47,330 +47,307 @@
 #include "nsIAtom.h"
 #include "nsIURL.h"
 
 #include "nsCSSProps.h"
 #include "nsCSSStyleSheet.h"
 
 #include "nsCOMPtr.h"
 #include "nsIDOMCSSStyleSheet.h"
-#include "nsIDOMCSSMediaRule.h"
-#include "nsIDOMCSSMozDocumentRule.h"
-#include "nsIDOMCSSCharsetRule.h"
-#include "nsIDOMCSSStyleDeclaration.h"
 #include "nsIMediaList.h"
 #include "nsICSSRuleList.h"
 #include "nsIDocument.h"
 #include "nsPresContext.h"
 
 #include "nsContentUtils.h"
 #include "nsStyleConsts.h"
 #include "nsDOMError.h"
 #include "nsStyleUtil.h"
 #include "mozilla/css/Declaration.h"
 #include "nsPrintfCString.h"
 
 namespace css = mozilla::css;
 
 #define IMPL_STYLE_RULE_INHERIT(_class, super) \
-/* virtual */ already_AddRefed<nsIStyleSheet> _class::GetStyleSheet() const { return super::GetStyleSheet(); }  \
-/* virtual */ void _class::SetStyleSheet(nsCSSStyleSheet* aSheet) { super::SetStyleSheet(aSheet); }  \
-/* virtual */ void _class::SetParentRule(nsICSSGroupRule* aRule) { super::SetParentRule(aRule); }  \
 nsIDOMCSSRule* _class::GetDOMRuleWeak(nsresult *aResult) { *aResult = NS_OK; return this; }  \
 /* virtual */ void _class::MapRuleInfoInto(nsRuleData* aRuleData) { }
 
 #define IMPL_STYLE_RULE_INHERIT2(_class, super) \
-/* virtual */ already_AddRefed<nsIStyleSheet> _class::GetStyleSheet() const { return super::GetStyleSheet(); }  \
-/* virtual */ void  _class::SetParentRule(nsICSSGroupRule* aRule) { super::SetParentRule(aRule); }  \
 /* virtual */ void _class::MapRuleInfoInto(nsRuleData* aRuleData) { }
 
+
+// base class for all rule types in a CSS style sheet
+
+namespace mozilla {
+namespace css {
+
+NS_IMPL_ADDREF(Rule)
+NS_IMPL_RELEASE(Rule)
+
+/* virtual */ nsIStyleSheet*
+Rule::GetStyleSheet() const
+{
+  return mSheet;
+}
+
+/* virtual */ void
+Rule::SetStyleSheet(nsCSSStyleSheet* aSheet)
+{
+  // We don't reference count this up reference. The style sheet
+  // will tell us when it's going away or when we're detached from
+  // it.
+  mSheet = aSheet;
+}
+
+/* virtual */ void
+Rule::SetParentRule(css::GroupRule* aRule)
+{
+  // We don't reference count this up reference. The group rule
+  // will tell us when it's going away or when we're detached from
+  // it.
+  mParentRule = aRule;
+}
+
+} // namespace css
+} // namespace mozilla
+
+
 // -------------------------------
 // Style Rule List for group rules
 //
-class CSSGroupRuleRuleListImpl : public nsICSSRuleList
+
+namespace mozilla {
+namespace css {
+
+class NS_FINAL_CLASS GroupRuleRuleList : public nsICSSRuleList
 {
 public:
-  CSSGroupRuleRuleListImpl(nsICSSGroupRule *aGroupRule);
+  GroupRuleRuleList(GroupRule *aGroupRule);
 
   NS_DECL_ISUPPORTS
 
   NS_DECL_NSIDOMCSSRULELIST
 
   virtual nsIDOMCSSRule* GetItemAt(PRUint32 aIndex, nsresult* aResult);
 
   void DropReference() { mGroupRule = nsnull; }
 
-protected:
-  virtual ~CSSGroupRuleRuleListImpl(void);
+private:
+  ~GroupRuleRuleList();
 
 private:
-  nsICSSGroupRule* mGroupRule;
+  GroupRule* mGroupRule;
 };
 
-CSSGroupRuleRuleListImpl::CSSGroupRuleRuleListImpl(nsICSSGroupRule *aGroupRule)
+GroupRuleRuleList::GroupRuleRuleList(GroupRule *aGroupRule)
 {
   // Not reference counted to avoid circular references.
   // The rule will tell us when its going away.
   mGroupRule = aGroupRule;
 }
 
-CSSGroupRuleRuleListImpl::~CSSGroupRuleRuleListImpl()
+GroupRuleRuleList::~GroupRuleRuleList()
 {
 }
 
-DOMCI_DATA(CSSGroupRuleRuleList, CSSGroupRuleRuleListImpl)
-
 // QueryInterface implementation for CSSGroupRuleRuleList
-NS_INTERFACE_MAP_BEGIN(CSSGroupRuleRuleListImpl)
+NS_INTERFACE_MAP_BEGIN(GroupRuleRuleList)
   NS_INTERFACE_MAP_ENTRY(nsICSSRuleList)
   NS_INTERFACE_MAP_ENTRY(nsIDOMCSSRuleList)
   NS_INTERFACE_MAP_ENTRY(nsISupports)
   NS_DOM_INTERFACE_MAP_ENTRY_CLASSINFO(CSSGroupRuleRuleList)
 NS_INTERFACE_MAP_END
 
 
-NS_IMPL_ADDREF(CSSGroupRuleRuleListImpl)
-NS_IMPL_RELEASE(CSSGroupRuleRuleListImpl)
+NS_IMPL_ADDREF(GroupRuleRuleList)
+NS_IMPL_RELEASE(GroupRuleRuleList)
 
-NS_IMETHODIMP    
-CSSGroupRuleRuleListImpl::GetLength(PRUint32* aLength)
+NS_IMETHODIMP
+GroupRuleRuleList::GetLength(PRUint32* aLength)
 {
   if (mGroupRule) {
-    PRInt32 count;
-    mGroupRule->StyleRuleCount(count);
-    *aLength = (PRUint32)count;
+    *aLength = (PRUint32)mGroupRule->StyleRuleCount();
   } else {
     *aLength = 0;
   }
 
   return NS_OK;
 }
 
-nsIDOMCSSRule*    
-CSSGroupRuleRuleListImpl::GetItemAt(PRUint32 aIndex, nsresult* aResult)
+nsIDOMCSSRule*
+GroupRuleRuleList::GetItemAt(PRUint32 aIndex, nsresult* aResult)
 {
-  nsresult result = NS_OK;
+  *aResult = NS_OK;
 
   if (mGroupRule) {
-    nsCOMPtr<nsICSSRule> rule;
-
-    result = mGroupRule->GetStyleRuleAt(aIndex, *getter_AddRefs(rule));
+    nsCOMPtr<nsICSSRule> rule = mGroupRule->GetStyleRuleAt(aIndex);
     if (rule) {
       return rule->GetDOMRuleWeak(aResult);
     }
-    if (result == NS_ERROR_ILLEGAL_VALUE) {
-      result = NS_OK; // per spec: "Return Value ... null if ... not a valid index."
-    }
   }
 
-  *aResult = result;
-
   return nsnull;
 }
 
-NS_IMETHODIMP    
-CSSGroupRuleRuleListImpl::Item(PRUint32 aIndex, nsIDOMCSSRule** aReturn)
+NS_IMETHODIMP
+GroupRuleRuleList::Item(PRUint32 aIndex, nsIDOMCSSRule** aReturn)
 {
   nsresult rv;
   nsIDOMCSSRule* rule = GetItemAt(aIndex, &rv);
   if (!rule) {
     *aReturn = nsnull;
     return rv;
   }
 
   NS_ADDREF(*aReturn = rule);
   return NS_OK;
 }
 
+} // namespace css
+} // namespace mozilla
+
+// Must be outside the namespace
+DOMCI_DATA(CSSGroupRuleRuleList, css::GroupRuleRuleList)
+
 // -------------------------------------------
 // CharsetRule
 //
-class NS_FINAL_CLASS CSSCharsetRuleImpl : public nsCSSRule,
-                                          public nsICSSRule,
-                                          public nsIDOMCSSCharsetRule
-{
-public:
-  CSSCharsetRuleImpl(const nsAString& aEncoding);
-  CSSCharsetRuleImpl(const CSSCharsetRuleImpl& aCopy);
-private:
-  ~CSSCharsetRuleImpl() {}
-public:
-  NS_DECL_ISUPPORTS
 
-  DECL_STYLE_RULE_INHERIT
+// Must be outside namespace
+DOMCI_DATA(CSSCharsetRule, css::CharsetRule)
 
-  // nsIStyleRule methods
-#ifdef DEBUG
-  virtual void List(FILE* out = stdout, PRInt32 aIndent = 0) const;
-#endif
-
-  // nsICSSRule methods
-  virtual PRInt32 GetType() const;
-  virtual already_AddRefed<nsICSSRule> Clone() const;
+namespace mozilla {
+namespace css {
 
-  // nsIDOMCSSRule interface
-  NS_DECL_NSIDOMCSSRULE
-  
-  // nsIDOMCSSCharsetRule methods
-  NS_IMETHOD GetEncoding(nsAString& aEncoding);
-  NS_IMETHOD SetEncoding(const nsAString& aEncoding);
-
-protected:
-  nsString  mEncoding;
-};
-
-CSSCharsetRuleImpl::CSSCharsetRuleImpl(const nsAString& aEncoding)
-  : nsCSSRule(),
+CharsetRule::CharsetRule(const nsAString& aEncoding)
+  : css::Rule(),
     mEncoding(aEncoding)
 {
 }
 
-CSSCharsetRuleImpl::CSSCharsetRuleImpl(const CSSCharsetRuleImpl& aCopy)
-  : nsCSSRule(aCopy),
+CharsetRule::CharsetRule(const CharsetRule& aCopy)
+  : css::Rule(aCopy),
     mEncoding(aCopy.mEncoding)
 {
 }
 
-NS_IMPL_ADDREF(CSSCharsetRuleImpl)
-NS_IMPL_RELEASE(CSSCharsetRuleImpl)
+NS_IMPL_ADDREF_INHERITED(CharsetRule, css::Rule)
+NS_IMPL_RELEASE_INHERITED(CharsetRule, css::Rule)
 
-DOMCI_DATA(CSSCharsetRule, CSSCharsetRuleImpl)
-
-// QueryInterface implementation for CSSCharsetRuleImpl
-NS_INTERFACE_MAP_BEGIN(CSSCharsetRuleImpl)
+// QueryInterface implementation for CharsetRule
+NS_INTERFACE_MAP_BEGIN(CharsetRule)
   NS_INTERFACE_MAP_ENTRY(nsICSSRule)
   NS_INTERFACE_MAP_ENTRY(nsIStyleRule)
   NS_INTERFACE_MAP_ENTRY(nsIDOMCSSRule)
   NS_INTERFACE_MAP_ENTRY(nsIDOMCSSCharsetRule)
   NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsICSSRule)
   NS_DOM_INTERFACE_MAP_ENTRY_CLASSINFO(CSSCharsetRule)
 NS_INTERFACE_MAP_END
 
-IMPL_STYLE_RULE_INHERIT(CSSCharsetRuleImpl, nsCSSRule)
+IMPL_STYLE_RULE_INHERIT(CharsetRule, css::Rule)
 
 #ifdef DEBUG
 /* virtual */ void
-CSSCharsetRuleImpl::List(FILE* out, PRInt32 aIndent) const
+CharsetRule::List(FILE* out, PRInt32 aIndent) const
 {
   // Indent
   for (PRInt32 indent = aIndent; --indent >= 0; ) fputs("  ", out);
 
   fputs("@charset \"", out);
   fputs(NS_LossyConvertUTF16toASCII(mEncoding).get(), out);
   fputs("\"\n", out);
 }
 #endif
 
 /* virtual */ PRInt32
-CSSCharsetRuleImpl::GetType() const
+CharsetRule::GetType() const
 {
   return nsICSSRule::CHARSET_RULE;
 }
 
 /* virtual */ already_AddRefed<nsICSSRule>
-CSSCharsetRuleImpl::Clone() const
+CharsetRule::Clone() const
 {
-  nsCOMPtr<nsICSSRule> clone = new CSSCharsetRuleImpl(*this);
+  nsCOMPtr<nsICSSRule> clone = new CharsetRule(*this);
   return clone.forget();
 }
 
 NS_IMETHODIMP
-CSSCharsetRuleImpl::GetEncoding(nsAString& aEncoding)
+CharsetRule::GetEncoding(nsAString& aEncoding)
 {
   aEncoding = mEncoding;
   return NS_OK;
 }
 
 NS_IMETHODIMP
-CSSCharsetRuleImpl::SetEncoding(const nsAString& aEncoding)
+CharsetRule::SetEncoding(const nsAString& aEncoding)
 {
   mEncoding = aEncoding;
   return NS_OK;
 }
 
-
-nsresult
-NS_NewCSSCharsetRule(nsICSSRule** aInstancePtrResult, const nsAString& aEncoding)
-{
-  if (! aInstancePtrResult) {
-    return NS_ERROR_NULL_POINTER;
-  }
-
-  CSSCharsetRuleImpl* it = new CSSCharsetRuleImpl(aEncoding);
-
-  if (!it) {
-    return NS_ERROR_OUT_OF_MEMORY;
-  }
-
-  NS_ADDREF(*aInstancePtrResult = it);
-  return NS_OK;
-}
-
 NS_IMETHODIMP
-CSSCharsetRuleImpl::GetType(PRUint16* aType)
+CharsetRule::GetType(PRUint16* aType)
 {
   *aType = nsIDOMCSSRule::CHARSET_RULE;
   return NS_OK;
 }
 
 NS_IMETHODIMP
-CSSCharsetRuleImpl::GetCssText(nsAString& aCssText)
+CharsetRule::GetCssText(nsAString& aCssText)
 {
   aCssText.AssignLiteral("@charset \"");
   aCssText.Append(mEncoding);
   aCssText.AppendLiteral("\";");
   return NS_OK;
 }
 
 NS_IMETHODIMP
-CSSCharsetRuleImpl::SetCssText(const nsAString& aCssText)
+CharsetRule::SetCssText(const nsAString& aCssText)
 {
   return NS_ERROR_NOT_IMPLEMENTED;
 }
 
 NS_IMETHODIMP
-CSSCharsetRuleImpl::GetParentStyleSheet(nsIDOMCSSStyleSheet** aSheet)
+CharsetRule::GetParentStyleSheet(nsIDOMCSSStyleSheet** aSheet)
 {
   NS_ENSURE_ARG_POINTER(aSheet);
 
   NS_IF_ADDREF(*aSheet = mSheet);
   return NS_OK;
 }
 
 NS_IMETHODIMP
-CSSCharsetRuleImpl::GetParentRule(nsIDOMCSSRule** aParentRule)
+CharsetRule::GetParentRule(nsIDOMCSSRule** aParentRule)
 {
   if (mParentRule) {
     return mParentRule->GetDOMRule(aParentRule);
   }
   *aParentRule = nsnull;
   return NS_OK;
 }
 
 
 
 // -------------------------------------------
 // ImportRule
 //
 
-namespace mozilla {
-namespace css {
-
-ImportRule::ImportRule(nsMediaList* aMedia)
-  : nsCSSRule()
-  , mURLSpec()
+ImportRule::ImportRule(nsMediaList* aMedia, const nsString& aURLSpec)
+  : Rule()
+  , mURLSpec(aURLSpec)
   , mMedia(aMedia)
 {
   // XXXbz This is really silly.... the mMedia here will be replaced
   // with itself if we manage to load a sheet.  Which should really
   // never fail nowadays, in sane cases.
 }
 
 ImportRule::ImportRule(const ImportRule& aCopy)
-  : nsCSSRule(aCopy),
+  : Rule(aCopy),
     mURLSpec(aCopy.mURLSpec)
 {
   // Whether or not an @import rule has a null sheet is a permanent
   // property of that @import rule, since it is null only if the target
   // sheet failed security checks.
   if (aCopy.mChildSheet) {
     nsRefPtr<nsCSSStyleSheet> sheet =
       aCopy.mChildSheet->Clone(nsnull, this, nsnull, nsnull);
@@ -381,30 +358,30 @@ ImportRule::ImportRule(const ImportRule&
 
 ImportRule::~ImportRule()
 {
   if (mChildSheet) {
     mChildSheet->SetOwnerRule(nsnull);
   }
 }
 
-NS_IMPL_ADDREF(ImportRule)
-NS_IMPL_RELEASE(ImportRule)
+NS_IMPL_ADDREF_INHERITED(ImportRule, Rule)
+NS_IMPL_RELEASE_INHERITED(ImportRule, Rule)
 
 // QueryInterface implementation for ImportRule
 NS_INTERFACE_MAP_BEGIN(ImportRule)
   NS_INTERFACE_MAP_ENTRY(nsICSSRule)
   NS_INTERFACE_MAP_ENTRY(nsIStyleRule)
   NS_INTERFACE_MAP_ENTRY(nsIDOMCSSRule)
   NS_INTERFACE_MAP_ENTRY(nsIDOMCSSImportRule)
   NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsICSSRule)
   NS_DOM_INTERFACE_MAP_ENTRY_CLASSINFO(CSSImportRule)
 NS_INTERFACE_MAP_END
 
-IMPL_STYLE_RULE_INHERIT(ImportRule, nsCSSRule)
+IMPL_STYLE_RULE_INHERIT(ImportRule, Rule)
 
 #ifdef DEBUG
 /* virtual */ void
 ImportRule::List(FILE* out, PRInt32 aIndent) const
 {
   // Indent
   for (PRInt32 indent = aIndent; --indent >= 0; ) fputs("  ", out);
 
@@ -427,36 +404,16 @@ ImportRule::GetType() const
 
 /* virtual */ already_AddRefed<nsICSSRule>
 ImportRule::Clone() const
 {
   nsCOMPtr<nsICSSRule> clone = new ImportRule(*this);
   return clone.forget();
 }
 
-nsresult
-ImportRule::SetMedia(const nsString& aMedia)
-{
-  if (mMedia) {
-    return mMedia->SetText(aMedia);
-  } else {
-    return NS_OK;
-  }
-}
-
-void
-ImportRule::GetMedia(nsString& aMedia) const
-{
-  if (mMedia) {
-    mMedia->GetText(aMedia);
-  } else {
-    aMedia.Truncate();
-  }
-}
-
 void
 ImportRule::SetSheet(nsCSSStyleSheet* aSheet)
 {
   NS_PRECONDITION(aSheet, "null arg");
 
   // set the new sheet
   mChildSheet = aSheet;
   aSheet->SetOwnerRule(this);
@@ -545,190 +502,155 @@ ImportRule::GetStyleSheet(nsIDOMCSSStyle
 }
 
 } // namespace css
 } // namespace mozilla
 
 // must be outside the namespace
 DOMCI_DATA(CSSImportRule, css::ImportRule)
 
-nsresult
-NS_NewCSSImportRule(css::ImportRule** aInstancePtrResult,
-                    const nsString& aURLSpec,
-                    nsMediaList* aMedia)
-{
-  NS_ENSURE_ARG_POINTER(aInstancePtrResult);
-
-  css::ImportRule* it = new css::ImportRule(aMedia);
-
-  if (!it) {
-    return NS_ERROR_OUT_OF_MEMORY;
-  }
-
-  it->SetURLSpec(aURLSpec);
-  NS_ADDREF(*aInstancePtrResult = it);
-  return NS_OK;
-}
-
-nsCSSGroupRule::nsCSSGroupRule()
-  : nsCSSRule()
-  , mRuleCollection(nsnull)
-{
-}
-
 static PRBool
 CloneRuleInto(nsICSSRule* aRule, void* aArray)
 {
   nsCOMPtr<nsICSSRule> clone = aRule->Clone();
   static_cast<nsCOMArray<nsICSSRule>*>(aArray)->AppendObject(clone);
   return PR_TRUE;
 }
 
+namespace mozilla {
+namespace css {
+
+GroupRule::GroupRule()
+  : Rule()
+{
+}
+
 static PRBool
 SetParentRuleReference(nsICSSRule* aRule, void* aParentRule)
 {
-  nsCSSGroupRule* parentRule = static_cast<nsCSSGroupRule*>(aParentRule);
+  GroupRule* parentRule = static_cast<GroupRule*>(aParentRule);
   aRule->SetParentRule(parentRule);
   return PR_TRUE;
 }
 
-nsCSSGroupRule::nsCSSGroupRule(const nsCSSGroupRule& aCopy)
-  : nsCSSRule(aCopy)
-  , mRuleCollection(nsnull) // lazily constructed
+GroupRule::GroupRule(const GroupRule& aCopy)
+  : Rule(aCopy)
 {
-  const_cast<nsCSSGroupRule&>(aCopy).mRules.EnumerateForwards(CloneRuleInto, &mRules);
+  const_cast<GroupRule&>(aCopy).mRules.EnumerateForwards(CloneRuleInto, &mRules);
   mRules.EnumerateForwards(SetParentRuleReference, this);
 }
 
-nsCSSGroupRule::~nsCSSGroupRule()
+GroupRule::~GroupRule()
 {
   mRules.EnumerateForwards(SetParentRuleReference, nsnull);
   if (mRuleCollection) {
     mRuleCollection->DropReference();
-    NS_RELEASE(mRuleCollection);
   }
 }
 
-NS_IMPL_ADDREF(nsCSSGroupRule)
-NS_IMPL_RELEASE(nsCSSGroupRule)
-
-IMPL_STYLE_RULE_INHERIT2(nsCSSGroupRule, nsCSSRule)
+IMPL_STYLE_RULE_INHERIT2(GroupRule, Rule)
 
 static PRBool
 SetStyleSheetReference(nsICSSRule* aRule, void* aSheet)
 {
   nsCSSStyleSheet* sheet = (nsCSSStyleSheet*)aSheet;
   aRule->SetStyleSheet(sheet);
   return PR_TRUE;
 }
 
 /* virtual */ void
-nsCSSGroupRule::SetStyleSheet(nsCSSStyleSheet* aSheet)
+GroupRule::SetStyleSheet(nsCSSStyleSheet* aSheet)
 {
   mRules.EnumerateForwards(SetStyleSheetReference, aSheet);
-  nsCSSRule::SetStyleSheet(aSheet);
+  Rule::SetStyleSheet(aSheet);
 }
 
 #ifdef DEBUG
 /* virtual */ void
-nsCSSGroupRule::List(FILE* out, PRInt32 aIndent) const
+GroupRule::List(FILE* out, PRInt32 aIndent) const
 {
   fputs(" {\n", out);
 
   for (PRInt32 index = 0, count = mRules.Count(); index < count; ++index) {
     mRules.ObjectAt(index)->List(out, aIndent + 1);
   }
   fputs("}\n", out);
 }
 #endif
 
-NS_IMETHODIMP
-nsCSSGroupRule::AppendStyleRule(nsICSSRule* aRule)
+void
+GroupRule::AppendStyleRule(nsICSSRule* aRule)
 {
   mRules.AppendObject(aRule);
   aRule->SetStyleSheet(mSheet);
   aRule->SetParentRule(this);
   if (mSheet) {
     // XXXldb Shouldn't we be using |WillDirty| and |DidDirty| (and
     // shouldn't |SetModified| be removed?
     mSheet->SetModified(PR_TRUE);
   }
-  return NS_OK;
-}
-
-NS_IMETHODIMP
-nsCSSGroupRule::StyleRuleCount(PRInt32& aCount) const
-{
-  aCount = mRules.Count();
-  return NS_OK;
 }
 
-NS_IMETHODIMP
-nsCSSGroupRule::GetStyleRuleAt(PRInt32 aIndex, nsICSSRule*& aRule) const
+nsICSSRule*
+GroupRule::GetStyleRuleAt(PRInt32 aIndex) const
 {
-  if (aIndex < 0 || aIndex >= mRules.Count()) {
-    aRule = nsnull;
-    return NS_ERROR_ILLEGAL_VALUE;
-  }
-
-  NS_ADDREF(aRule = mRules.ObjectAt(aIndex));
-  return NS_OK;
+  return mRules.SafeObjectAt(aIndex);
 }
 
-NS_IMETHODIMP_(PRBool)
-nsCSSGroupRule::EnumerateRulesForwards(RuleEnumFunc aFunc, void * aData) const
+PRBool
+GroupRule::EnumerateRulesForwards(RuleEnumFunc aFunc, void * aData) const
 {
   return
-    const_cast<nsCSSGroupRule*>(this)->mRules.EnumerateForwards(aFunc, aData);
+    const_cast<GroupRule*>(this)->mRules.EnumerateForwards(aFunc, aData);
 }
 
 /*
  * The next two methods (DeleteStyleRuleAt and InsertStyleRulesAt)
  * should never be called unless you have first called WillDirty() on
  * the parents tylesheet.  After they are called, DidDirty() needs to
  * be called on the sheet
  */
-NS_IMETHODIMP
-nsCSSGroupRule::DeleteStyleRuleAt(PRUint32 aIndex)
+nsresult
+GroupRule::DeleteStyleRuleAt(PRUint32 aIndex)
 {
   nsICSSRule* rule = mRules.SafeObjectAt(aIndex);
   if (rule) {
     rule->SetStyleSheet(nsnull);
     rule->SetParentRule(nsnull);
   }
   return mRules.RemoveObjectAt(aIndex) ? NS_OK : NS_ERROR_ILLEGAL_VALUE;
 }
 
-NS_IMETHODIMP
-nsCSSGroupRule::InsertStyleRulesAt(PRUint32 aIndex,
-                                   nsCOMArray<nsICSSRule>& aRules)
+nsresult
+GroupRule::InsertStyleRulesAt(PRUint32 aIndex,
+                              nsCOMArray<nsICSSRule>& aRules)
 {
   aRules.EnumerateForwards(SetStyleSheetReference, mSheet);
   aRules.EnumerateForwards(SetParentRuleReference, this);
   if (! mRules.InsertObjectsAt(aRules, aIndex)) {
     return NS_ERROR_FAILURE;
   }
   return NS_OK;
 }
 
-NS_IMETHODIMP
-nsCSSGroupRule::ReplaceStyleRule(nsICSSRule* aOld, nsICSSRule* aNew)
+nsresult
+GroupRule::ReplaceStyleRule(nsICSSRule* aOld, nsICSSRule* aNew)
 {
   PRInt32 index = mRules.IndexOf(aOld);
   NS_ENSURE_TRUE(index != -1, NS_ERROR_UNEXPECTED);
   mRules.ReplaceObjectAt(aNew, index);
   aNew->SetStyleSheet(mSheet);
   aNew->SetParentRule(this);
   aOld->SetStyleSheet(nsnull);
   aOld->SetParentRule(nsnull);
   return NS_OK;
 }
 
 nsresult
-nsCSSGroupRule::AppendRulesToCssText(nsAString& aCssText)
+GroupRule::AppendRulesToCssText(nsAString& aCssText)
 {
   aCssText.AppendLiteral(" {\n");
 
   // get all the rules
   for (PRInt32 index = 0, count = mRules.Count(); index < count; ++index) {
     nsICSSRule* rule = mRules.ObjectAt(index);
     nsCOMPtr<nsIDOMCSSRule> domRule;
     rule->GetDOMRule(getter_AddRefs(domRule));
@@ -742,284 +664,277 @@ nsCSSGroupRule::AppendRulesToCssText(nsA
   }
 
   aCssText.AppendLiteral("}");
   
   return NS_OK;
 }
 
 nsresult
-nsCSSGroupRule::GetParentStyleSheet(nsIDOMCSSStyleSheet** aSheet)
-{
-  NS_IF_ADDREF(*aSheet = mSheet);
-  return NS_OK;
-}
-
-nsresult
-nsCSSGroupRule::GetParentRule(nsIDOMCSSRule** aParentRule)
+GroupRule::GetParentRule(nsIDOMCSSRule** aParentRule)
 {
   if (mParentRule) {
     return mParentRule->GetDOMRule(aParentRule);
   }
   *aParentRule = nsnull;
   return NS_OK;
 }
 
 // nsIDOMCSSMediaRule or nsIDOMCSSMozDocumentRule methods
-nsresult
-nsCSSGroupRule::GetCssRules(nsIDOMCSSRuleList* *aRuleList)
+nsIDOMCSSRuleList*
+GroupRule::GetCssRules()
 {
   if (!mRuleCollection) {
-    mRuleCollection = new CSSGroupRuleRuleListImpl(this);
-    if (!mRuleCollection) {
-      return NS_ERROR_OUT_OF_MEMORY;
-    }
-    NS_ADDREF(mRuleCollection);
+    mRuleCollection = new css::GroupRuleRuleList(this);
   }
 
-  NS_ADDREF(*aRuleList = mRuleCollection);
-  return NS_OK;
+  return mRuleCollection;
 }
 
 nsresult
-nsCSSGroupRule::InsertRule(const nsAString & aRule, PRUint32 aIndex, PRUint32* _retval)
+GroupRule::InsertRule(const nsAString & aRule, PRUint32 aIndex, PRUint32* _retval)
 {
   NS_ENSURE_TRUE(mSheet, NS_ERROR_FAILURE);
   
   if (aIndex > PRUint32(mRules.Count()))
     return NS_ERROR_DOM_INDEX_SIZE_ERR;
 
   NS_ASSERTION(PRUint32(mRules.Count()) <= PR_INT32_MAX,
                "Too many style rules!");
 
   return mSheet->InsertRuleIntoGroup(aRule, this, aIndex, _retval);
 }
 
 nsresult
-nsCSSGroupRule::DeleteRule(PRUint32 aIndex)
+GroupRule::DeleteRule(PRUint32 aIndex)
 {
   NS_ENSURE_TRUE(mSheet, NS_ERROR_FAILURE);
 
   if (aIndex >= PRUint32(mRules.Count()))
     return NS_ERROR_DOM_INDEX_SIZE_ERR;
 
   NS_ASSERTION(PRUint32(mRules.Count()) <= PR_INT32_MAX,
                "Too many style rules!");
 
   return mSheet->DeleteRuleFromGroup(this, aIndex);
 }
 
+
 // -------------------------------------------
 // nsICSSMediaRule
 //
-nsCSSMediaRule::nsCSSMediaRule()
+MediaRule::MediaRule()
 {
 }
 
-nsCSSMediaRule::nsCSSMediaRule(const nsCSSMediaRule& aCopy)
-  : nsCSSGroupRule(aCopy)
+MediaRule::MediaRule(const MediaRule& aCopy)
+  : GroupRule(aCopy)
 {
   if (aCopy.mMedia) {
     aCopy.mMedia->Clone(getter_AddRefs(mMedia));
     if (mMedia) {
       // XXXldb This doesn't really make sense.
       mMedia->SetStyleSheet(aCopy.mSheet);
     }
   }
 }
 
-nsCSSMediaRule::~nsCSSMediaRule()
+MediaRule::~MediaRule()
 {
   if (mMedia) {
     mMedia->SetStyleSheet(nsnull);
   }
 }
 
-NS_IMPL_ADDREF_INHERITED(nsCSSMediaRule, nsCSSGroupRule)
-NS_IMPL_RELEASE_INHERITED(nsCSSMediaRule, nsCSSGroupRule)
+NS_IMPL_ADDREF_INHERITED(MediaRule, Rule)
+NS_IMPL_RELEASE_INHERITED(MediaRule, Rule)
 
-DOMCI_DATA(CSSMediaRule, nsCSSMediaRule)
-
-// QueryInterface implementation for nsCSSMediaRule
-NS_INTERFACE_MAP_BEGIN(nsCSSMediaRule)
-  NS_INTERFACE_MAP_ENTRY(nsICSSGroupRule)
+// QueryInterface implementation for MediaRule
+NS_INTERFACE_MAP_BEGIN(MediaRule)
   NS_INTERFACE_MAP_ENTRY(nsICSSRule)
   NS_INTERFACE_MAP_ENTRY(nsIStyleRule)
   NS_INTERFACE_MAP_ENTRY(nsIDOMCSSRule)
   NS_INTERFACE_MAP_ENTRY(nsIDOMCSSMediaRule)
-  NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsCSSGroupRule)
+  NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsICSSRule)
   NS_DOM_INTERFACE_MAP_ENTRY_CLASSINFO(CSSMediaRule)
 NS_INTERFACE_MAP_END
 
 /* virtual */ void
-nsCSSMediaRule::SetStyleSheet(nsCSSStyleSheet* aSheet)
+MediaRule::SetStyleSheet(nsCSSStyleSheet* aSheet)
 {
   if (mMedia) {
     // Set to null so it knows it's leaving one sheet and joining another.
     mMedia->SetStyleSheet(nsnull);
     mMedia->SetStyleSheet(aSheet);
   }
 
-  nsCSSGroupRule::SetStyleSheet(aSheet);
+  GroupRule::SetStyleSheet(aSheet);
 }
 
 #ifdef DEBUG
 /* virtual */ void
-nsCSSMediaRule::List(FILE* out, PRInt32 aIndent) const
+MediaRule::List(FILE* out, PRInt32 aIndent) const
 {
   for (PRInt32 indent = aIndent; --indent >= 0; ) fputs("  ", out);
 
   nsAutoString  buffer;
 
   fputs("@media ", out);
 
   if (mMedia) {
     nsAutoString mediaText;
     mMedia->GetText(mediaText);
     fputs(NS_LossyConvertUTF16toASCII(mediaText).get(), out);
   }
 
-  nsCSSGroupRule::List(out, aIndent);
+  GroupRule::List(out, aIndent);
 }
 #endif
 
 /* virtual */ PRInt32
-nsCSSMediaRule::GetType() const
+MediaRule::GetType() const
 {
   return nsICSSRule::MEDIA_RULE;
 }
 
 /* virtual */ already_AddRefed<nsICSSRule>
-nsCSSMediaRule::Clone() const
+MediaRule::Clone() const
 {
-  nsCOMPtr<nsICSSRule> clone = new nsCSSMediaRule(*this);
+  nsCOMPtr<nsICSSRule> clone = new MediaRule(*this);
   return clone.forget();
 }
 
 nsresult
-nsCSSMediaRule::SetMedia(nsMediaList* aMedia)
+MediaRule::SetMedia(nsMediaList* aMedia)
 {
   mMedia = aMedia;
   if (aMedia)
     mMedia->SetStyleSheet(mSheet);
   return NS_OK;
 }
 
 // nsIDOMCSSRule methods
 NS_IMETHODIMP
-nsCSSMediaRule::GetType(PRUint16* aType)
+MediaRule::GetType(PRUint16* aType)
 {
   *aType = nsIDOMCSSRule::MEDIA_RULE;
   return NS_OK;
 }
 
 NS_IMETHODIMP
-nsCSSMediaRule::GetCssText(nsAString& aCssText)
+MediaRule::GetCssText(nsAString& aCssText)
 {
   aCssText.AssignLiteral("@media ");
   // get all the media
   if (mMedia) {
     nsAutoString mediaText;
     mMedia->GetText(mediaText);
     aCssText.Append(mediaText);
   }
 
-  return nsCSSGroupRule::AppendRulesToCssText(aCssText);
+  return GroupRule::AppendRulesToCssText(aCssText);
 }
 
 NS_IMETHODIMP
-nsCSSMediaRule::SetCssText(const nsAString& aCssText)
+MediaRule::SetCssText(const nsAString& aCssText)
 {
   return NS_ERROR_NOT_IMPLEMENTED;
 }
 
 NS_IMETHODIMP
-nsCSSMediaRule::GetParentStyleSheet(nsIDOMCSSStyleSheet** aSheet)
+MediaRule::GetParentStyleSheet(nsIDOMCSSStyleSheet** aSheet)
 {
-  return nsCSSGroupRule::GetParentStyleSheet(aSheet);
+  NS_IF_ADDREF(*aSheet = mSheet);
+  return NS_OK;
 }
 
 NS_IMETHODIMP
-nsCSSMediaRule::GetParentRule(nsIDOMCSSRule** aParentRule)
+MediaRule::GetParentRule(nsIDOMCSSRule** aParentRule)
 {
-  return nsCSSGroupRule::GetParentRule(aParentRule);
+  return GroupRule::GetParentRule(aParentRule);
 }
 
 // nsIDOMCSSMediaRule methods
 NS_IMETHODIMP
-nsCSSMediaRule::GetMedia(nsIDOMMediaList* *aMedia)
+MediaRule::GetMedia(nsIDOMMediaList* *aMedia)
 {
   NS_ENSURE_ARG_POINTER(aMedia);
   NS_IF_ADDREF(*aMedia = mMedia);
   return NS_OK;
 }
 
 NS_IMETHODIMP
-nsCSSMediaRule::GetCssRules(nsIDOMCSSRuleList* *aRuleList)
+MediaRule::GetCssRules(nsIDOMCSSRuleList* *aRuleList)
 {
-  return nsCSSGroupRule::GetCssRules(aRuleList);
+  NS_ADDREF(*aRuleList = GroupRule::GetCssRules());
+  return NS_OK;
 }
 
 NS_IMETHODIMP
-nsCSSMediaRule::InsertRule(const nsAString & aRule, PRUint32 aIndex, PRUint32* _retval)
+MediaRule::InsertRule(const nsAString & aRule, PRUint32 aIndex, PRUint32* _retval)
 {
-  return nsCSSGroupRule::InsertRule(aRule, aIndex, _retval);
+  return GroupRule::InsertRule(aRule, aIndex, _retval);
 }
 
 NS_IMETHODIMP
-nsCSSMediaRule::DeleteRule(PRUint32 aIndex)
+MediaRule::DeleteRule(PRUint32 aIndex)
 {
-  return nsCSSGroupRule::DeleteRule(aIndex);
+  return GroupRule::DeleteRule(aIndex);
 }
 
-// nsICSSGroupRule interface
-NS_IMETHODIMP_(PRBool)
-nsCSSMediaRule::UseForPresentation(nsPresContext* aPresContext,
+// GroupRule interface
+/* virtual */ PRBool
+MediaRule::UseForPresentation(nsPresContext* aPresContext,
                                    nsMediaQueryResultCacheKey& aKey)
 {
   if (mMedia) {
     return mMedia->Matches(aPresContext, aKey);
   }
   return PR_TRUE;
 }
 
+} // namespace css
+} // namespace mozilla
 
-nsCSSDocumentRule::nsCSSDocumentRule(void)
+// Must be outside namespace
+DOMCI_DATA(CSSMediaRule, css::MediaRule)
+
+namespace mozilla {
+namespace css {
+
+DocumentRule::DocumentRule()
 {
 }
 
-nsCSSDocumentRule::nsCSSDocumentRule(const nsCSSDocumentRule& aCopy)
-  : nsCSSGroupRule(aCopy)
+DocumentRule::DocumentRule(const DocumentRule& aCopy)
+  : GroupRule(aCopy)
   , mURLs(new URL(*aCopy.mURLs))
 {
 }
 
-nsCSSDocumentRule::~nsCSSDocumentRule(void)
+DocumentRule::~DocumentRule()
 {
 }
 
-NS_IMPL_ADDREF_INHERITED(nsCSSDocumentRule, nsCSSGroupRule)
-NS_IMPL_RELEASE_INHERITED(nsCSSDocumentRule, nsCSSGroupRule)
+NS_IMPL_ADDREF_INHERITED(DocumentRule, Rule)
+NS_IMPL_RELEASE_INHERITED(DocumentRule, Rule)
 
-DOMCI_DATA(CSSMozDocumentRule, nsCSSDocumentRule)
-
-// QueryInterface implementation for nsCSSDocumentRule
-NS_INTERFACE_MAP_BEGIN(nsCSSDocumentRule)
-  NS_INTERFACE_MAP_ENTRY(nsICSSGroupRule)
+// QueryInterface implementation for DocumentRule
+NS_INTERFACE_MAP_BEGIN(DocumentRule)
   NS_INTERFACE_MAP_ENTRY(nsICSSRule)
   NS_INTERFACE_MAP_ENTRY(nsIStyleRule)
   NS_INTERFACE_MAP_ENTRY(nsIDOMCSSRule)
   NS_INTERFACE_MAP_ENTRY(nsIDOMCSSMozDocumentRule)
-  NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsCSSGroupRule)
+  NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsICSSRule)
   NS_DOM_INTERFACE_MAP_ENTRY_CLASSINFO(CSSMozDocumentRule)
 NS_INTERFACE_MAP_END
 
 #ifdef DEBUG
 /* virtual */ void
-nsCSSDocumentRule::List(FILE* out, PRInt32 aIndent) const
+DocumentRule::List(FILE* out, PRInt32 aIndent) const
 {
   for (PRInt32 indent = aIndent; --indent >= 0; ) fputs("  ", out);
 
   nsCAutoString str;
   str.AssignLiteral("@-moz-document ");
   for (URL *url = mURLs; url; url = url->next) {
     switch (url->func) {
       case eURL:
@@ -1035,44 +950,44 @@ nsCSSDocumentRule::List(FILE* out, PRInt
     nsCAutoString escapedURL(url->url);
     escapedURL.ReplaceSubstring("\"", "\\\""); // escape quotes
     str.Append(escapedURL);
     str.AppendLiteral("\"), ");
   }
   str.Cut(str.Length() - 2, 1); // remove last ,
   fputs(str.get(), out);
 
-  nsCSSGroupRule::List(out, aIndent);
+  GroupRule::List(out, aIndent);
 }
 #endif
 
 /* virtual */ PRInt32
-nsCSSDocumentRule::GetType() const
+DocumentRule::GetType() const
 {
   return nsICSSRule::DOCUMENT_RULE;
 }
 
 /* virtual */ already_AddRefed<nsICSSRule>
-nsCSSDocumentRule::Clone() const
+DocumentRule::Clone() const
 {
-  nsCOMPtr<nsICSSRule> clone = new nsCSSDocumentRule(*this);
+  nsCOMPtr<nsICSSRule> clone = new DocumentRule(*this);
   return clone.forget();
 }
 
 // nsIDOMCSSRule methods
 NS_IMETHODIMP
-nsCSSDocumentRule::GetType(PRUint16* aType)
+DocumentRule::GetType(PRUint16* aType)
 {
   // XXX What should really happen here?
   *aType = nsIDOMCSSRule::UNKNOWN_RULE;
   return NS_OK;
 }
 
 NS_IMETHODIMP
-nsCSSDocumentRule::GetCssText(nsAString& aCssText)
+DocumentRule::GetCssText(nsAString& aCssText)
 {
   aCssText.AssignLiteral("@-moz-document ");
   for (URL *url = mURLs; url; url = url->next) {
     switch (url->func) {
       case eURL:
         aCssText.AppendLiteral("url(");
         break;
       case eURLPrefix:
@@ -1083,58 +998,60 @@ nsCSSDocumentRule::GetCssText(nsAString&
         break;
     }
     nsStyleUtil::AppendEscapedCSSString(NS_ConvertUTF8toUTF16(url->url),
                                         aCssText);
     aCssText.AppendLiteral("), ");
   }
   aCssText.Cut(aCssText.Length() - 2, 1); // remove last ,
 
-  return nsCSSGroupRule::AppendRulesToCssText(aCssText);
+  return GroupRule::AppendRulesToCssText(aCssText);
 }
 
 NS_IMETHODIMP
-nsCSSDocumentRule::SetCssText(const nsAString& aCssText)
+DocumentRule::SetCssText(const nsAString& aCssText)
 {
   return NS_ERROR_NOT_IMPLEMENTED;
 }
 
 NS_IMETHODIMP
-nsCSSDocumentRule::GetParentStyleSheet(nsIDOMCSSStyleSheet** aSheet)
+DocumentRule::GetParentStyleSheet(nsIDOMCSSStyleSheet** aSheet)
 {
-  return nsCSSGroupRule::GetParentStyleSheet(aSheet);
+  NS_IF_ADDREF(*aSheet = mSheet);
+  return NS_OK;
 }
 
 NS_IMETHODIMP
-nsCSSDocumentRule::GetParentRule(nsIDOMCSSRule** aParentRule)
+DocumentRule::GetParentRule(nsIDOMCSSRule** aParentRule)
 {
-  return nsCSSGroupRule::GetParentRule(aParentRule);
+  return GroupRule::GetParentRule(aParentRule);
 }
 
 NS_IMETHODIMP
-nsCSSDocumentRule::GetCssRules(nsIDOMCSSRuleList* *aRuleList)
+DocumentRule::GetCssRules(nsIDOMCSSRuleList* *aRuleList)
 {
-  return nsCSSGroupRule::GetCssRules(aRuleList);
+  NS_ADDREF(*aRuleList = GroupRule::GetCssRules());
+  return NS_OK;
 }
 
 NS_IMETHODIMP
-nsCSSDocumentRule::InsertRule(const nsAString & aRule, PRUint32 aIndex, PRUint32* _retval)
+DocumentRule::InsertRule(const nsAString & aRule, PRUint32 aIndex, PRUint32* _retval)
 {
-  return nsCSSGroupRule::InsertRule(aRule, aIndex, _retval);
+  return GroupRule::InsertRule(aRule, aIndex, _retval);
 }
 
 NS_IMETHODIMP
-nsCSSDocumentRule::DeleteRule(PRUint32 aIndex)
+DocumentRule::DeleteRule(PRUint32 aIndex)
 {
-  return nsCSSGroupRule::DeleteRule(aIndex);
+  return GroupRule::DeleteRule(aIndex);
 }
 
-// nsICSSGroupRule interface
-NS_IMETHODIMP_(PRBool)
-nsCSSDocumentRule::UseForPresentation(nsPresContext* aPresContext,
+// GroupRule interface
+/* virtual */ PRBool
+DocumentRule::UseForPresentation(nsPresContext* aPresContext,
                                       nsMediaQueryResultCacheKey& aKey)
 {
   nsIURI *docURI = aPresContext->Document()->GetDocumentURI();
   nsCAutoString docURISpec;
   if (docURI)
     docURI->GetSpec(docURISpec);
 
   for (URL *url = mURLs; url; url = url->next) {
@@ -1162,65 +1079,71 @@ nsCSSDocumentRule::UseForPresentation(ns
         }
       } break;
     }
   }
 
   return PR_FALSE;
 }
 
-nsCSSDocumentRule::URL::~URL()
+DocumentRule::URL::~URL()
 {
-  NS_CSS_DELETE_LIST_MEMBER(nsCSSDocumentRule::URL, this, next);
+  NS_CSS_DELETE_LIST_MEMBER(DocumentRule::URL, this, next);
 }
 
+} // namespace css
+} // namespace mozilla
+
+// Must be outside namespace
+DOMCI_DATA(CSSMozDocumentRule, css::DocumentRule)
+
 // -------------------------------------------
 // NameSpaceRule
 //
 
 namespace mozilla {
 namespace css {
 
-NameSpaceRule::NameSpaceRule()
-  : nsCSSRule(),
-    mPrefix(nsnull),
-    mURLSpec()
+NameSpaceRule::NameSpaceRule(nsIAtom* aPrefix, const nsString& aURLSpec)
+  : Rule(),
+    mPrefix(aPrefix),
+    mURLSpec(aURLSpec)
 {
 }
 
 NameSpaceRule::NameSpaceRule(const NameSpaceRule& aCopy)
-  : nsCSSRule(aCopy),
+  : Rule(aCopy),
     mPrefix(aCopy.mPrefix),
     mURLSpec(aCopy.mURLSpec)
 {
 }
 
 NameSpaceRule::~NameSpaceRule()
 {
 }
 
-NS_IMPL_ADDREF(NameSpaceRule)
-NS_IMPL_RELEASE(NameSpaceRule)
+NS_IMPL_ADDREF_INHERITED(NameSpaceRule, Rule)
+NS_IMPL_RELEASE_INHERITED(NameSpaceRule, Rule)
 
 // QueryInterface implementation for NameSpaceRule
 NS_INTERFACE_MAP_BEGIN(NameSpaceRule)
   if (aIID.Equals(NS_GET_IID(css::NameSpaceRule))) {
     *aInstancePtr = this;
     NS_ADDREF_THIS();
     return NS_OK;
   }
   else
   NS_INTERFACE_MAP_ENTRY(nsICSSRule)
   NS_INTERFACE_MAP_ENTRY(nsIStyleRule)
   NS_INTERFACE_MAP_ENTRY(nsIDOMCSSRule)
   NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsICSSRule)
   NS_DOM_INTERFACE_MAP_ENTRY_CLASSINFO(CSSNameSpaceRule)
 NS_INTERFACE_MAP_END
 
-IMPL_STYLE_RULE_INHERIT(NameSpaceRule, nsCSSRule)
+IMPL_STYLE_RULE_INHERIT(NameSpaceRule, Rule)
 
 #ifdef DEBUG
 /* virtual */ void
 NameSpaceRule::List(FILE* out, PRInt32 aIndent) const
 {
   for (PRInt32 indent = aIndent; --indent >= 0; ) fputs("  ", out);
 
   nsAutoString  buffer;
@@ -1297,36 +1220,16 @@ NameSpaceRule::GetParentRule(nsIDOMCSSRu
 }
 
 } // namespace css
 } // namespace mozilla
 
 // Must be outside namespace
 DOMCI_DATA(CSSNameSpaceRule, css::NameSpaceRule)
 
-nsresult
-NS_NewCSSNameSpaceRule(css::NameSpaceRule** aInstancePtrResult,
-                       nsIAtom* aPrefix, const nsString& aURLSpec)
-{
-  if (! aInstancePtrResult) {
-    return NS_ERROR_NULL_POINTER;
-  }
-
-  css::NameSpaceRule* it = new css::NameSpaceRule();
-
-  if (!it) {
-    return NS_ERROR_OUT_OF_MEMORY;
-  }
-
-  it->SetPrefix(aPrefix);
-  it->SetURLSpec(aURLSpec);
-  NS_ADDREF(*aInstancePtrResult = it);
-  return NS_OK;
-}
-
 // -------------------------------------------
 // nsCSSFontFaceStyleDecl and related routines
 //
 
 // A src: descriptor is represented as an array value; each entry in
 // the array can be eCSSUnit_URL, eCSSUnit_Local_Font, or
 // eCSSUnit_Font_Format.  Blocks of eCSSUnit_Font_Format may appear
 // only after one of the first two.  (css3-fonts only contemplates
@@ -1657,32 +1560,32 @@ nsCSSFontFaceStyleDecl::GetParentRule(ns
 
 /* virtual */ already_AddRefed<nsICSSRule>
 nsCSSFontFaceRule::Clone() const
 {
   nsCOMPtr<nsICSSRule> clone = new nsCSSFontFaceRule(*this);
   return clone.forget();
 }
 
-NS_IMPL_ADDREF(nsCSSFontFaceRule)
-NS_IMPL_RELEASE(nsCSSFontFaceRule)
+NS_IMPL_ADDREF_INHERITED(nsCSSFontFaceRule, css::Rule)
+NS_IMPL_RELEASE_INHERITED(nsCSSFontFaceRule, css::Rule)
 
 DOMCI_DATA(CSSFontFaceRule, nsCSSFontFaceRule)
 
 // QueryInterface implementation for nsCSSFontFaceRule
 NS_INTERFACE_MAP_BEGIN(nsCSSFontFaceRule)
   NS_INTERFACE_MAP_ENTRY(nsICSSRule)
   NS_INTERFACE_MAP_ENTRY(nsIStyleRule)
   NS_INTERFACE_MAP_ENTRY(nsIDOMCSSFontFaceRule)
   NS_INTERFACE_MAP_ENTRY(nsIDOMCSSRule)
   NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsICSSRule)
   NS_DOM_INTERFACE_MAP_ENTRY_CLASSINFO(CSSFontFaceRule)
 NS_INTERFACE_MAP_END
 
-IMPL_STYLE_RULE_INHERIT(nsCSSFontFaceRule, nsCSSRule)
+IMPL_STYLE_RULE_INHERIT(nsCSSFontFaceRule, Rule)
 
 #ifdef DEBUG
 void
 nsCSSFontFaceRule::List(FILE* out, PRInt32 aIndent) const
 {
   nsCString baseInd, descInd;
   for (PRInt32 indent = aIndent; --indent >= 0; ) {
     baseInd.AppendLiteral("  ");
--- a/layout/style/nsCSSRules.h
+++ b/layout/style/nsCSSRules.h
@@ -38,169 +38,111 @@
  *
  * ***** END LICENSE BLOCK ***** */
 
 /* rules in a CSS stylesheet other than style rules (e.g., @import rules) */
 
 #ifndef nsCSSRules_h_
 #define nsCSSRules_h_
 
-#include "nsCSSRule.h"
-#include "nsICSSGroupRule.h"
+#include "Rule.h"
+#include "mozilla/css/GroupRule.h"
 #include "nsIDOMCSSMediaRule.h"
 #include "nsIDOMCSSMozDocumentRule.h"
 #include "nsIDOMCSSFontFaceRule.h"
 #include "nsIDOMCSSStyleDeclaration.h"
 #include "nsAutoPtr.h"
 #include "nsCSSProperty.h"
 #include "nsCSSValue.h"
-
-class CSSGroupRuleRuleListImpl;
-class nsMediaList;
-template<class T> struct already_AddRefed;
-
-#define DECL_STYLE_RULE_INHERIT_NO_DOMRULE  \
-virtual already_AddRefed<nsIStyleSheet> GetStyleSheet() const; \
-virtual void SetStyleSheet(nsCSSStyleSheet* aSheet); \
-virtual void SetParentRule(nsICSSGroupRule* aRule); \
-virtual void MapRuleInfoInto(nsRuleData* aRuleData);
-
-#define DECL_STYLE_RULE_INHERIT  \
-DECL_STYLE_RULE_INHERIT_NO_DOMRULE \
-nsIDOMCSSRule* GetDOMRuleWeak(nsresult* aResult);
+#include "nsIDOMCSSCharsetRule.h"
 
-// inherits from nsCSSRule and also implements methods on nsICSSGroupRule
-// so they can be shared between nsCSSMediaRule and nsCSSDocumentRule
-class nsCSSGroupRule : public nsCSSRule, public nsICSSGroupRule
-{
-protected:
-  nsCSSGroupRule();
-  nsCSSGroupRule(const nsCSSGroupRule& aCopy);
-  virtual ~nsCSSGroupRule();
-
-  // Implement part of nsISupports.
-  NS_IMETHOD_(nsrefcnt) AddRef();
-  NS_IMETHOD_(nsrefcnt) Release();
-protected:
-  nsAutoRefCnt mRefCnt;
-  NS_DECL_OWNINGTHREAD
-public:
-
-  // implement part of nsIStyleRule and nsICSSRule
-  DECL_STYLE_RULE_INHERIT_NO_DOMRULE
+class nsMediaList;
 
-  // to help implement nsIStyleRule
-#ifdef DEBUG
-  virtual void List(FILE* out = stdout, PRInt32 aIndent = 0) const;
-#endif
-
-public:
-  // implement nsICSSGroupRule
-  NS_IMETHOD AppendStyleRule(nsICSSRule* aRule);
-  NS_IMETHOD StyleRuleCount(PRInt32& aCount) const;
-  NS_IMETHOD GetStyleRuleAt(PRInt32 aIndex, nsICSSRule*& aRule) const;
-  NS_IMETHOD_(PRBool) EnumerateRulesForwards(RuleEnumFunc aFunc, void * aData) const;
-  NS_IMETHOD DeleteStyleRuleAt(PRUint32 aIndex);
-  NS_IMETHOD InsertStyleRulesAt(PRUint32 aIndex,
-                                nsCOMArray<nsICSSRule>& aRules);
-  NS_IMETHOD ReplaceStyleRule(nsICSSRule *aOld, nsICSSRule *aNew);
+namespace mozilla {
+namespace css {
 
-protected:
-  // to help implement nsIDOMCSSRule
-  nsresult AppendRulesToCssText(nsAString& aCssText);
-  // to implement methods on nsIDOMCSSRule
-  nsresult GetParentStyleSheet(nsIDOMCSSStyleSheet** aSheet);
-  nsresult GetParentRule(nsIDOMCSSRule** aParentRule);
-
-  // to implement common methods on nsIDOMCSSMediaRule and
-  // nsIDOMCSSMozDocumentRule
-  nsresult GetCssRules(nsIDOMCSSRuleList* *aRuleList);
-  nsresult InsertRule(const nsAString & aRule, PRUint32 aIndex,
-                      PRUint32* _retval);
-  nsresult DeleteRule(PRUint32 aIndex);
-
-  nsCOMArray<nsICSSRule> mRules;
-  CSSGroupRuleRuleListImpl* mRuleCollection;
-};
-
-class NS_FINAL_CLASS nsCSSMediaRule : public nsCSSGroupRule,
-                                      public nsIDOMCSSMediaRule
+class NS_FINAL_CLASS MediaRule : public GroupRule,
+                                 public nsIDOMCSSMediaRule
 {
 public:
-  nsCSSMediaRule();
-  nsCSSMediaRule(const nsCSSMediaRule& aCopy);
-  virtual ~nsCSSMediaRule();
+  MediaRule();
+private:
+  MediaRule(const MediaRule& aCopy);
+  ~MediaRule();
+public:
 
   NS_DECL_ISUPPORTS_INHERITED
 
   // nsIStyleRule methods
 #ifdef DEBUG
   virtual void List(FILE* out = stdout, PRInt32 aIndent = 0) const;
 #endif
 
   // nsICSSRule methods
-  virtual void SetStyleSheet(nsCSSStyleSheet* aSheet); //override nsCSSGroupRule
+  virtual void SetStyleSheet(nsCSSStyleSheet* aSheet); //override GroupRule
   virtual PRInt32 GetType() const;
   virtual already_AddRefed<nsICSSRule> Clone() const;
-  nsIDOMCSSRule* GetDOMRuleWeak(nsresult *aResult)
+  virtual nsIDOMCSSRule* GetDOMRuleWeak(nsresult *aResult)
   {
     *aResult = NS_OK;
     return this;
   }
 
   // nsIDOMCSSRule interface
   NS_DECL_NSIDOMCSSRULE
 
   // nsIDOMCSSMediaRule interface
   NS_DECL_NSIDOMCSSMEDIARULE
 
-  // rest of nsICSSGroupRule interface
-  NS_IMETHOD_(PRBool) UseForPresentation(nsPresContext* aPresContext,
-                                         nsMediaQueryResultCacheKey& aKey);
+  // rest of GroupRule
+  virtual PRBool UseForPresentation(nsPresContext* aPresContext,
+                                    nsMediaQueryResultCacheKey& aKey);
 
   // @media rule methods
   nsresult SetMedia(nsMediaList* aMedia);
   
 protected:
   nsRefPtr<nsMediaList> mMedia;
 };
 
-class NS_FINAL_CLASS nsCSSDocumentRule : public nsCSSGroupRule,
-                                         public nsIDOMCSSMozDocumentRule
+class NS_FINAL_CLASS DocumentRule : public GroupRule,
+                                    public nsIDOMCSSMozDocumentRule
 {
 public:
-  nsCSSDocumentRule(void);
-  nsCSSDocumentRule(const nsCSSDocumentRule& aCopy);
-  virtual ~nsCSSDocumentRule(void);
+  DocumentRule();
+private:
+  DocumentRule(const DocumentRule& aCopy);
+  ~DocumentRule();
+public:
 
   NS_DECL_ISUPPORTS_INHERITED
 
   // nsIStyleRule methods
 #ifdef DEBUG
   virtual void List(FILE* out = stdout, PRInt32 aIndent = 0) const;
 #endif
 
   // nsICSSRule methods
   virtual PRInt32 GetType() const;
   virtual already_AddRefed<nsICSSRule> Clone() const;
-  nsIDOMCSSRule* GetDOMRuleWeak(nsresult *aResult)
+  virtual nsIDOMCSSRule* GetDOMRuleWeak(nsresult *aResult)
   {
     *aResult = NS_OK;
     return this;
   }
 
   // nsIDOMCSSRule interface
   NS_DECL_NSIDOMCSSRULE
 
   // nsIDOMCSSMozDocumentRule interface
   NS_DECL_NSIDOMCSSMOZDOCUMENTRULE
 
-  // rest of nsICSSGroupRule interface
-  NS_IMETHOD_(PRBool) UseForPresentation(nsPresContext* aPresContext,
-                                         nsMediaQueryResultCacheKey& aKey);
+  // rest of GroupRule
+  virtual PRBool UseForPresentation(nsPresContext* aPresContext,
+                                    nsMediaQueryResultCacheKey& aKey);
 
   enum Function {
     eURL,
     eURLPrefix,
     eDomain
   };
 
   struct URL {
@@ -219,16 +161,19 @@ public:
   };
 
   void SetURLs(URL *aURLs) { mURLs = aURLs; }
 
 protected:
   nsAutoPtr<URL> mURLs; // linked list of |struct URL| above.
 };
 
+} // namespace css
+} // namespace mozilla
+
 // A nsCSSFontFaceStyleDecl is always embedded in a nsCSSFontFaceRule.
 class nsCSSFontFaceRule;
 class nsCSSFontFaceStyleDecl : public nsIDOMCSSStyleDeclaration
 {
 public:
   NS_DECL_ISUPPORTS
   NS_DECL_NSIDOMCSSSTYLEDECLARATION
 
@@ -252,28 +197,27 @@ protected:
 
 private:
   // NOT TO BE IMPLEMENTED
   // This object cannot be allocated on its own, only as part of
   // nsCSSFontFaceRule.
   void* operator new(size_t size) CPP_THROW_NEW;
 };
 
-class NS_FINAL_CLASS nsCSSFontFaceRule : public nsCSSRule,
-                                         public nsICSSRule,
+class NS_FINAL_CLASS nsCSSFontFaceRule : public mozilla::css::Rule,
                                          public nsIDOMCSSFontFaceRule
 {
 public:
   nsCSSFontFaceRule() {}
 
   nsCSSFontFaceRule(const nsCSSFontFaceRule& aCopy)
     // copy everything except our reference count
-    : nsCSSRule(aCopy), mDecl(aCopy.mDecl) {}
+    : mozilla::css::Rule(aCopy), mDecl(aCopy.mDecl) {}
 
-  NS_DECL_ISUPPORTS
+  NS_DECL_ISUPPORTS_INHERITED
 
   // nsIStyleRule methods
 #ifdef DEBUG
   virtual void List(FILE* out = stdout, PRInt32 aIndent = 0) const;
 #endif
 
   // nsICSSRule methods
   DECL_STYLE_RULE_INHERIT
@@ -311,9 +255,50 @@ nsCSSFontFaceStyleDecl::ContainingRule()
 
 inline const nsCSSFontFaceRule*
 nsCSSFontFaceStyleDecl::ContainingRule() const
 {
   return reinterpret_cast<const nsCSSFontFaceRule*>
     (reinterpret_cast<const char*>(this) - offsetof(nsCSSFontFaceRule, mDecl));
 }
 
+namespace mozilla {
+namespace css {
+
+class NS_FINAL_CLASS CharsetRule : public Rule,
+                                   public nsIDOMCSSCharsetRule
+{
+public:
+  CharsetRule(const nsAString& aEncoding);
+private:
+  // For |Clone|
+  CharsetRule(const CharsetRule& aCopy);
+  ~CharsetRule() {}
+
+public:
+  NS_DECL_ISUPPORTS_INHERITED
+
+  DECL_STYLE_RULE_INHERIT
+
+  // nsIStyleRule methods
+#ifdef DEBUG
+  virtual void List(FILE* out = stdout, PRInt32 aIndent = 0) const;
+#endif
+
+  // nsICSSRule methods
+  virtual PRInt32 GetType() const;
+  virtual already_AddRefed<nsICSSRule> Clone() const;
+
+  // nsIDOMCSSRule interface
+  NS_DECL_NSIDOMCSSRULE
+
+  // nsIDOMCSSCharsetRule methods
+  NS_IMETHOD GetEncoding(nsAString& aEncoding);
+  NS_IMETHOD SetEncoding(const nsAString& aEncoding);
+
+private:
+  nsString  mEncoding;
+};
+
+} // namespace css
+} // namespace mozilla
+
 #endif /* !defined(nsCSSRules_h_) */
--- a/layout/style/nsCSSStyleSheet.cpp
+++ b/layout/style/nsCSSStyleSheet.cpp
@@ -42,17 +42,17 @@
 /* representation of a CSS style sheet */
 
 #include "nsCSSStyleSheet.h"
 
 #include "nsCRT.h"
 #include "nsIAtom.h"
 #include "nsCSSRuleProcessor.h"
 #include "mozilla/css/NameSpaceRule.h"
-#include "nsICSSGroupRule.h"
+#include "mozilla/css/GroupRule.h"
 #include "mozilla/css/ImportRule.h"
 #include "nsIMediaList.h"
 #include "nsIDocument.h"
 #include "nsPresContext.h"
 #include "nsGkAtoms.h"
 #include "nsString.h"
 #include "nsTArray.h"
 #include "nsIDOMCSSStyleSheet.h"
@@ -1269,17 +1269,17 @@ nsCSSStyleSheet::FindOwningWindowID() co
       nsIDocument* doc = node->GetOwnerDoc();
       if (doc) {
         windowID = doc->OuterWindowID();
       }
     }
   }
 
   if (windowID == 0 && mOwnerRule) {
-    nsCOMPtr<nsIStyleSheet> sheet = mOwnerRule->GetStyleSheet();
+    nsCOMPtr<nsIStyleSheet> sheet = static_cast<css::Rule*>(mOwnerRule)->GetStyleSheet();
     if (sheet) {
       nsRefPtr<nsCSSStyleSheet> cssSheet = do_QueryObject(sheet);
       if (cssSheet) {
         windowID = cssSheet->FindOwningWindowID();
       }
     }
   }
 
@@ -1929,28 +1929,26 @@ nsCSSStyleSheet::DeleteRule(PRUint32 aIn
       }
     }
   }
 
   return result;
 }
 
 nsresult
-nsCSSStyleSheet::DeleteRuleFromGroup(nsICSSGroupRule* aGroup, PRUint32 aIndex)
+nsCSSStyleSheet::DeleteRuleFromGroup(css::GroupRule* aGroup, PRUint32 aIndex)
 {
   NS_ENSURE_ARG_POINTER(aGroup);
   NS_ASSERTION(mInner->mComplete, "No deleting from an incomplete sheet!");
   nsresult result;
-  nsCOMPtr<nsICSSRule> rule;
-  result = aGroup->GetStyleRuleAt(aIndex, *getter_AddRefs(rule));
-  NS_ENSURE_SUCCESS(result, result);
-  
+  nsCOMPtr<nsICSSRule> rule = aGroup->GetStyleRuleAt(aIndex);
+  NS_ENSURE_TRUE(rule, NS_ERROR_ILLEGAL_VALUE);
+
   // check that the rule actually belongs to this sheet!
-  nsCOMPtr<nsIStyleSheet> ruleSheet = rule->GetStyleSheet();
-  if (this != ruleSheet) {
+  if (this != rule->GetStyleSheet()) {
     return NS_ERROR_INVALID_ARG;
   }
 
   mozAutoDocUpdate updateBatch(mDocument, UPDATE_STYLE, PR_TRUE);
   
   result = WillDirty();
   NS_ENSURE_SUCCESS(result, result);
 
@@ -1965,25 +1963,24 @@ nsCSSStyleSheet::DeleteRuleFromGroup(nsI
     mDocument->StyleRuleRemoved(this, rule);
   }
 
   return NS_OK;
 }
 
 nsresult
 nsCSSStyleSheet::InsertRuleIntoGroup(const nsAString & aRule,
-                                     nsICSSGroupRule* aGroup,
+                                     css::GroupRule* aGroup,
                                      PRUint32 aIndex,
                                      PRUint32* _retval)
 {
   nsresult result;
   NS_ASSERTION(mInner->mComplete, "No inserting into an incomplete sheet!");
   // check that the group actually belongs to this sheet!
-  nsCOMPtr<nsIStyleSheet> groupSheet = aGroup->GetStyleSheet();
-  if (this != groupSheet) {
+  if (this != aGroup->GetStyleSheet()) {
     return NS_ERROR_INVALID_ARG;
   }
 
   if (aRule.IsEmpty()) {
     // Nothing to do here
     return NS_OK;
   }
 
@@ -2038,27 +2035,22 @@ nsCSSStyleSheet::InsertRuleIntoGroup(con
     }
   }
 
   *_retval = aIndex;
   return NS_OK;
 }
 
 nsresult
-nsCSSStyleSheet::ReplaceRuleInGroup(nsICSSGroupRule* aGroup,
+nsCSSStyleSheet::ReplaceRuleInGroup(css::GroupRule* aGroup,
                                     nsICSSRule* aOld, nsICSSRule* aNew)
 {
   nsresult result;
   NS_PRECONDITION(mInner->mComplete, "No replacing in an incomplete sheet!");
-#ifdef DEBUG
-  {
-    nsCOMPtr<nsIStyleSheet> groupSheet = aGroup->GetStyleSheet();
-    NS_ASSERTION(this == groupSheet, "group doesn't belong to this sheet");
-  }
-#endif
+  NS_ASSERTION(this == aGroup->GetStyleSheet(), "group doesn't belong to this sheet");
   result = WillDirty();
   NS_ENSURE_SUCCESS(result, result);
 
   result = aGroup->ReplaceStyleRule(aOld, aNew);
   DidDirty();
   return result;
 }
 
--- a/layout/style/nsCSSStyleSheet.h
+++ b/layout/style/nsCSSStyleSheet.h
@@ -51,27 +51,27 @@
 #include "nsIDOMCSSStyleSheet.h"
 #include "nsICSSLoaderObserver.h"
 #include "nsCOMArray.h"
 
 class nsICSSRule;
 class nsXMLNameSpaceMap;
 class nsCSSRuleProcessor;
 class nsMediaList;
-class nsICSSGroupRule;
 class nsIPrincipal;
 class nsIURI;
 class nsMediaList;
 class nsMediaQueryResultCacheKey;
 class nsCSSStyleSheet;
 class nsPresContext;
 template<class E, class A> class nsTArray;
 
 namespace mozilla {
 namespace css {
+class GroupRule;
 class ImportRule;
 }
 }
 
 // -------------------------------
 // CSS Style Sheet Inner Data Container
 //
 
@@ -167,19 +167,19 @@ public:
   // XXX do these belong here or are they generic?
   void PrependStyleRule(nsICSSRule* aRule);
   void AppendStyleRule(nsICSSRule* aRule);
   void ReplaceStyleRule(nsICSSRule* aOld, nsICSSRule* aNew);
 
   PRInt32 StyleRuleCount() const;
   nsresult GetStyleRuleAt(PRInt32 aIndex, nsICSSRule*& aRule) const;
 
-  nsresult DeleteRuleFromGroup(nsICSSGroupRule* aGroup, PRUint32 aIndex);
-  nsresult InsertRuleIntoGroup(const nsAString& aRule, nsICSSGroupRule* aGroup, PRUint32 aIndex, PRUint32* _retval);
-  nsresult ReplaceRuleInGroup(nsICSSGroupRule* aGroup, nsICSSRule* aOld, nsICSSRule* aNew);
+  nsresult DeleteRuleFromGroup(mozilla::css::GroupRule* aGroup, PRUint32 aIndex);
+  nsresult InsertRuleIntoGroup(const nsAString& aRule, mozilla::css::GroupRule* aGroup, PRUint32 aIndex, PRUint32* _retval);
+  nsresult ReplaceRuleInGroup(mozilla::css::GroupRule* aGroup, nsICSSRule* aOld, nsICSSRule* aNew);
 
   PRInt32 StyleSheetCount() const;
 
   /**
    * SetURIs must be called on all sheets before parsing into them.
    * SetURIs may only be called while the sheet is 1) incomplete and 2)
    * has no rules in it
    */
--- a/layout/style/nsDOMCSSAttrDeclaration.cpp
+++ b/layout/style/nsDOMCSSAttrDeclaration.cpp
@@ -147,17 +147,17 @@ nsDOMCSSAttributeDeclaration::GetCSSDecl
   }
   if (!aAllocate) {
     return nsnull;
   }
 
   // cannot fail
   css::Declaration *decl = new css::Declaration();
   decl->InitializeEmpty();
-  nsRefPtr<css::StyleRule> newRule = NS_NewCSSStyleRule(nsnull, decl);
+  nsRefPtr<css::StyleRule> newRule = new css::StyleRule(nsnull, decl);
 
   // this *can* fail (inside SetAttrAndNotify, at least).
   nsresult rv;
 #ifdef MOZ_SMIL
   if (mIsSMILOverride)
     rv = mElement->SetSMILOverrideStyleRule(newRule, PR_FALSE);
   else
 #endif // MOZ_SMIL
--- a/layout/style/nsICSSRule.h
+++ b/layout/style/nsICSSRule.h
@@ -39,25 +39,30 @@
 
 #ifndef nsICSSRule_h
 #define nsICSSRule_h
 
 #include "nsIStyleRule.h"
 #include "nsIDOMCSSRule.h"
 
 class nsCSSStyleSheet;
-class nsICSSGroupRule;
 class nsAString;
 template<class T> struct already_AddRefed;
 class nsIStyleSheet;
 
+namespace mozilla {
+namespace css {
+class GroupRule;
+}
+}
+
 // IID for the nsICSSRule interface
-#define NS_ICSS_RULE_IID \
-{ 0x1f560b20, 0xa829, 0x4b99, \
-  { 0x87, 0xbd, 0x8c, 0x87, 0x95, 0x2b, 0x3b, 0xb6 } }
+#define NS_ICSS_RULE_IID     \
+{ 0x471d733e, 0xc138, 0x4a50, \
+ { 0x9e, 0x1a, 0xd1, 0x3c, 0xbb, 0x65, 0xb5, 0x26 } }
 
 
 // inheriting from nsIStyleRule is only for style rules, not other rule types
 class nsICSSRule : public nsIStyleRule {
 public:
   NS_DECLARE_STATIC_IID_ACCESSOR(NS_ICSS_RULE_IID)
   // The constants in this list must maintain the following invariants:
   //   If a rule of type N must appear before a rule of type M in stylesheets
@@ -73,19 +78,19 @@ public:
     MEDIA_RULE,
     FONT_FACE_RULE,
     PAGE_RULE,
     DOCUMENT_RULE
   };
 
   virtual PRInt32 GetType() const = 0;
 
-  virtual already_AddRefed<nsIStyleSheet> GetStyleSheet() const = 0;
+  virtual nsIStyleSheet* GetStyleSheet() const = 0;
   virtual void SetStyleSheet(nsCSSStyleSheet* aSheet) = 0;
-  virtual void SetParentRule(nsICSSGroupRule* aRule) = 0;
+  virtual void SetParentRule(mozilla::css::GroupRule* aRule) = 0;
 
   /**
    * Clones |this|. Never returns NULL.
    */
   virtual already_AddRefed<nsICSSRule> Clone() const = 0;
 
   // Note that this returns null for inline style rules since they aren't
   // supposed to have a DOM rule representation (and our code wouldn't work).
@@ -95,15 +100,9 @@ public:
     NS_IF_ADDREF(*aDOMRule = GetDOMRuleWeak(&rv));
     return rv;
   }
   virtual nsIDOMCSSRule* GetDOMRuleWeak(nsresult* aResult) = 0;
 };
 
 NS_DEFINE_STATIC_IID_ACCESSOR(nsICSSRule, NS_ICSS_RULE_IID)
 
-/* Define global NS_New* functions for rules that don't need their own
-   interfaces here */
-nsresult
-NS_NewCSSCharsetRule(nsICSSRule** aInstancePtrResult,
-                     const nsAString& aEncoding);
-
 #endif /* nsICSSRule_h */
--- a/layout/style/nsStyleAnimation.cpp
+++ b/layout/style/nsStyleAnimation.cpp
@@ -1813,17 +1813,18 @@ BuildStyleRule(nsCSSProperty aProperty,
                                      aTargetElement->NodePrincipal(),
                                      declaration, &changed, PR_FALSE)) ||
       // check whether property parsed without CSS parsing errors
       !declaration->HasNonImportantValueFor(propertyToCheck)) {
     NS_WARNING("failure in BuildStyleRule");
     return nsnull;
   }
 
-  return NS_NewCSSStyleRule(nsnull, declaration.forget());
+  nsRefPtr<css::StyleRule> rule = new css::StyleRule(nsnull, declaration.forget());
+  return rule.forget();
 }
 
 inline
 already_AddRefed<nsStyleContext>
 LookupStyleContext(dom::Element* aElement)
 {
   nsIDocument* doc = aElement->GetCurrentDoc();
   nsIPresShell* shell = doc->GetShell();
new file mode 100644
--- /dev/null
+++ b/mobile/.hgignore
@@ -0,0 +1,8 @@
+# .hgignore - List of filenames hg should ignore
+
+# Filenames that should be ignored wherever they appear
+~$
+\.pyc$
+\.swp$
+(^|/)TAGS$
+\.DS_Store$
new file mode 100644
--- /dev/null
+++ b/mobile/.hgtags
@@ -0,0 +1,8 @@
+14bbac84b71cbb9d603ed571538c9c41b023d94e FENNEC_M4
+7dbca6d7d5cf0a052c658b6ba3e89068b0772734 FENNEC_M7
+eb17df1df284c8aa882ae626d6f8b298adc55c6b FENNEC_M8
+b394a7122c1018dd3d49d9049bcbbcb5b9ab17e2 FENNEC_A1
+5f1388238359c2019572316cf75c3a404d2d4e70 FENNEC_A2
+84195fc5e34609b49862f95799e21b6f790ec9cc FENNEC_M11
+9aa835472fed9cb58c809c2f3182e46bf5ce25bd FENNEC_B1
+6da60192232841d4d6a090a577585c70d790dac8 FENNEC_B5
new file mode 100644
--- /dev/null
+++ b/mobile/LICENSE
@@ -0,0 +1,1333 @@
+This code may be used and redistributed under your choice of:
+
+    * Mozilla Public License, version 1.1 or later
+    * GNU General Public License, version 2.0 or later
+    * GNU Lesser General Public License, version 2.1 or later
+
+The terms of these licenses are included here for reference:
+
+                          MOZILLA PUBLIC LICENSE
+                                Version 1.1
+
+                              ---------------
+
+1. Definitions.
+
+     1.0.1. "Commercial Use" means distribution or otherwise making the
+     Covered Code available to a third party.
+
+     1.1. "Contributor" means each entity that creates or contributes to
+     the creation of Modifications.
+
+     1.2. "Contributor Version" means the combination of the Original
+     Code, prior Modifications used by a Contributor, and the Modifications
+     made by that particular Contributor.
+
+     1.3. "Covered Code" means the Original Code or Modifications or the
+     combination of the Original Code and Modifications, in each case
+     including portions thereof.
+
+     1.4. "Electronic Distribution Mechanism" means a mechanism generally
+     accepted in the software development community for the electronic
+     transfer of data.
+
+     1.5. "Executable" means Covered Code in any form other than Source
+     Code.
+
+     1.6. "Initial Developer" means the individual or entity identified
+     as the Initial Developer in the Source Code notice required by Exhibit
+     A.
+
+     1.7. "Larger Work" means a work which combines Covered Code or
+     portions thereof with code not governed by the terms of this License.
+
+     1.8. "License" means this document.
+
+     1.8.1. "Licensable" means having the right to grant, to the maximum
+     extent possible, whether at the time of the initial grant or
+     subsequently acquired, any and all of the rights conveyed herein.
+
+     1.9. "Modifications" means any addition to or deletion from the
+     substance or structure of either the Original Code or any previous
+     Modifications. When Covered Code is released as a series of files, a
+     Modification is:
+          A. Any addition to or deletion from the contents of a file
+          containing Original Code or previous Modifications.
+
+          B. Any new file that contains any part of the Original Code or
+          previous Modifications.
+
+     1.10. "Original Code" means Source Code of computer software code
+     which is described in the Source Code notice required by Exhibit A as
+     Original Code, and which, at the time of its release under this
+     License is not already Covered Code governed by this License.
+
+     1.10.1. "Patent Claims" means any patent claim(s), now owned or
+     hereafter acquired, including without limitation,  method, process,
+     and apparatus claims, in any patent Licensable by grantor.
+
+     1.11. "Source Code" means the preferred form of the Covered Code for
+     making modifications to it, including all modules it contains, plus
+     any associated interface definition files, scripts used to control
+     compilation and installation of an Executable, or source code
+     differential comparisons against either the Original Code or another
+     well known, available Covered Code of the Contributor's choice. The
+     Source Code can be in a compressed or archival form, provided the
+     appropriate decompression or de-archiving software is widely available
+     for no charge.
+
+     1.12. "You" (or "Your")  means an individual or a legal entity
+     exercising rights under, and complying with all of the terms of, this
+     License or a future version of this License issued under Section 6.1.
+     For legal entities, "You" includes any entity which controls, is
+     controlled by, or is under common control with You. For purposes of
+     this definition, "control" means (a) the power, direct or indirect,
+     to cause the direction or management of such entity, whether by
+     contract or otherwise, or (b) ownership of more than fifty percent
+     (50%) of the outstanding shares or beneficial ownership of such
+     entity.
+
+2. Source Code License.
+
+     2.1. The Initial Developer Grant.
+     The Initial Developer hereby grants You a world-wide, royalty-free,
+     non-exclusive license, subject to third party intellectual property
+     claims:
+          (a)  under intellectual property rights (other than patent or
+          trademark) Licensable by Initial Developer to use, reproduce,
+          modify, display, perform, sublicense and distribute the Original
+          Code (or portions thereof) with or without Modifications, and/or
+          as part of a Larger Work; and
+
+          (b) under Patents Claims infringed by the making, using or
+          selling of Original Code, to make, have made, use, practice,
+          sell, and offer for sale, and/or otherwise dispose of the
+          Original Code (or portions thereof).
+
+          (c) the licenses granted in this Section 2.1(a) and (b) are
+          effective on the date Initial Developer first distributes
+          Original Code under the terms of this License.
+
+          (d) Notwithstanding Section 2.1(b) above, no patent license is
+          granted: 1) for code that You delete from the Original Code; 2)
+          separate from the Original Code;  or 3) for infringements caused
+          by: i) the modification of the Original Code or ii) the
+          combination of the Original Code with other software or devices.
+
+     2.2. Contributor Grant.
+     Subject to third party intellectual property claims, each Contributor
+     hereby grants You a world-wide, royalty-free, non-exclusive license
+
+          (a)  under intellectual property rights (other than patent or
+          trademark) Licensable by Contributor, to use, reproduce, modify,
+          display, perform, sublicense and distribute the Modifications
+          created by such Contributor (or portions thereof) either on an
+          unmodified basis, with other Modifications, as Covered Code
+          and/or as part of a Larger Work; and
+
+          (b) under Patent Claims infringed by the making, using, or
+          selling of  Modifications made by that Contributor either alone
+          and/or in combination with its Contributor Version (or portions
+          of such combination), to make, use, sell, offer for sale, have
+          made, and/or otherwise dispose of: 1) Modifications made by that
+          Contributor (or portions thereof); and 2) the combination of
+          Modifications made by that Contributor with its Contributor
+          Version (or portions of such combination).
+
+          (c) the licenses granted in Sections 2.2(a) and 2.2(b) are
+          effective on the date Contributor first makes Commercial Use of
+          the Covered Code.
+
+          (d)    Notwithstanding Section 2.2(b) above, no patent license is
+          granted: 1) for any code that Contributor has deleted from the
+          Contributor Version; 2)  separate from the Contributor Version;
+          3)  for infringements caused by: i) third party modifications of
+          Contributor Version or ii)  the combination of Modifications made
+          by that Contributor with other software  (except as part of the
+          Contributor Version) or other devices; or 4) under Patent Claims
+          infringed by Covered Code in the absence of Modifications made by
+          that Contributor.
+
+3. Distribution Obligations.
+
+     3.1. Application of License.
+     The Modifications which You create or to which You contribute are
+     governed by the terms of this License, including without limitation
+     Section 2.2. The Source Code version of Covered Code may be
+     distributed only under the terms of this License or a future version
+     of this License released under Section 6.1, and You must include a
+     copy of this License with every copy of the Source Code You
+     distribute. You may not offer or impose any terms on any Source Code
+     version that alters or restricts the applicable version of this
+     License or the recipients' rights hereunder. However, You may include
+     an additional document offering the additional rights described in
+     Section 3.5.
+
+     3.2. Availability of Source Code.
+     Any Modification which You create or to which You contribute must be
+     made available in Source Code form under the terms of this License
+     either on the same media as an Executable version or via an accepted
+     Electronic Distribution Mechanism to anyone to whom you made an
+     Executable version available; and if made available via Electronic
+     Distribution Mechanism, must remain available for at least twelve (12)
+     months after the date it initially became available, or at least six
+     (6) months after a subsequent version of that particular Modification
+     has been made available to such recipients. You are responsible for
+     ensuring that the Source Code version remains available even if the
+     Electronic Distribution Mechanism is maintained by a third party.
+
+     3.3. Description of Modifications.
+     You must cause all Covered Code to which You contribute to contain a
+     file documenting the changes You made to create that Covered Code and
+     the date of any change. You must include a prominent statement that
+     the Modification is derived, directly or indirectly, from Original
+     Code provided by the Initial Developer and including the name of the
+     Initial Developer in (a) the Source Code, and (b) in any notice in an
+     Executable version or related documentation in which You describe the
+     origin or ownership of the Covered Code.
+
+     3.4. Intellectual Property Matters
+          (a) Third Party Claims.
+          If Contributor has knowledge that a license under a third party's
+          intellectual property rights is required to exercise the rights
+          granted by such Contributor under Sections 2.1 or 2.2,
+          Contributor must include a text file with the Source Code
+          distribution titled "LEGAL" which describes the claim and the
+          party making the claim in sufficient detail that a recipient will
+          know whom to contact. If Contributor obtains such knowledge after
+          the Modification is made available as described in Section 3.2,
+          Contributor shall promptly modify the LEGAL file in all copies
+          Contributor makes available thereafter and shall take other steps
+          (such as notifying appropriate mailing lists or newsgroups)
+          reasonably calculated to inform those who received the Covered
+          Code that new knowledge has been obtained.
+
+          (b) Contributor APIs.
+          If Contributor's Modifications include an application programming
+          interface and Contributor has knowledge of patent licenses which
+          are reasonably necessary to implement that API, Contributor must
+          also include this information in the LEGAL file.
+
+               (c)    Representations.
+          Contributor represents that, except as disclosed pursuant to
+          Section 3.4(a) above, Contributor believes that Contributor's
+          Modifications are Contributor's original creation(s) and/or
+          Contributor has sufficient rights to grant the rights conveyed by
+          this License.
+
+     3.5. Required Notices.
+     You must duplicate the notice in Exhibit A in each file of the Source
+     Code.  If it is not possible to put such notice in a particular Source
+     Code file due to its structure, then You must include such notice in a
+     location (such as a relevant directory) where a user would be likely
+     to look for such a notice.  If You created one or more Modification(s)
+     You may add your name as a Contributor to the notice described in
+     Exhibit A.  You must also duplicate this License in any documentation
+     for the Source Code where You describe recipients' rights or ownership
+     rights relating to Covered Code.  You may choose to offer, and to
+     charge a fee for, warranty, support, indemnity or liability
+     obligations to one or more recipients of Covered Code. However, You
+     may do so only on Your own behalf, and not on behalf of the Initial
+     Developer or any Contributor. You must make it absolutely clear than
+     any such warranty, support, indemnity or liability obligation is
+     offered by You alone, and You hereby agree to indemnify the Initial
+     Developer and every Contributor for any liability incurred by the
+     Initial Developer or such Contributor as a result of warranty,
+     support, indemnity or liability terms You offer.
+
+     3.6. Distribution of Executable Versions.
+     You may distribute Covered Code in Executable form only if the
+     requirements of Section 3.1-3.5 have been met for that Covered Code,
+     and if You include a notice stating that the Source Code version of
+     the Covered Code is available under the terms of this License,
+     including a description of how and where You have fulfilled the
+     obligations of Section 3.2. The notice must be conspicuously included
+     in any notice in an Executable version, related documentation or
+     collateral in which You describe recipients' rights relating to the
+     Covered Code. You may distribute the Executable version of Covered
+     Code or ownership rights under a license of Your choice, which may
+     contain terms different from this License, provided that You are in
+     compliance with the terms of this License and that the license for the
+     Executable version does not attempt to limit or alter the recipient's
+     rights in the Source Code version from the rights set forth in this
+     License. If You distribute the Executable version under a different
+     license You must make it absolutely clear that any terms which differ
+     from this License are offered by You alone, not by the Initial
+     Developer or any Contributor. You hereby agree to indemnify the
+     Initial Developer and every Contributor for any liability incurred by
+     the Initial Developer or such Contributor as a result of any such
+     terms You offer.
+
+     3.7. Larger Works.
+     You may create a Larger Work by combining Covered Code with other code
+     not governed by the terms of this License and distribute the Larger
+     Work as a single product. In such a case, You must make sure the
+     requirements of this License are fulfilled for the Covered Code.
+
+4. Inability to Comply Due to Statute or Regulation.
+
+     If it is impossible for You to comply with any of the terms of this
+     License with respect to some or all of the Covered Code due to
+     statute, judicial order, or regulation then You must: (a) comply with
+     the terms of this License to the maximum extent possible; and (b)
+     describe the limitations and the code they affect. Such description
+     must be included in the LEGAL file described in Section 3.4 and must
+     be included with all distributions of the Source Code. Except to the
+     extent prohibited by statute or regulation, such description must be
+     sufficiently detailed for a recipient of ordinary skill to be able to
+     understand it.
+
+5. Application of this License.
+
+     This License applies to code to which the Initial Developer has
+     attached the notice in Exhibit A and to related Covered Code.
+
+6. Versions of the License.
+
+     6.1. New Versions.
+     Netscape Communications Corporation ("Netscape") may publish revised
+     and/or new versions of the License from time to time. Each version
+     will be given a distinguishing version number.
+
+     6.2. Effect of New Versions.
+     Once Covered Code has been published under a particular version of the
+     License, You may always continue to use it under the terms of that
+     version. You may also choose to use such Covered Code under the terms
+     of any subsequent version of the License published by Netscape. No one
+     other than Netscape has the right to modify the terms applicable to
+     Covered Code created under this License.
+
+     6.3. Derivative Works.
+     If You create or use a modified version of this License (which you may
+     only do in order to apply it to code which is not already Covered Code
+     governed by this License), You must (a) rename Your license so that
+     the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape",
+     "MPL", "NPL" or any confusingly similar phrase do not appear in your
+     license (except to note that your license differs from this License)
+     and (b) otherwise make it clear that Your version of the license
+     contains terms which differ from the Mozilla Public License and
+     Netscape Public License. (Filling in the name of the Initial
+     Developer, Original Code or Contributor in the notice described in
+     Exhibit A shall not of themselves be deemed to be modifications of
+     this License.)
+
+7. DISCLAIMER OF WARRANTY.
+
+     COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
+     WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+     WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF
+     DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.
+     THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE
+     IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT,
+     YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE
+     COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
+     OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
+     ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+8. TERMINATION.
+
+     8.1.  This License and the rights granted hereunder will terminate
+     automatically if You fail to comply with terms herein and fail to cure
+     such breach within 30 days of becoming aware of the breach. All
+     sublicenses to the Covered Code which are properly granted shall
+     survive any termination of this License. Provisions which, by their
+     nature, must remain in effect beyond the termination of this License
+     shall survive.
+
+     8.2.  If You initiate litigation by asserting a patent infringement
+     claim (excluding declatory judgment actions) against Initial Developer
+     or a Contributor (the Initial Developer or Contributor against whom
+     You file such action is referred to as "Participant")  alleging that:
+
+     (a)  such Participant's Contributor Version directly or indirectly
+     infringes any patent, then any and all rights granted by such
+     Participant to You under Sections 2.1 and/or 2.2 of this License
+     shall, upon 60 days notice from Participant terminate prospectively,
+     unless if within 60 days after receipt of notice You either: (i)
+     agree in writing to pay Participant a mutually agreeable reasonable
+     royalty for Your past and future use of Modifications made by such
+     Participant, or (ii) withdraw Your litigation claim with respect to
+     the Contributor Version against such Participant.  If within 60 days
+     of notice, a reasonable royalty and payment arrangement are not
+     mutually agreed upon in writing by the parties or the litigation claim
+     is not withdrawn, the rights granted by Participant to You under
+     Sections 2.1 and/or 2.2 automatically terminate at the expiration of
+     the 60 day notice period specified above.
+
+     (b)  any software, hardware, or device, other than such Participant's
+     Contributor Version, directly or indirectly infringes any patent, then
+     any rights granted to You by such Participant under Sections 2.1(b)
+     and 2.2(b) are revoked effective as of the date You first made, used,
+     sold, distributed, or had made, Modifications made by that
+     Participant.
+
+     8.3.  If You assert a patent infringement claim against Participant
+     alleging that such Participant's Contributor Version directly or
+     indirectly infringes any patent where such claim is resolved (such as
+     by license or settlement) prior to the initiation of patent
+     infringement litigation, then the reasonable value of the licenses
+     granted by such Participant under Sections 2.1 or 2.2 shall be taken
+     into account in determining the amount or value of any payment or
+     license.
+
+     8.4.  In the event of termination under Sections 8.1 or 8.2 above,
+     all end user license agreements (excluding distributors and resellers)
+     which have been validly granted by You or any distributor hereunder
+     prior to termination shall survive termination.
+
+9. LIMITATION OF LIABILITY.
+
+     UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
+     (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL
+     DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE,
+     OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR
+     ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
+     CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL,
+     WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
+     COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
+     INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
+     LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
+     RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW
+     PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
+     EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO
+     THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+10. U.S. GOVERNMENT END USERS.
+
+     The Covered Code is a "commercial item," as that term is defined in
+     48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer
+     software" and "commercial computer software documentation," as such
+     terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48
+     C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995),
+     all U.S. Government End Users acquire Covered Code with only those
+     rights set forth herein.
+
+11. MISCELLANEOUS.
+
+     This License represents the complete agreement concerning subject
+     matter hereof. If any provision of this License is held to be
+     unenforceable, such provision shall be reformed only to the extent
+     necessary to make it enforceable. This License shall be governed by
+     California law provisions (except to the extent applicable law, if
+     any, provides otherwise), excluding its conflict-of-law provisions.
+     With respect to disputes in which at least one party is a citizen of,
+     or an entity chartered or registered to do business in the United
+     States of America, any litigation relating to this License shall be
+     subject to the jurisdiction of the Federal Courts of the Northern
+     District of California, with venue lying in Santa Clara County,
+     California, with the losing party responsible for costs, including
+     without limitation, court costs and reasonable attorneys' fees and
+     expenses. The application of the United Nations Convention on
+     Contracts for the International Sale of Goods is expressly excluded.
+     Any law or regulation which provides that the language of a contract
+     shall be construed against the drafter shall not apply to this
+     License.
+
+12. RESPONSIBILITY FOR CLAIMS.
+
+     As between Initial Developer and the Contributors, each party is
+     responsible for claims and damages arising, directly or indirectly,
+     out of its utilization of rights under this License and You agree to
+     work with Initial Developer and Contributors to distribute such
+     responsibility on an equitable basis. Nothing herein is intended or
+     shall be deemed to constitute any admission of liability.
+
+13. MULTIPLE-LICENSED CODE.
+
+     Initial Developer may designate portions of the Covered Code as
+     "Multiple-Licensed".  "Multiple-Licensed" means that the Initial
+     Developer permits you to utilize portions of the Covered Code under
+     Your choice of the NPL or the alternative licenses, if any, specified
+     by the Initial Developer in the file described in Exhibit A.
+
+EXHIBIT A -Mozilla Public License.
+
+     ``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 Initial Developer of the Original Code is ________________________.
+     Portions created by ______________________ are Copyright (C) ______
+     _______________________. All Rights Reserved.
+
+     Contributor(s): ______________________________________.
+
+     Alternatively, the contents of this file may be used under the terms
+     of the _____ license (the  "[___] License"), in which case the
+     provisions of [______] License are applicable instead of those
+     above.  If you wish to allow use of your version of this file only
+     under the terms of the [____] License and not to allow others to use
+     your version of this file under the MPL, indicate your decision by
+     deleting  the provisions above and replace  them with the notice and
+     other provisions required by the [___] License.  If you do not delete
+     the provisions above, a recipient may use your version of this file
+     under either the MPL or the [___] License."
+
+     [NOTE: The text of this Exhibit A may differ slightly from the text of
+     the notices in the Source Code files of the Original Code. You should
+     use the text of this Exhibit A rather than the text found in the
+     Original Code Source Code for Your Modifications.]
+
+
+
+
+
+
+
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc.,
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
+
+
+
+
+
+
+
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
new file mode 100644
--- /dev/null
+++ b/mobile/Makefile.in
@@ -0,0 +1,62 @@
+# ***** 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.
+#
+# The Initial Developer of the Original Code is
+# the Mozilla Foundation <http://www.mozilla.org/>.
+# Portions created by the Initial Developer are Copyright (C) 2007
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+#   Mark Finkle <mfinkle@mozilla.com>
+#   Joel Maher <jmaher@mozilla.com>
+#
+# 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 *****
+
+DEPTH      = ..
+topsrcdir  = @top_srcdir@
+srcdir     = @srcdir@
+VPATH      = @srcdir@
+
+include $(DEPTH)/config/autoconf.mk
+
+DIRS       = chrome locales components modules themes app
+
+ifndef LIBXUL_SDK
+PARALLEL_DIRS += $(DEPTH)/xulrunner/tools/redit
+endif
+
+ifdef WINCE
+DIRS += installer/wince
+endif
+
+include $(topsrcdir)/config/rules.mk
+include $(topsrcdir)/testing/testsuite-targets.mk
+
+package-mobile-tests:
+	$(MAKE) stage-mochitest DIST_BIN=$(DEPTH)/$(DIST)/bin/xulrunner
+	$(NSINSTALL) -D $(DIST)/$(PKG_PATH)
+	@(cd $(PKG_STAGE) && tar $(TAR_CREATE_FLAGS) - *) | bzip2 -f > $(DIST)/$(PKG_PATH)$(TEST_PACKAGE)
new file mode 100644
--- /dev/null
+++ b/mobile/app/Makefile.in
@@ -0,0 +1,219 @@
+# ***** 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.
+#
+# The Initial Developer of the Original Code is
+# the Mozilla Foundation <http://www.mozilla.org/>.
+# Portions created by the Initial Developer are Copyright (C) 2007
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+#   Mark Finkle <mfinkle@mozilla.com>
+#
+# 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 *****
+
+DEPTH     = ../..
+topsrcdir = @top_srcdir@
+srcdir    = @srcdir@
+VPATH     = @srcdir@
+
+include $(DEPTH)/config/autoconf.mk
+
+DIRS = profile/extensions
+
+PREF_JS_EXPORTS = $(srcdir)/mobile.js
+DIST_FILES = application.ini
+
+ifndef LIBXUL_SDK
+PROGRAM=$(MOZ_APP_NAME)$(BIN_SUFFIX)
+
+CPPSRCS = nsBrowserApp.cpp
+
+LOCAL_INCLUDES += -I$(topsrcdir)/toolkit/xre
+LOCAL_INCLUDES += -I$(topsrcdir)/xpcom/base
+
+LIBS += $(JEMALLOC_LIBS)
+
+ifeq (Linux_1, $(OS_ARCH)_$(GNU_LD))
+OS_LDFLAGS += -Wl,-rpath='$$ORIGIN'
+NSDISTMODE = copy
+endif
+
+ifdef MOZ_ENABLE_LIBXUL
+APP_XPCOM_LIBS = $(XPCOM_GLUE_LDOPTS)
+else
+MOZILLA_INTERNAL_API = 1
+APP_XPCOM_LIBS = $(XPCOM_LIBS)
+endif
+
+LIBS += $(APP_XPCOM_LIBS) \
+	$(NSPR_LIBS) \
+	$(NULL)
+
+ifdef BUILD_STATIC_LIBS
+LIBS += $(DEPTH)/toolkit/xre/$(LIB_PREFIX)xulapp_s.$(LIB_SUFFIX)
+else
+ifeq ($(MOZ_WIDGET_TOOLKIT),cocoa)
+LIBS += $(DIST)/bin/XUL
+else
+EXTRA_DSO_LIBS += xul
+LIBS += $(EXTRA_DSO_LIBS)
+endif
+ifeq ($(OS_ARCH),WINNT)
+OS_LIBS += $(call EXPAND_LIBNAME,version)
+endif
+endif # BUILD_STATIC_LIBS
+
+ifdef _MSC_VER
+# Always enter a Windows program through wmain, whether or not we're
+# a console application.
+ifdef WINCE
+WIN32_EXE_LDFLAGS += -ENTRY:mainWCRTStartup
+else
+WIN32_EXE_LDFLAGS += -ENTRY:wmainCRTStartup
+endif
+endif
+endif #LIBXUL_SDK
+
+include $(topsrcdir)/config/rules.mk
+
+GRE_MILESTONE = $(shell $(PYTHON) $(topsrcdir)/config/printconfigsetting.py $(LIBXUL_DIST)/bin/platform.ini Build Milestone)
+GRE_BUILDID = $(shell $(PYTHON) $(topsrcdir)/config/printconfigsetting.py $(LIBXUL_DIST)/bin/platform.ini Build BuildID)
+APP_BUILDID = $(shell $(PYTHON) $(topsrcdir)/toolkit/xre/make-platformini.py --print-buildid)
+APP_ICON = mobile
+APP_SPLASH = splash
+
+DEFINES += -DGRE_MILESTONE=$(GRE_MILESTONE) \
+           -DGRE_BUILDID=$(GRE_BUILDID) \
+           -DAPP_BUILDID=$(APP_BUILDID) \
+           -DAPP_NAME=$(MOZ_APP_NAME) \
+           -DAPP_VERSION=$(MOZ_APP_VERSION) \
+           -DMOZ_UPDATER=$(MOZ_UPDATER) \
+           $(NULL)
+
+ifdef MOZILLA_OFFICIAL
+DEFINES += -DMOZILLA_OFFICIAL
+endif
+
+SOURCE_STAMP := $(shell cd $(srcdir)/.. && hg identify 2>/dev/null | cut -f1 -d' ')
+ifdef SOURCE_STAMP
+DEFINES += -DMOZ_SOURCE_STAMP="$(SOURCE_STAMP)"
+endif
+
+# strip a trailing slash from the repo URL because it's not always present,
+# and we want to construct a working URL in buildconfig.html
+# make+shell+sed = awful
+_dollar=$$
+SOURCE_REPO := $(shell cd $(srcdir)/.. && hg showconfig paths.default 2>/dev/null | head -n1 | sed -e "s/^ssh:/http:/" -e "s/\/$(_dollar)//" )
+# extra sanity check for old versions of hg
+# that don't support showconfig
+ifeq (http,$(patsubst http%,http,$(SOURCE_REPO)))
+DEFINES += -DMOZ_SOURCE_REPO="$(SOURCE_REPO)"
+endif
+
+ifdef WINCE
+DEFINES += -DWINCE=1
+endif
+
+ifeq ($(OS_ARCH),WINCE)
+REDIT_PATH = $(LIBXUL_DIST)/host/bin
+endif
+ifeq ($(OS_ARCH),WINNT)
+REDIT_PATH = $(LIBXUL_DIST)/bin
+endif
+
+APP_BINARY = $(MOZ_APP_NAME)$(BIN_SUFFIX)
+APP_BINARY_FASTSTART = $(MOZ_APP_NAME)faststart$(BIN_SUFFIX)
+
+ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
+
+APP_NAME = $(MOZ_APP_DISPLAYNAME)
+APP_VERSION = $(MOZ_APP_VERSION)
+
+ifdef MOZ_DEBUG
+APP_NAME := $(APP_NAME)Debug
+endif
+
+AB_CD = $(MOZ_UI_LOCALE)
+
+AB := $(firstword $(subst -, ,$(AB_CD)))
+
+clean clobber repackage::
+	rm -rf $(DIST)/$(APP_NAME).app
+
+ifdef LIBXUL_SDK
+APPFILES = Resources
+else
+APPFILES = MacOS
+endif
+
+libs repackage:: application.ini
+	mkdir -p $(DIST)/$(APP_NAME).app/Contents/MacOS
+	rsync -a --exclude CVS --exclude "*.in" $(srcdir)/macbuild/Contents $(DIST)/$(APP_NAME).app --exclude English.lproj
+	mkdir -p $(DIST)/$(APP_NAME).app/Contents/Resources/$(AB).lproj
+	rsync -a --exclude CVS --exclude "*.in" $(srcdir)/macbuild/Contents/Resources/English.lproj/ $(DIST)/$(APP_NAME).app/Contents/Resources/$(AB).lproj
+	sed -e "s/%APP_VERSION%/$(APP_VERSION)/" -e "s/%APP_NAME%/$(APP_NAME)/" -e "s/%APP_BINARY%/$(APP_BINARY)/" $(srcdir)/macbuild/Contents/Info.plist.in > $(DIST)/$(APP_NAME).app/Contents/Info.plist
+	sed -e "s/%APP_VERSION%/$(APP_VERSION)/" -e "s/%APP_NAME%/$(APP_NAME)/" $(srcdir)/macbuild/Contents/Resources/English.lproj/InfoPlist.strings.in | iconv -f UTF-8 -t UTF-16 > $(DIST)/$(APP_NAME).app/Contents/Resources/$(AB).lproj/InfoPlist.strings
+	rsync -a $(DIST)/bin/ $(DIST)/$(APP_NAME).app/Contents/$(APPFILES)
+	$(RM) $(DIST)/$(APP_NAME).app/Contents/$(APPFILES)/mangle $(DIST)/$(APP_NAME).app/Contents/$(APPFILES)/shlibsign
+ifdef LIBXUL_SDK
+	cp $(LIBXUL_DIST)/bin/xulrunner$(BIN_SUFFIX) $(DIST)/$(APP_NAME).app/Contents/MacOS/$(APP_BINARY)
+	rsync -a --exclude nsinstall --copy-unsafe-links $(LIBXUL_DIST)/XUL.framework $(DIST)/$(APP_NAME).app/Contents/Frameworks
+else
+	rm -f $(DIST)/$(APP_NAME).app/Contents/MacOS/$(PROGRAM)
+	rsync -aL $(PROGRAM) $(DIST)/$(APP_NAME).app/Contents/MacOS
+endif
+	printf "APPLMOZB" > $(DIST)/$(APP_NAME).app/Contents/PkgInfo
+
+else # MOZ_WIDGET_TOOLKIT != cocoa
+
+libs::
+ifdef LIBXUL_SDK
+	cp $(LIBXUL_DIST)/bin/xulrunner-stub$(BIN_SUFFIX) $(DIST)/bin/$(APP_BINARY)
+endif
+ifdef MOZ_FASTSTART
+ifdef _MSC_VER
+ifdef WINCE
+	cp $(LIBXUL_DIST)/bin/faststartstub$(BIN_SUFFIX) $(DIST)/bin/$(APP_BINARY_FASTSTART)
+endif
+endif
+endif
+ifndef SKIP_COPY_XULRUNNER
+ifdef LIBXUL_SDK
+	$(NSINSTALL) -D $(DIST)/bin/xulrunner
+	(cd $(LIBXUL_SDK)/bin && tar $(TAR_CREATE_FLAGS) - .) | (cd $(DIST)/bin/xulrunner && tar -xf -)
+endif
+endif # SKIP_COPY_XULRUNNER
+
+	$(NSINSTALL) -D $(DIST)/bin/chrome/icons/default
+
+ifneq (,$(filter WINNT WINCE,$(OS_ARCH)))
+	cp $(srcdir)/$(APP_ICON).ico $(DIST)/bin/chrome/icons/default/$(APP_ICON).ico
+	cp $(srcdir)/$(APP_SPLASH).bmp $(DIST)/bin/$(APP_SPLASH).bmp
+	$(REDIT_PATH)/redit$(HOST_BIN_SUFFIX) $(DIST)/bin/$(APP_BINARY) $(srcdir)/$(APP_ICON).ico
+endif
+
+endif
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..06a33376ae618913d5bf2ecbed646e0016353fd0
GIT binary patch
literal 1667
zc%17D@N?(olHy`uVBq!ia0vp^Y9P$P1|(P5zFY^SBuiW)N`mv#O3D+9QW+dm@{>{(
zJaZG%Q-e|yQz{EjrrIztFsEgPM3hAM`dB6B=jtVb)aX^@7BGN-jeSKyVsdtBi9%9p
zdS;%j()-=}l@u~lY?Z=IeGPmIoKrJ0J*tXQgRA^PlB=?lEmM^2?G$V(tbhjOrj{fs
zROII56<bx<DuK<l0<uBE`br95B_-LmN)Sgy_y#CA=NF|anCcnmCL5R;D3}@Q85*0I
zo15z>7#SEE=o=X68ye{vnp+tgSs558K!Fm_wxX0Ys~{IQs9ivwtx`rwNr9EVetCJh
zUb(Seeo?x<p{1oI$P6PRU7!lx;>x^|#0uTKVr7^KE~&-IMVSR9nfZANAbw&}erbuV
zk`l}dxdpzyaD(%Tp#cR9GX09g0)0b01O41weVFRvlAzQy{HlvXDhpEegHnt0ON)|$
z@sXyCWEFm`Aca8JSos%a0wX0c$0a|xG&eP`#M8xA2`HnNl9^&<U}RxnXlQO?U~Xh!
zW?^V(X=q?+>FDHYW^CkQYH45yGXtAm7ehBAV^bqbOA}*9Lqiug3v*WsXJc1GS2tG^
zOIJ4&m|oAk;*!L?<W!j6OoUzwyn3yii&7Iy@{2<9^K)P+ARr^ZB)>Q#zd*q`*i^wc
zF*!32#0NzW)TOCKnPsUdZbkXI3gGay%EV&7fiWR}L-eMQ6K48A$LOOa7MKt)1%jCH
zqz~l4Gf!$BFvk=Dv&J6TqGARHrp=x%jv*Dd-pttB{m4P&fO?%fH>>@}1a3#2HM%Yv
zHf_7*6jp8h-6G{9*XzlL>kq_<cduQuHb>_V_mRAZE|1v5j=jHQb5J$QXr{|!x#M;c
zPR|~n)z5#n*Id|5faQxm*Jsu;-UzL!n+jyUcR&B>{^wVLdRzIl)cZAd_s^H@-fI^&
z>xeB6+u{8E_y6};EAGDA*W<Q$oy+dKe7a)Y>^VL1JckdY+*ds~$M5;%t68=Vjc>kJ
zM=m{?BJ{LqXZNqFy?s`5`R*1O@)TLfa7Z(+4O^{lIK%PI#iWfDg^su1hHdn4Y;>@V
zV6yAlc3_Ud_K5SHM;Bbyozs|-dCO2d;ltMLH>|HWNuCqEG%d$W+mi9h>Wj*Ho5Uu+
zD&Wud>{V`hxTEdU&poR+XPsS^QoA<H*}^ZdIaX)sjn7w{CbE=F+!OPC>6Kk)TsE9d
zE9R)G;(W0@_p)kC#zqOlzJpP(GYv2J-*#hVtNf_(vP4R>`{?QeM|N(BTDvH0btz+6
z(VNbrNlhnHg61r^{r29KNgpfzFkE~6RU&fzm10fL>i!o~m)I^?E|V-N_{O;JmVlOs
z?l;MVu8IF;attJ7<~=O<u~={N$qY7&SC+3>HK(60(e(5>(v>He;Jk3ct|=@}wk$s%
zw6aC2x9v&gnxK^{{5+q3o_A!UgMz|?*_V$0F0hyqD#F8-di%+-iN_djWSAtS=&G?@
zo)x#HC(!2e<*KFAQv9Wg?bbg#VL#Vz;_0WmR?I*D+?-K4&W)>;DO79X?tl)~l9fAq
z=H%2(OJ&`Bb4|wD&+CQvPrmhpg^%ySMw|1-lM>8k_kOOhx%aW6=K6{EU#l*r7)k0+
z_n!YmuG?+#`n>JGC7HC27iR2@d(FkNpX~uVUkb~f^!QYBd$syb7bT5}9yUqpKg#&C
uABz4qo_+S-ufP9JUzb1nU+B$x24)7^%_VksCk4xZss&G1KbLh*2~7aWsC`!e
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..5b3daa54517886abfb729531a627b8edbe98b7ac
GIT binary patch
literal 1657
zc%17D@N?(olHy`uVBq!ia0vp^Y9P$P1|(P5zFY^SBuiW)N`mv#O3D+9QW+dm@{>{(
zJaZG%Q-e|yQz{EjrrIztFsEgPM3hAM`dB6B=jtVb)aX^@7BGN-jeSKyVsdtBi9%9p
zdS;%j()-=}l@u~lY?Z=IeGPmIoKrJ0J*tXQgRA^PlB=?lEmM^2?G$V(tbhjOrj{fs
zROII56<bx<DuK<l0<uBE`br95B_-LmN)Sgy_y#CA=NF|anCcnmCL5R;D3}@Q85*0I
zo15z>7#SEE=o=X68ye{vnp+tgSs558K!Fm_wxX0Ys~{IQs9ivwtx`rwNr9EVetCJh
zUb(Seeo?x<p{1oI$P6PRU7!lx;>x^|#0uTKVr7^KE~&-IMVSR9nfZANAbw&}erbuV
zk`l}dxdpzyaD(%Tp#cR9GX09g0)0b01O41weVFRvlAzQy{HlvXDhpEegHnt0ON)|$
z@sXyCWEFm`Aca8JSos%a0wX0c$0a|xG&eP`#M8xA2`HnNl9^&<U}RxnXlQO?U~Xh!
zW?^V(X=q?+>FDHYW^CkQYH45yGXtAm7ehBAV^bqjOA}*9Lqiug3v*WsXJc1GS2tG^
zOIJ4&m|oAk;*!L?<W!j6OoUz&yn3yii&7Iy@{2<9^K)P+ARr^ZB)>Q#zd*q`*i^wc
zF*!32#0NzW)TOCKnPsUdZbkXI3gGay%EV&7fiWR}L-eMQ6K48A$LOOa7MKt)1%jCH
zqz~l4Gf!$BFvk=Dv&Q;`YkxB^Fs<}-aSW-r^=8J&u2&8sZQ6Yn3l_MsE-ZiKB=hZ^
zi(?E&lfo8-A1u0iGj{kFJX}}P756pD<!E|AOvi3E$43lJ8htOVoDQ7xO;Y8%ae<vr
zX!R?5`Q?7Av|Kmpbjw`~dExjr@u10a{*4hn#|_ThznV4mV84HP(hm~}9(ljzpZ)j7
z-REdp8M3NgZ~AN2awoUNf-A4Snl1G9d-awWz4--3ahhFC39gO?tFQiAbNzLHKtlWB
zhszQq*k<~uwM=fj_WJ8)jTwH+7jImAH_u&X&63`H0paz0TQYhb+dQWCCvEI-S~wwP
ze%R_(ucbm0<?74+F*jGLZ!8Xokq@%<G!Re}ofQ1Q>(}3=SRS`uZj+=|-aCKhM%nJE
zTmMav$k2MZykh5$vSTXKxmUDb?lG0>?LN5b>Z*)r6DiTPuAUpBZ)@_%`y74GQGB*?
zVZaVak&OArCb2xe=XI`nuiUBUpTpakd@npZKKYEq{oQx<PCYFOZ)VcHAkyV(Gj-1P
z+qqNDrs=ma@m>(>DirfM<7hDXq()oQ#s!L^&VmvabJkyaxg|$Kf;sv8OJVW-6Pz1D
zv|M>uYZG}ozik)(@Urvj<BuDDG`DCZC<r(_EsEUaZ#2_ou3vk_Q+dAjDGD=gzg1&n
z=4NYN5wwzHo2pP}vhPHxhF&-2M1%IjirhWccGt7E=KnwX_~YX*Ck+{9`=}jCFq_>Q
zx=EE$X8Za>|J22~cr4O3&oq$uw=QMsyQvQge*CzdV<y_m-uJUck0;G+_RZ?NM>QLc
zCOLM_OV}EvJF(-&=8)MhSi9VmYu_AHO71@D)PMZ(?lkV}W+MM0M9#ebzW?^yZ_^JZ
zG)S~L&OZBWnL~jogSbW9dU4<7m&*eUW-Ys4V<+F`q9hrUJ<s~;HG%!T@_+08`<6WY
hzc=vD$%J?&9)=o*)QY`Z=dS`)2A-~dF6*2Ung9vHZ^!@u
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..9d0a35c192cdcb574d574fe1bf6a326e156046a0
GIT binary patch
literal 1432
zc$}S74NMbf7%oZ{Bq7>513Dp>gUH6D_tXD_!b-2D1<Ocjlo`@++#U3U-j(Y?3q}&%
z7|~@qC9-S`r!p6r8yX`S3<y6%a6tl2nK}Z?%-jOZEwF{5j=4LeWLXSL_9b`sz2Emf
z&-;Ieb8|AIBDY1#WU?r`4R?y)t<n?mocJD?t|cWwu;dGQT(J-!cv@znxFQ;`dx;X-
zNfT66`B!wROt!w5apep7j$IhZd6k5uqYQd|GHIoz2Ym!tN((>{UBa+N@Yl{B5MU@H
zxJToF9X>PdVQkeromZXXBCAVD0|ln10jWVuB=FJ#0R+8etRD*+!DU`d+)Kw02rR1z
zrAF|nQ~8cuz|8S9pi#ofB&>x2EuutJYMoBE6F^}EhF}yz&}2l1sZb1tft3Y{)_AHI
zbK=$&TcTtHJ%ZrFASe(BC<7`b$Cp5e!C;U$P&8T8NcLB;0ufAR{qZ3Noc5DE;}aN;
z1tgg$;wl6q2!=xN`W%i`V%EQsC^2PFknll>5{A59D5UKdoOJQp+J0A+kA|GIpR3?W
zu^z?o|1h;SR8kbZ!CvJVu_#0t&XE;fnicH05fpEf6hmRKS`Q<LP7Ui&SgS`60|FZi
zrVNW#h2k0mjD$Fzh0Vy&<FM8O8`LTjg5XxY&Z0M~EQrNwQ5!5)bqH%`{Q|*~bO_6=
zVsY!5Sj^1RguwAGjw=gwK(2=qIKPMU0p>gn;2=nbm1L<rE1uFkQ%O@+p7R3B`Nf!L
z*oQU$757st^?z~(iOxX(YL?KE*n!e^we>||b$Do2oETmljoJ<)E0cv?v*RXL@Y`Fv
zyN~q0vS|vpyl^-o>*(yREjxc6$VeUg<5HHp_g>sRx9NM}By`5tP(l+eZ%3H=1_z(C
z*OOnemm3F$C;JY-)KJqTS5sMXa{G{}Cu-|b*w@t9zBaeEab)5_<%PtBf`;_r`}4CD
z`moRzS=)cfmDF;zNKT{gahpFFEx9uBU}iC8U}m%V?2AX<AHJVzPJgtN*4+5<O9|^T
zH`cwr%@&<g|8lvU&K})g+f$%q!@=pw&M7da?(U)9nuE5&b<x*j16V8-^X6Fg@a32T
zaLnl&p6Aay0L9{*fOROWz3cDPx8WYe4u$=MqABV4FUMv36^plTR`2~`!|6%3^Sim=
z_P5@+(}xiWA05*)j?~4UiIsm7z9X(9k<iB-yDo2F6yVM2TU*W!nLgWX{;RuPGna`r
zj>IK(wa%WZ>2^Py&N}Dpcc>lY?_yxpU$iG|+F+Dd;LSfyf9jiv+<0L;vSnru+2&1|
zN3Ggx?u&_C<6V!#7l<e)7>NIHH05sD!qBM#{ovyz_k8-^(m&BO=-uqr&&$Iu?mOo+
ziCK(2Z*RT<e=<IkqIK3=4>n!->9-EK?RL+TY$3W(W-NH^ovBAhuS)+)yCny2%_uzd
EHwtVCcmMzZ
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..a604e27e79089a1b5e3dd8f35620ef23e1136a9b
GIT binary patch
literal 1448
zc%17D@N?(olHy`uVBq!ia0vp^k|4~%1|*NXY)uAnN?apKg7ec#$`gxH85~pclTsBt
za}(23gHjVyDhp4h+AuIMr)7pjltlRYSS9D@>Lr5I=vCwvFo1xKeMLcHa&~HoLQ-ma
zW}dCm``!DM6f#q6mBLMZ4SWlnQ!_F>s)|yBtNcQetFn_VQ<UuO6l^N2fCl8ImLw`v
z<mTiRTUFR9fz7o7vO&W7N(x{lCE2!05JyG$1}He^7o{qg>KW)J8<-g=m>KFB8k?A#
zo9ieT85kPq8yM*u8tEFETNxW!85k%)ffCTRqLehNAQv~NT|l0#QbtKhft9{~d3m{B
zxv^e;QM$gNrKKgv3?n05pbFjM%Dj@q3f;V7Wta&rsl~}fnFS@8`FRQ;eqvI7X^E|p
z63h#^1-`y;gY$}^0R;>){ffi_eM3D1{oGuAnCjw^pwu+{s*6J^3sUuiQj7CTi;{uy
zk*17f6@INCg+SL>`4?pZBPB7%B|o_|H#M)s)5TT^D5IB>nPO#NVqsutXl`O)Ze(C)
zVQ6S+XkcmS=;Uf<Y~*5UX<!I51DjqaCkqz?GZ$w|6Jtk1Ll-v-b5{#zV^>30H&+u&
zS2q)wUeCPZlEl2^RG8jOgkC4Sdaay`QWHz^i$e1Ab6_bTAS1sdzc?emK*2fKRKYhf
zIWrH$2SpFmrKv@kWvMA{Mftf3;PAD|#A3gJDItGD^rny#X8J(K=%XbTm=G`pf|&56
z59GizPih`8#}omx#+Hf3dJGJVH#}V&Ln>}vnYOp<kb^*jy5mJR5yz7gL$)m{OM2Sa
z+S&^O*QR|J2>-=&{TGXp*rCX{$MW04IAyrZ%>F&xrR=h4`^_hl9vtM=nN^s!@9x|)
zJwl2s^K^~=G`5`4e_Hgjbo0$U@$0WAJ(zp?Q@GXKy4gNz^LbPzdVC39Ic1WMnxYKf
zZ?-w-({H>jbNzL5dA~l7id?_;#f&eB5-tUc+YdWFT-P0Ux%Q^#_S>ya3lF?}{@L<N
zm2I?q_8RslMLRkC6W9&DD#`a8cf2q|?Myh|oi98tlT^-6xcu@<O~>-d9c53xtAy3Q
zP_ML+t8U_HclHZk88Tz?i7=yeWxHipxLvs4lge!=*S{e`XTjC1pG*tne<jN(9*K!a
zIh%G_nBnck^HS~24`icw(>6<*NcF}uUf_GX_Ftdn#&s`CxV~216>QkQc<$W&nv*QI
zgoLUt>N@|l$UuU}qIPXq^V1^DH?eJr9y~4I>K|PR`}EVM$8GWP;;m78)gx6n7Jlw*
zz3|QFj+UIX(lx<rjA}PM4fN(}>!^rzPxMfEG%JN=Cu6_|(|hl~>$qGtnd|3Px;Ktp
zD#{|%cqUKI_GstprM;QjOM_NUKAUF0VxmyVvCF=7>%&&_eJ}g_d%uf0BOAkfMTZkB
TCQm#MDmy)0{an^LB{Ts5b7u|@
new file mode 100644
--- /dev/null
+++ b/mobile/app/application.ini
@@ -0,0 +1,26 @@
+#filter substitution
+[App]
+Vendor=Mozilla
+Name=Fennec
+Version=@APP_VERSION@
+BuildID=@APP_BUILDID@
+#ifdef MOZ_SOURCE_REPO
+SourceRepository=@MOZ_SOURCE_REPO@
+#endif
+#ifdef MOZ_SOURCE_STAMP
+SourceStamp=@MOZ_SOURCE_STAMP@
+#endif
+ID={a23983c0-fd0e-11dc-95ff-0800200c9a66}
+
+[Gecko]
+MinVersion=1.9.2b5pre
+MaxVersion=@GRE_MILESTONE@
+
+[XRE]
+EnableExtensionManager=1
+
+[Crash Reporter]
+#if MOZILLA_OFFICIAL
+Enabled=1
+#endif
+ServerURL=https://crash-reports.mozilla.com/submit
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..2766f49d5d03b943fb19a922a5fbe68bd678869d
GIT binary patch
literal 6148
zc%1E+y>7xV6ot<X87y_l$mmCC-@u~q1iSzW{SgvM254EcvGc^>_)u9QNbN)g=aZ~&
zu<y0A`1%HbO}^e<fC_*^GWHn6aa>Sjwm!!@8f>xo*sY$2a}DNjctzVsX7Tm9t<MLG
ztd`Ap++}$EX18ve&(qxDm-`AKgb<HPs-|#Hw>^ds;vW+42TupOOE%6IbeY9ew5J2z
zB^%cjbV)n9qCFkxE}55>vH39WZ0t~s4TE_){OOa0co;@WRjmIrT<!mb5O<7~)A@9Q
ipN8OqSZn=hEb^c$kANcmEF5R+JRRsRSq}jrZp9G?b{&iW
new file mode 100644
--- /dev/null
+++ b/mobile/app/macbuild/CVS/Entries
@@ -0,0 +1,7 @@
+D/Contents////
+/background.png/1.1/Sun Dec  2 23:08:12 2007/-kb/
+/disk.icns/1.1/Sun Dec  2 23:08:12 2007/-kb/
+/document.icns/1.1/Sun Dec  2 23:08:12 2007/-kb/
+/dsstore/1.1/Sun Dec  2 23:08:12 2007/-kb/
+/firefox.icns/1.3/Sun Dec  2 23:08:12 2007/-kb/
+/license.r/1.4/Mon May  5 00:40:25 2008//
new file mode 100644
--- /dev/null
+++ b/mobile/app/macbuild/CVS/Repository
@@ -0,0 +1,1 @@
+mozilla/browser/app/macbuild
new file mode 100644
--- /dev/null
+++ b/mobile/app/macbuild/CVS/Root
@@ -0,0 +1,1 @@
+:pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot
new file mode 100644
--- /dev/null
+++ b/mobile/app/macbuild/Contents/CVS/Entries
@@ -0,0 +1,2 @@
+D/Resources////
+/Info.plist.in/1.18/Tue Feb 19 05:11:34 2008//
new file mode 100644
--- /dev/null
+++ b/mobile/app/macbuild/Contents/CVS/Repository
@@ -0,0 +1,1 @@
+mozilla/browser/app/macbuild/Contents
new file mode 100644
--- /dev/null
+++ b/mobile/app/macbuild/Contents/CVS/Root
@@ -0,0 +1,1 @@
+:pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot
new file mode 100644
--- /dev/null
+++ b/mobile/app/macbuild/Contents/Info.plist.in
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>English</string>
+	<key>CFBundleDocumentTypes</key>
+	<array>
+		<dict>
+			<key>CFBundleTypeExtensions</key>
+			<array>
+				<string>html</string>
+				<string>htm</string>
+				<string>shtml</string>
+				<string>xht</string>
+				<string>xhtml</string>
+			</array>
+			<key>CFBundleTypeIconFile</key>
+			<string>document.icns</string>
+			<key>CFBundleTypeName</key>
+			<string>HTML Document</string>
+			<key>CFBundleTypeOSTypes</key>
+			<array>
+				<string>HTML</string>
+			</array>
+			<key>CFBundleTypeRole</key>
+			<string>Viewer</string>
+		</dict>
+		<dict>
+			<key>CFBundleTypeExtensions</key>
+			<array>
+			    <string>text</string>
+				<string>txt</string>
+				<string>js</string>
+				<string>log</string>
+				<string>css</string>
+				<string>xul</string>
+				<string>rdf</string>
+			</array>
+			<key>CFBundleTypeIconFile</key>
+			<string>document.icns</string>
+			<key>CFBundleTypeName</key>
+			<string>Text Document</string>
+			<key>CFBundleTypeOSTypes</key>
+			<array>
+				<string>TEXT</string>
+				<string>utxt</string>
+			</array>
+			<key>CFBundleTypeRole</key>
+			<string>Viewer</string>
+		</dict>
+		<dict>
+			<key>CFBundleTypeExtensions</key>
+			<array>
+				<string>jpeg</string>
+				<string>jpg</string>
+				<string>png</string>
+				<string>gif</string>
+			</array>
+			<key>CFBundleTypeIconFile</key>
+			<string>fileBookmark.icns</string>
+			<key>CFBundleTypeName</key>
+			<string>document.icns</string>
+			<key>CFBundleTypeOSTypes</key>
+			<array>
+				<string>GIFf</string>
+				<string>JPEG</string>
+				<string>PNGf</string>
+			</array>
+			<key>CFBundleTypeRole</key>
+			<string>Viewer</string>
+		</dict>
+	</array>
+	<key>CFBundleExecutable</key>
+	<string>fennec</string>
+	<key>CFBundleGetInfoString</key>
+	<string>%APP_NAME% %APP_VERSION%</string>
+	<key>CFBundleIconFile</key>
+	<string>fennec</string>
+	<key>CFBundleIdentifier</key>
+	<string>org.mozilla.fennec</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>%APP_NAME%</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleShortVersionString</key>
+	<string>%APP_VERSION%</string>
+	<key>CFBundleSignature</key>
+	<string>MOZB</string>
+	<key>CFBundleURLTypes</key>
+	<array>
+		<dict>
+			<key>CFBundleURLIconFile</key>
+			<string>document.icns</string>
+			<key>CFBundleURLName</key>
+			<string>http URL</string>
+			<key>CFBundleURLSchemes</key>
+			<array>
+				<string>http</string>
+			</array>
+		</dict>
+		<dict>
+			<key>CFBundleURLIconFile</key>
+			<string>document.icns</string>
+			<key>CFBundleURLName</key>
+			<string>https URL</string>
+			<key>CFBundleURLSchemes</key>
+			<array>
+				<string>https</string>
+			</array>
+		</dict>
+		<dict>
+			<key>CFBundleURLName</key>
+			<string>ftp URL</string>
+			<key>CFBundleURLSchemes</key>
+			<array>
+				<string>ftp</string>
+			</array>
+		</dict>
+		<dict>
+			<key>CFBundleURLName</key>
+			<string>file URL</string>
+			<key>CFBundleURLSchemes</key>
+			<array>
+				<string>file</string>
+			</array>
+		</dict>
+	</array>
+	<key>CFBundleVersion</key>
+	<string>%APP_VERSION%</string>
+	<key>NSAppleScriptEnabled</key>
+	<true/>
+	<key>CGDisableCoalescedUpdates</key>
+	<true/>
+</dict>
+</plist>
new file mode 100644
--- /dev/null
+++ b/mobile/app/macbuild/Contents/Resources/CVS/Entries
@@ -0,0 +1,1 @@
+D/English.lproj////
new file mode 100644
--- /dev/null
+++ b/mobile/app/macbuild/Contents/Resources/CVS/Repository
@@ -0,0 +1,1 @@
+mozilla/browser/app/macbuild/Contents/Resources
new file mode 100644
--- /dev/null
+++ b/mobile/app/macbuild/Contents/Resources/CVS/Root
@@ -0,0 +1,1 @@
+:pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot
new file mode 100644
--- /dev/null
+++ b/mobile/app/macbuild/Contents/Resources/English.lproj/CVS/Entries
@@ -0,0 +1,2 @@
+/InfoPlist.strings.in/1.4/Wed Jan  2 19:06:47 2008//
+D
new file mode 100644
--- /dev/null
+++ b/mobile/app/macbuild/Contents/Resources/English.lproj/CVS/Repository
@@ -0,0 +1,1 @@
+mozilla/browser/app/macbuild/Contents/Resources/English.lproj
new file mode 100644
--- /dev/null
+++ b/mobile/app/macbuild/Contents/Resources/English.lproj/CVS/Root
@@ -0,0 +1,1 @@
+:pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot
new file mode 100644
--- /dev/null
+++ b/mobile/app/macbuild/Contents/Resources/English.lproj/InfoPlist.strings.in
@@ -0,0 +1,1 @@
+CFBundleName = "%APP_NAME%";
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..e52f31d051010215470ae91fc84a6d29d8645efa
GIT binary patch
literal 1143
zc%17D@N?(olHy`uVBq!ia0y~yV4MKNIvh+uk)*3dQyCao>^xl@Ln`LHxx&cHz`$`p
zA^rckS&yY#68IF7*cF^29NIQC@FX%y9%3?TVNK!SJ|Q4BK~YD+nS2RZb^!_u=wWAI
z`2Qd1T27!B8W#Lte_QYcM=NU%2lovDu?>nk3C<A*fXa9i8Kn;~nY9eC1k0#nM;$vX
f9ox$QQpU{S^vQqmo7HMxfLsPoS3j3^P6<r_lQ?mb
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..e97e490585226e69da9cfff20b3b4db2384d963e
GIT binary patch
literal 39250
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
Ku%Q3iLi>LY_s)3$
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..f5af7a70fc77eec683544b9b1d7c18c05656e499
GIT binary patch
literal 46788
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
F{XZcap(_9Y
new file mode 100755
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..00b8f9a30536028b4380cc3915b48c2cc1eb47d6
GIT binary patch
literal 6148
zc%1E+U2GIp6oAi}F0zGEhn5hupu>*{)YcL}3Hq=pH9#b=#spuineGqUhGloN-Ol(!
z!tF&RBs}n76couOl33-(s(>aop(Ge<(uXzc112i_Kn#kBHQ~Vr&3f+4+1@QI@litd
zZ0?@>&73>;%$&1x&s_k(?xEOP022U$;OoE~s3}2iw~0|@fa)6Q2=$u6(OfrxJhVKd
zj>|(GBQFf3V!n+(4vWK<>d?8Eccf9w!YfDHR2Q$Du`#PB5etp&{@4w#X_th7m!da3
z`%AlyB&`mTXfB&nx8aUKGawd^g{SAdU-4m~7>nL`(x=|@#urbNU_RVe``)!+$KH5q
zNZAkPXB;mMPpFnn#B<q%njec88JyG>eNNI60lZo~<=J2Tr2vL#sEotQuJWr9U)pc7
z|7)Q^`6)ef?4|EE8nG}a0B0YbwK<(kSDp`E{VD7}rDiPc{K`92dUc%Ci_}|I<2DSh
zp?dZ^uBqAXc*Cm?gsZVSo|^~VT=gTs;)XE!Yirv=fz*l_*L!&BRJjZ=IcaRiNY3`{
zI%50FunxL~0WJSLMX@N<jAuL0^IC5WuKN0>yY`Pi=?=DF?}a=a+p2vykb$kR4R*lJ
z{bh=8ukhpBd%gsZ!=uquPF>BQ*ldK5SisysY(q(`VGa<-U`niJo<-b`AXYKoN1Q}c
zRIWFhID?j0$=pbs!!Gd%^Bm%rF(g(n&n4c6VX>UKiCCa5mNBm*ej37}m3ck!TR19~
zFmE6}isNE2^Ap6!u^`%*pCry>Nj%6LCq9W&;sNH}#3KfXMf}|S-)?93vs-#1$?D%P
zuAzRbe|FpET{|P`bP|2s?GALYu?fH7Mq{BdF%V5Tl~6$EK-5XIMT_cBCqXEcPQ|Bf
za)bR|DmVE@G6T_^Kgye2eN(yyd*bnIxG%e>Mvh)w^4y87?OwN~Ino#1lgOrrQnAiV
zDpAAwKc$tfcd!EGvP#$Kms~~WcItVQ*Xjq<LRQNwZf>eF*mSE;&F~Pl2=qY|_CNx%
zkcJ^hK@2(}LpnjPsul`L55(z{g)muW$<kDTy13-f&otY7?ti0v^n7Z%&AyX#1~S`{
z>F9K%04AutT`u#TQF7Cmy=0ezS8lO9Ld~wStjj$pydDSV{=aV2r7m^33q`#jEY=~`
z!q>>>4c39GF(zw^b%?d_HL{(-I>0)}+GK694zU)#=9d=ox{N$C@(u+}))wnf#j)a<
zl2<>D{jgNcjl~bBW<6Wk*iijAX6sv5`-At}{c$5<+8tEYkIw0t^`rAWl;r2Sesr$D
zl>AKBkIs(>@>5+uIwdsasIDKKYiP+&bp7aD$1ZtR*N@Kc7?Njn{pd_#Sf1APqjM8&
zc}mxh&gjhg(GB7#fUY0iCLEUsb^Yj?Sdee(`q5p0CHaP~AKgVbC12O|qr2Dud4M@V
zY#FAM%>BeG3`-6(zeE0<16#B(A0?iIae1Ek7;ym#@*MNK#9u;2%xC_VuD8nQlEUYP
z>vVoxl_$)<5?_YA{DS!g@dS*@3qA)_eE!0W{FqtA=Wi79BW8+^3wT71FjIWo0OsX~
zKF=<Y{TK)_kNG<~ztITGcHZqFogaZNVdNrS@uc{;iW{@ampqtaF|+dLBv_)&_4mXS
ze|NnRQv0@6fB##eLAG3@d8JMH_L$B$HwL4kQRka$Lte~bo=3co@@tXK2X{N=Lwi*`
z`(a$Dyl?Px-Bj!UGk4zq*QG9XxrYS<J<s=agZ_i=R#9uMMa`}ZfZBxs+p2d<<^P4d
QuMnuO|Mm61zWxXQ1^GSl!~g&Q
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..17263f5b2dd0348616205d77894573bc27433008
GIT binary patch
literal 40590
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
K-zn=a-TptQ0)hGf
new file mode 100644
--- /dev/null
+++ b/mobile/app/macbuild/license.r
@@ -0,0 +1,117 @@
+// See /System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Script.h for language IDs.
+data 'LPic' (5000) {
+  // Default language ID, 0 = English
+  $"0000"
+  // Number of entries in list
+  $"0001"
+
+  // Entry 1
+  // Language ID, 0 = English
+  $"0000"
+  // Resource ID, 0 = STR#/TEXT/styl 5000
+  $"0000"
+  // Multibyte language, 0 = no
+  $"0000"
+};
+
+resource 'STR#' (5000, "English") {
+  {
+    // Language (unused?) = English
+    "English",
+    // Accept (Agree)
+    "Accept",
+    // Decline (Disagree)
+    "Decline",
+    // Print, ellipsis is 0xC9
+    "Print…",
+    // Save As, ellipsis is 0xC9
+    "Save As…",
+    // Descriptive text, curly quotes are 0xD2 and 0xD3
+    "You are about to install\n"
+    "Minefield.\n"
+    "\n"
+    "Please read the license agreement.  If you agree to its terms and accept, click “Accept” to access the software.  Otherwise, click “Decline” to cancel."
+  };
+};
+
+// Beware of 1024(?) byte (character?) line length limitation.  Split up long
+// lines.
+// If straight quotes are used ("), remember to escape them (\").
+// Newline is \n, to leave a blank line, use two of them.
+// 0xD2 and 0xD3 are curly double-quotes ("), 0xD4 and 0xD5 are curly
+//   single quotes ('), 0xD5 is also the apostrophe.
+data 'TEXT' (5000, "English") {
+  "MINEFIELD END-USER SOFTWARE LICENSE AGREEMENT\n"
+  "Version 3.0, May 2008\n"
+  "\n"
+  "A SOURCE CODE VERSION OF CERTAIN MINEFIELD BROWSER FUNCTIONALITY THAT YOU MAY USE, MODIFY AND DISTRIBUTE IS AVAILABLE TO YOU FREE-OF-CHARGE FROM WWW.MOZILLA.ORG UNDER THE MOZILLA PUBLIC LICENSE and other open source software licenses.\n"
+  "\n"
+  "The accompanying executable code version of Minefield and related documentation (the “Product”) is made available to you under the terms of this MINEFIELD END-USER SOFTWARE LICENSE AGREEMENT (THE “AGREEMENT”).  BY CLICKING THE “ACCEPT” BUTTON, OR BY INSTALLING OR USING THE MINEFIELD BROWSER, YOU ARE CONSENTING TO BE BOUND BY THE AGREEMENT.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT, DO NOT CLICK THE “ACCEPT” BUTTON, AND DO NOT INSTALL OR USE ANY PART OF THE MINEFIELD BROWSER.\n"
+  "\n"
+  "DURING THE MINEFIELD INSTALLATION PROCESS, AND AT LATER TIMES, YOU MAY BE GIVEN THE OPTION OF INSTALLING ADDITIONAL COMPONENTS FROM THIRD-PARTY SOFTWARE PROVIDERS.  THE INSTALLATION AND USE OF THOSE THIRD-PARTY COMPONENTS MAY BE GOVERNED BY ADDITIONAL LICENSE AGREEMENTS.\n"
+  "\n"
+  "1.  LICENSE GRANT.  The Mozilla Corporation grants you a non-exclusive license to use the executable code version of the Product.  This Agreement will also govern any software upgrades provided by Mozilla that replace and/or supplement the original Product, unless such upgrades are accompanied by a separate license, in which case the terms of that license will govern.\n"
+  "\n"
+  "2.  TERMINATION.  If you breach this Agreement your right to use the Product will terminate immediately and without notice, but all provisions of this Agreement except the License Grant (Paragraph 1) will survive termination and continue in effect.  Upon termination, you must destroy all copies of the Product.\n"
+  "\n"
+  "3.  PROPRIETARY RIGHTS.  Portions of the Product are available in source code form under the terms of the Mozilla Public License and other open source licenses (collectively, “Open Source Licenses”) at http://www.mozilla.org/MPL.  Nothing in this Agreement will be construed to limit any rights granted under the Open Source Licenses.  Subject to the foregoing, Mozilla, for itself and on behalf of its licensors, hereby reserves all intellectual property rights in the Product, except for the rights expressly granted in this Agreement.  You may not remove or alter any trademark, logo, copyright or other proprietary notice in or on the Product.  This license does not grant you any right to use the trademarks, service marks or logos of Mozilla or its licensors.\n"
+  "\n"
+  "4.  PRIVACY POLICY.  You agree to the Mozilla Firefox Privacy Policy, made available online at http://www.mozilla.com/legal/privacy/, as that policy may be changed from time to time.  When Mozilla changes the policy in a material way a notice will be posted on the website at www.mozilla.com and when any change is made in the privacy policy, the updated policy will be posted at the above link.  It is your responsibility to ensure that you understand the terms of the privacy policy, so you should periodically check the current version of the policy for changes.\n"
+  "\n"
+  "5.  WEBSITE INFORMATION SERVICES.  Mozilla and its contributors, licensors and partners work to provide the most accurate and up-to-date phishing and malware information.  However, they cannot guarantee that this information is comprehensive and error-free: some risky sites may not be identified, and some safe sites may be identified in error.\n"
+  "\n"
+  "6.  DISCLAIMER OF WARRANTY.  THE PRODUCT IS PROVIDED “AS IS” WITH ALL FAULTS.  TO THE EXTENT PERMITTED BY LAW, MOZILLA AND MOZILLA’S DISTRIBUTORS, AND LICENSORS HEREBY DISCLAIM ALL WARRANTIES, WHETHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION WARRANTIES THAT THE PRODUCT IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE AND NON-INFRINGING.  YOU BEAR THE ENTIRE RISK AS TO SELECTING THE PRODUCT FOR YOUR PURPOSES AND AS TO THE QUALITY AND PERFORMANCE OF THE PRODUCT.  THIS LIMITATION WILL APPLY NOTWITHSTANDING THE FAILURE OF ESSENTIAL PURPOSE OF ANY REMEDY.  SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF IMPLIED WARRANTIES, SO THIS DISCLAIMER MAY NOT APPLY TO YOU.\n"
+  "\n"
+  "7.  LIMITATION OF LIABILITY.  EXCEPT AS REQUIRED BY LAW, MOZILLA AND ITS DISTRIBUTORS, DIRECTORS, LICENSORS, CONTRIBUTORS AND AGENTS (COLLECTIVELY, THE “MOZILLA GROUP”) WILL NOT BE LIABLE FOR ANY INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES ARISING OUT OF OR IN ANY WAY RELATING TO THIS AGREEMENT OR THE USE OF OR INABILITY TO USE THE PRODUCT, INCLUDING WITHOUT LIMITATION DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, LOST PROFITS, LOSS OF DATA, AND COMPUTER FAILURE OR MALFUNCTION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES AND REGARDLESS OF THE THEORY (CONTRACT, TORT OR OTHERWISE) UPON WHICH SUCH CLAIM IS BASED.  THE MOZILLA GROUP’S COLLECTIVE LIABILITY UNDER THIS AGREEMENT WILL NOT EXCEED THE GREATER OF $500 (FIVE HUNDRED DOLLARS) AND THE FEES PAID BY YOU UNDER THE LICENSE (IF ANY).  SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL, CONSEQUENTIAL OR SPECIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.\n"
+  "\n"
+  "8.  EXPORT CONTROLS.  This license is subject to all applicable export restrictions.  You must comply with all export and import laws and restrictions and regulations of any United States or foreign agency or authority relating to the Product and its use.\n"
+  "\n"
+  "9.  U.S. GOVERNMENT END-USERS.  This Product is a “commercial item,” as that term is defined in 48 C.F.R. 2.101, consisting of “commercial computer software” and “commercial computer software documentation,” as such terms are used in 48 C.F.R. 12.212 (Sept. 1995) and 48 C.F.R. 227.7202 (June 1995).  Consistent with 48 C.F.R. 12.212, 48 C.F.R. 27.405(b)(2) (June 1998) and 48 C.F.R. 227.7202, all U.S. Government End Users acquire the Product with only those rights as set forth therein.\n"
+  "\n"
+  "10.  MISCELLANEOUS.  (a) This Agreement constitutes the entire agreement between Mozilla and you concerning the subject matter hereof, and it may only be modified by a written amendment signed by an authorized executive of Mozilla.  (b) Except to the extent applicable law, if any, provides otherwise, this Agreement will be governed by the laws of the state of California, U.S.A., excluding its conflict of law provisions.  (c) This Agreement will not be governed by the United Nations Convention on Contracts for the International Sale of Goods.  "
+  "(d) If any part of this Agreement is held invalid or unenforceable, that part will be construed to reflect the parties’ original intent, and the remaining portions will remain in full force and effect.  (e) A waiver by either party of any term or condition of this Agreement or any breach thereof, in any one instance, will not waive such term or condition or any subsequent breach thereof. (f) Except as required by law, the controlling language of this Agreement is English.  "
+  "(g) You may assign your rights under this Agreement to any party that consents to, and agrees to be bound by, its terms; the Mozilla Corporation may assign its rights under this Agreement without condition.  (h) This Agreement will be binding upon and inure to the benefit of the parties, their successors and permitted assigns."
+};
+
+data 'styl' (5000, "English") {
+  // Number of styles following = 2
+  $"0002"
+
+  // Style 1.  This is used to display the header lines in bold text.
+  // Start character = 0
+  $"0000 0000"
+  // Height = 16
+  $"0010"
+  // Ascent = 12
+  $"000C"
+  // Font family = 1024 (Lucida Grande)
+  $"0400"
+  // Style bitfield, 0x1=bold 0x2=italic 0x4=underline 0x8=outline
+  // 0x10=shadow 0x20=condensed 0x40=extended
+  $"01"
+  // Style, unused?
+  $"02"
+  // Size = 12 point
+  $"000C"
+  // Color, RGB
+  $"0000 0000 0000"
+
+  // Style 2.  This is used to display the body.
+  // Start character = 68
+  $"0000 0044"
+  // Height = 16
+  $"0010"
+  // Ascent = 12
+  $"000C"
+  // Font family = 1024 (Lucida Grande)
+  $"0400"
+  // Style bitfield, 0x1=bold 0x2=italic 0x4=underline 0x8=outline
+  // 0x10=shadow 0x20=condensed 0x40=extended
+  $"00"
+  // Style, unused?
+  $"02"
+  // Size = 12 point
+  $"000C"
+  // Color, RGB
+  $"0000 0000 0000"
+};
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..38312abac42830818edef700470cf1c59b25bb81
GIT binary patch
literal 4286
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
new file mode 100644
--- /dev/null
+++ b/mobile/app/mobile.js
@@ -0,0 +1,596 @@
+/* ***** 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 Mobile Browser.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Corporation.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *   Matt Brubeck <mbrubeck@mozilla.com>
+ *
+ * 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 ***** */
+
+#filter substitution
+
+// For browser.xml binding
+//
+// cacheRatio* is a ratio that determines the amount of pixels to cache. The
+// ratio is multiplied by the viewport width or height to get the displayport's
+// width or height, respectively.
+//
+// (divide integer value by 1000 to get the ratio)
+//
+// For instance: cachePercentageWidth is 1500
+//               viewport height is 500
+//               => display port height will be 500 * 1.5 = 750
+//
+pref("toolkit.browser.cacheRatioWidth", 2000);
+pref("toolkit.browser.cacheRatioHeight", 3000);
+
+// How long before a content view (a handle to a remote scrollable object)
+// expires.
+pref("toolkit.browser.contentViewExpire", 3000);
+
+pref("toolkit.defaultChromeURI", "chrome://browser/content/browser.xul");
+pref("general.useragent.compatMode.firefox", true);
+pref("browser.chromeURL", "chrome://browser/content/");
+
+pref("browser.tabs.warnOnClose", true);
+#ifdef MOZ_IPC
+pref("browser.tabs.remote", true);
+#else
+pref("browser.tabs.remote", false);
+#endif
+
+pref("toolkit.screen.lock", false);
+
+// From libpref/src/init/all.js, extended to allow a slightly wider zoom range.
+pref("zoom.minPercent", 20);
+pref("zoom.maxPercent", 400);
+pref("toolkit.zoomManager.zoomValues", ".2,.3,.5,.67,.8,.9,1,1.1,1.2,1.33,1.5,1.7,2,2.4,3,4");
+
+// Device pixel to CSS px ratio, in percent. Set to -1 to calculate based on display density.
+pref("browser.viewport.scaleRatio", -1);
+
+/* use custom widget for html:select */
+pref("ui.use_native_popup_windows", true);
+
+/* allow scrollbars to float above chrome ui */
+pref("ui.scrollbarsCanOverlapContent", 1);
+
+/* use long press to display a context menu */
+pref("ui.click_hold_context_menus", true);
+
+/* cache prefs */
+pref("browser.cache.disk.enable", false);
+pref("browser.cache.disk.capacity", 0); // kilobytes
+pref("browser.cache.disk.smart_size.enabled", false);
+pref("browser.cache.disk.smart_size.first_run", false);
+
+pref("browser.cache.memory.enable", true);
+pref("browser.cache.memory.capacity", 1024); // kilobytes
+
+/* image cache prefs */
+pref("image.cache.size", 1048576); // bytes
+
+/* offline cache prefs */
+pref("browser.offline-apps.notify", true);
+pref("browser.cache.offline.enable", true);
+pref("browser.cache.offline.capacity", 5120); // kilobytes
+pref("offline-apps.quota.max", 2048); // kilobytes
+pref("offline-apps.quota.warn", 1024); // kilobytes
+
+/* protocol warning prefs */
+pref("network.protocol-handler.warn-external.tel", false);
+pref("network.protocol-handler.warn-external.mailto", false);
+pref("network.protocol-handler.warn-external.vnd.youtube", false);
+
+/* http prefs */
+pref("network.http.pipelining", true);
+pref("network.http.pipelining.ssl", true);
+pref("network.http.proxy.pipelining", true);
+pref("network.http.pipelining.maxrequests" , 6);
+pref("network.http.keep-alive.timeout", 600);
+pref("network.http.max-connections", 6);
+pref("network.http.max-connections-per-server", 4);
+pref("network.http.max-persistent-connections-per-server", 4);
+pref("network.http.max-persistent-connections-per-proxy", 4);
+#ifdef MOZ_PLATFORM_MAEMO
+pref("network.autodial-helper.enabled", true);
+#endif
+
+// See bug 545869 for details on why these are set the way they are
+pref("network.buffer.cache.count", 24);
+pref("network.buffer.cache.size",  16384);
+
+/* history max results display */
+pref("browser.display.history.maxresults", 100);
+
+/* How many times should have passed before the remote tabs list is refreshed */
+pref("browser.display.remotetabs.timeout", 10);
+
+/* session history */
+pref("browser.sessionhistory.max_total_viewers", 1);
+pref("browser.sessionhistory.max_entries", 50);
+pref("browser.sessionhistory.optimize_eviction", true);
+
+/* session store */
+pref("browser.sessionstore.resume_session_once", false);
+pref("browser.sessionstore.resume_from_crash", true);
+pref("browser.sessionstore.resume_from_crash_timeout", 60); // minutes
+pref("browser.sessionstore.interval", 10000); // milliseconds
+pref("browser.sessionstore.max_tabs_undo", 5);
+
+/* these should help performance */
+pref("mozilla.widget.force-24bpp", true);
+pref("mozilla.widget.use-buffer-pixmap", true);
+pref("mozilla.widget.disable-native-theme", true);
+
+/* download manager (don't show the window or alert) */
+pref("browser.download.useDownloadDir", true);
+pref("browser.download.folderList", 1); // Default to ~/Downloads
+pref("browser.download.manager.showAlertOnComplete", false);
+pref("browser.download.manager.showAlertInterval", 2000);
+pref("browser.download.manager.retention", 2);
+pref("browser.download.manager.showWhenStarting", false);
+pref("browser.download.manager.closeWhenDone", true);
+pref("browser.download.manager.openDelay", 0);
+pref("browser.download.manager.focusWhenStarting", false);
+pref("browser.download.manager.flashCount", 2);
+pref("browser.download.manager.displayedHistoryDays", 7);
+
+/* download alerts (disabled above) */
+pref("alerts.slideIncrement", 1);
+pref("alerts.slideIncrementTime", 10);
+pref("alerts.totalOpenTime", 6000);
+pref("alerts.height", 50);
+
+/* password manager */
+pref("signon.rememberSignons", true);
+pref("signon.expireMasterPassword", false);
+pref("signon.SignonFileName", "signons.txt");
+
+/* form helper */
+pref("formhelper.enabled", true);
+pref("formhelper.autozoom", true);
+pref("formhelper.autozoom.caret", true);
+pref("formhelper.restore", false);
+
+/* find helper */
+pref("findhelper.autozoom", true);
+
+/* autocomplete */
+pref("browser.formfill.enable", true);
+
+/* microsummaries */
+pref("browser.microsummary.enabled", false);
+pref("browser.microsummary.updateGenerators", false);
+
+/* spellcheck */
+pref("layout.spellcheckDefault", 0);
+
+/* extension manager and xpinstall */
+pref("xpinstall.whitelist.add", "addons.mozilla.org");
+
+pref("extensions.autoupdate.enabled", true);
+pref("extensions.autoupdate.interval", 86400);
+pref("extensions.update.enabled", false);
+pref("extensions.update.interval", 86400);
+pref("extensions.dss.enabled", false);
+pref("extensions.dss.switchPending", false);
+pref("extensions.ignoreMTimeChanges", false);
+pref("extensions.logging.enabled", false);
+pref("extensions.hideInstallButton", true);
+pref("extensions.showMismatchUI", false);
+pref("extensions.hideUpdateButton", false);
+
+pref("extensions.update.url", "https://versioncheck.addons.mozilla.org/update/VersionCheck.php?reqVersion=%REQ_VERSION%&id=%ITEM_ID%&version=%ITEM_VERSION%&maxAppVersion=%ITEM_MAXAPPVERSION%&status=%ITEM_STATUS%&appID=%APP_ID%&appVersion=%APP_VERSION%&appOS=%APP_OS%&appABI=%APP_ABI%&locale=%APP_LOCALE%&currentAppVersion=%CURRENT_APP_VERSION%&updateType=%UPDATE_TYPE%");
+
+/* preferences for the Get Add-ons pane */
+pref("extensions.getAddons.cache.enabled", true);
+pref("extensions.getAddons.maxResults", 15);
+pref("extensions.getAddons.recommended.browseURL", "https://addons.mozilla.org/%LOCALE%/mobile/recommended/");
+pref("extensions.getAddons.recommended.url", "https://services.addons.mozilla.org/%LOCALE%/mobile/api/%API_VERSION%/list/featured/all/%MAX_RESULTS%/%OS%/%VERSION%");
+pref("extensions.getAddons.search.browseURL", "https://addons.mozilla.org/%LOCALE%/mobile/search?q=%TERMS%");
+pref("extensions.getAddons.search.url", "https://services.addons.mozilla.org/%LOCALE%/mobile/api/%API_VERSION%/search/%TERMS%/all/%MAX_RESULTS%/%OS%/%VERSION%");
+pref("extensions.getAddons.browseAddons", "https://addons.mozilla.org/%LOCALE%/mobile/");
+pref("extensions.getAddons.get.url", "https://services.addons.mozilla.org/%LOCALE%/mobile/api/%API_VERSION%/search/guid:%IDS%?src=mobile&appOS=%OS%&appVersion=%VERSION%&tMain=%TIME_MAIN%&tFirstPaint=%TIME_FIRST_PAINT%&tSessionRestored=%TIME_SESSION_RESTORED%");
+
+/* blocklist preferences */
+pref("extensions.blocklist.enabled", true);
+pref("extensions.blocklist.interval", 86400);
+pref("extensions.blocklist.url", "https://addons.mozilla.org/blocklist/3/%APP_ID%/%APP_VERSION%/%PRODUCT%/%BUILD_ID%/%BUILD_TARGET%/%LOCALE%/%CHANNEL%/%OS_VERSION%/%DISTRIBUTION%/%DISTRIBUTION_VERSION%/%PING_COUNT%/%TOTAL_PING_COUNT%/%DAYS_SINCE_LAST_PING%/");
+pref("extensions.blocklist.detailsURL", "https://www.mozilla.com/%LOCALE%/blocklist/");
+
+/* block popups by default, and notify the user about blocked popups */
+pref("dom.disable_open_during_load", true);
+pref("privacy.popups.showBrowserMessage", true);
+
+pref("keyword.enabled", true);
+pref("keyword.URL", "http://www.google.com/m?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1&q=");
+
+pref("accessibility.typeaheadfind", false);
+pref("accessibility.typeaheadfind.timeout", 5000);
+pref("accessibility.typeaheadfind.flashBar", 1);
+pref("accessibility.typeaheadfind.linksonly", false);
+pref("accessibility.typeaheadfind.casesensitive", 0);
+// zoom key(F7) conflicts with caret browsing on maemo
+pref("accessibility.browsewithcaret_shortcut.enabled", false);
+
+// Whether or not we show a dialog box informing the user that the update was
+// successfully applied.
+pref("app.update.showInstalledUI", false);
+
+// Whether the character encoding menu is under the main Firefox button. This
+// preference is a string so that localizers can alter it.
+pref("browser.menu.showCharacterEncoding", "chrome://browser/locale/browser.properties");
+pref("intl.charsetmenu.browser.static", "chrome://browser/locale/browser.properties");
+
+// pointer to the default engine name
+pref("browser.search.defaultenginename", "chrome://browser/locale/region.properties");
+// SSL error page behaviour
+pref("browser.ssl_override_behavior", 2);
+pref("browser.xul.error_pages.expert_bad_cert", false);
+
+// disable logging for the search service by default
+pref("browser.search.log", false);
+
+// ordering of search engines in the engine list.
+pref("browser.search.order.1", "chrome://browser/locale/region.properties");
+pref("browser.search.order.2", "chrome://browser/locale/region.properties");
+
+// disable updating
+pref("browser.search.update", false);
+pref("browser.search.update.log", false);
+pref("browser.search.updateinterval", 6);
+
+// enable search suggestions by default
+pref("browser.search.suggest.enabled", true);
+
+// Tell the search service to load search plugins from the locale JAR
+pref("browser.search.loadFromJars", true);
+pref("browser.search.jarURIs", "chrome://browser/locale/searchplugins/");
+
+// tell the search service that we don't really expose the "current engine"
+pref("browser.search.noCurrentEngine", true);
+
+// enable xul error pages
+pref("browser.xul.error_pages.enabled", true);
+
+// Specify emptyRestriction = 0 so that bookmarks appear in the list by default
+pref("browser.urlbar.default.behavior", 0);
+pref("browser.urlbar.default.behavior.emptyRestriction", 0);
+
+// Let the faviconservice know that we display favicons as 32x32px so that it
+// uses the right size when optimizing favicons
+pref("places.favicons.optimizeToDimension", 32);
+
+// various and sundry awesomebar prefs (should remove/re-evaluate
+// these once bug 447900 is fixed)
+pref("browser.urlbar.clickSelectsAll", true);
+pref("browser.urlbar.doubleClickSelectsAll", true);
+pref("browser.urlbar.autoFill", false);
+pref("browser.urlbar.matchOnlyTyped", false);
+pref("browser.urlbar.matchBehavior", 1);
+pref("browser.urlbar.filter.javascript", true);
+pref("browser.urlbar.maxRichResults", 24); // increased so we see more results when portrait
+pref("browser.urlbar.search.chunkSize", 1000);
+pref("browser.urlbar.search.timeout", 100);
+pref("browser.urlbar.restrict.history", "^");
+pref("browser.urlbar.restrict.bookmark", "*");
+pref("browser.urlbar.restrict.tag", "+");
+pref("browser.urlbar.match.title", "#");
+pref("browser.urlbar.match.url", "@");
+pref("browser.urlbar.autocomplete.search_threshold", 5);
+pref("browser.history.grouping", "day");
+pref("browser.history.showSessions", false);
+pref("browser.sessionhistory.max_entries", 50);
+pref("browser.history_expire_days", 180);
+pref("browser.history_expire_days_min", 90);
+pref("browser.history_expire_sites", 40000);
+pref("browser.places.migratePostDataAnnotations", true);
+pref("browser.places.updateRecentTagsUri", true);
+pref("places.frecency.numVisits", 10);
+pref("places.frecency.numCalcOnIdle", 50);
+pref("places.frecency.numCalcOnMigrate", 50);
+pref("places.frecency.updateIdleTime", 60000);
+pref("places.frecency.firstBucketCutoff", 4);
+pref("places.frecency.secondBucketCutoff", 14);
+pref("places.frecency.thirdBucketCutoff", 31);
+pref("places.frecency.fourthBucketCutoff", 90);
+pref("places.frecency.firstBucketWeight", 100);
+pref("places.frecency.secondBucketWeight", 70);
+pref("places.frecency.thirdBucketWeight", 50);
+pref("places.frecency.fourthBucketWeight", 30);
+pref("places.frecency.defaultBucketWeight", 10);
+pref("places.frecency.embedVisitBonus", 0);
+pref("places.frecency.linkVisitBonus", 100);
+pref("places.frecency.typedVisitBonus", 2000);
+pref("places.frecency.bookmarkVisitBonus", 150);
+pref("places.frecency.downloadVisitBonus", 0);
+pref("places.frecency.permRedirectVisitBonus", 0);
+pref("places.frecency.tempRedirectVisitBonus", 0);
+pref("places.frecency.defaultVisitBonus", 0);
+pref("places.frecency.unvisitedBookmarkBonus", 140);
+pref("places.frecency.unvisitedTypedBonus", 200);
+
+// disable color management
+pref("gfx.color_management.mode", 0);
+
+// don't allow JS to move and resize existing windows
+pref("dom.disable_window_move_resize", true);
+
+// prevent click image resizing for nsImageDocument
+pref("browser.enable_click_image_resizing", false);
+
+// open in tab preferences
+// 0=default window, 1=current window/tab, 2=new window, 3=new tab in most window
+pref("browser.link.open_external", 3);
+pref("browser.link.open_newwindow", 3);
+// 0=force all new windows to tabs, 1=don't force, 2=only force those with no features set
+pref("browser.link.open_newwindow.restriction", 0);
+
+// controls which bits of private data to clear. by default we clear them all.
+pref("privacy.item.cache", true);
+pref("privacy.item.cookies", true);
+pref("privacy.item.offlineApps", true);
+pref("privacy.item.history", true);
+pref("privacy.item.formdata", true);
+pref("privacy.item.downloads", true);
+pref("privacy.item.passwords", true);
+pref("privacy.item.sessions", true);
+pref("privacy.item.geolocation", true);
+pref("privacy.item.siteSettings", true);
+pref("privacy.item.syncAccount", true);
+
+#ifdef MOZ_PLATFORM_MAEMO
+pref("plugins.force.wmode", "opaque");
+#endif
+
+// URL to the Learn More link XXX this is the firefox one.  Bug 495578 fixes this.
+pref("browser.geolocation.warning.infoURL", "http://www.mozilla.com/%LOCALE%/firefox/geolocation/");
+
+// base url for the wifi geolocation network provider
+pref("geo.wifi.uri", "https://www.google.com/loc/json");
+
+// enable geo
+pref("geo.enabled", true);
+
+// content sink control -- controls responsiveness during page load
+// see https://bugzilla.mozilla.org/show_bug.cgi?id=481566#c9
+pref("content.sink.enable_perf_mode",  2); // 0 - switch, 1 - interactive, 2 - perf
+pref("content.sink.pending_event_mode", 0);
+pref("content.sink.perf_deflect_count", 1000000);
+pref("content.sink.perf_parse_time", 50000000);
+
+pref("javascript.options.mem.gc_frequency", 300);
+pref("javascript.options.mem.high_water_mark", 32);
+pref("javascript.options.methodjit.chrome", false);
+
+pref("dom.max_chrome_script_run_time", 0); // disable slow script dialog for chrome
+pref("dom.max_script_run_time", 20);
+
+// JS error console
+pref("devtools.errorconsole.enabled", false);
+
+// kinetic tweakables
+pref("browser.ui.kinetic.updateInterval", 30);
+pref("browser.ui.kinetic.decelerationRate", 20);
+pref("browser.ui.kinetic.speedSensitivity", 80);
+pref("browser.ui.kinetic.swipeLength", 160);
+
+// zooming
+pref("browser.ui.zoom.pageFitGranularity", 9); // don't zoom to fit by less than 1/9 (11%)
+pref("browser.ui.zoom.animationDuration", 200); // ms duration of double-tap zoom animation
+pref("browser.ui.zoom.reflow", false); // Change text wrapping on double-tap
+pref("browser.ui.zoom.reflow.fontSize", 720);
+
+// pinch gesture
+pref("browser.ui.pinch.maxGrowth", 150);     // max pinch distance growth
+pref("browser.ui.pinch.maxShrink", 200);     // max pinch distance shrinkage
+pref("browser.ui.pinch.scalingFactor", 500); // scaling factor for above pinch limits
+
+// Touch radius (area around the touch location to look for target elements),
+// in 1/240-inch pixels:
+pref("browser.ui.touch.left", 8);
+pref("browser.ui.touch.right", 8);
+pref("browser.ui.touch.top", 12);
+pref("browser.ui.touch.bottom", 4);
+pref("browser.ui.touch.weight.visited", 120); // percentage
+
+// plugins
+#if MOZ_PLATFORM_MAEMO == 6
+pref("plugin.disable", false);
+#else
+pref("plugin.disable", true);
+#endif
+pref("dom.ipc.plugins.enabled", true);
+
+// process priority
+// higher values give content process less CPU time
+#if MOZ_PLATFORM_MAEMO
+pref("dom.ipc.content.nice", 10);
+#else
+pref("dom.ipc.content.nice", 1);
+#endif
+
+// product URLs
+// The breakpad report server to link to in about:crashes
+pref("breakpad.reportURL", "http://crash-stats.mozilla.com/report/index/");
+pref("app.releaseNotesURL", "http://www.mozilla.com/%LOCALE%/mobile/%VERSION%/releasenotes/");
+pref("app.sync.tutorialURL", "https://support.mozilla.com/kb/sync-firefox-between-desktop-and-mobile");
+pref("app.support.baseURL", "http://support.mozilla.com/mobile");
+pref("app.feedbackURL", "http://input.mozilla.com/feedback/");
+pref("app.privacyURL", "http://www.mozilla.com/%LOCALE%/m/privacy.html");
+pref("app.creditsURL", "http://www.mozilla.org/credits/");
+#if MOZ_UPDATE_CHANNEL == beta
+pref("app.featuresURL", "http://www.mozilla.com/%LOCALE%/mobile/beta/features/");
+pref("app.faqURL", "http://www.mozilla.com/%LOCALE%/mobile/beta/faq/");
+#else
+pref("app.featuresURL", "http://www.mozilla.com/%LOCALE%/mobile/features/");
+pref("app.faqURL", "http://www.mozilla.com/%LOCALE%/mobile/faq/");
+#endif
+
+pref("app.promo.spark.baseURL", "http://spark.mozilla.org");
+#ifdef MOZ_OFFICIAL_BRANDING
+pref("app.promo.spark.endDate", "2011-05-01");
+#else
+pref("app.promo.spark.endDate", "2011-01-01");
+#endif
+
+// Name of alternate about: page for certificate errors (when undefined, defaults to about:neterror)
+pref("security.alternate_certificate_error_page", "certerror");
+
+pref("security.warn_viewing_mixed", false); // Warning is disabled.  See Bug 616712.
+
+// Override some named colors to avoid inverse OS themes
+pref("ui.-moz-dialog", "#efebe7");
+pref("ui.-moz-dialogtext", "#101010");
+pref("ui.-moz-field", "#fff");
+pref("ui.-moz-fieldtext", "#1a1a1a");
+pref("ui.-moz-buttonhoverface", "#f3f0ed");
+pref("ui.-moz-buttonhovertext", "#101010");
+pref("ui.-moz-combobox", "#fff");
+pref("ui.-moz-comboboxtext", "#101010");
+pref("ui.buttonface", "#ece7e2");
+pref("ui.buttonhighlight", "#fff");
+pref("ui.buttonshadow", "#aea194");
+pref("ui.buttontext", "#101010");
+pref("ui.captiontext", "#101010");
+pref("ui.graytext", "#b1a598");
+pref("ui.highlight", "#fad184");
+pref("ui.highlighttext", "#1a1a1a");
+pref("ui.infobackground", "#f5f5b5");
+pref("ui.infotext", "#000");
+pref("ui.menu", "#f7f5f3");
+pref("ui.menutext", "#101010");
+pref("ui.threeddarkshadow", "#000");
+pref("ui.threedface", "#ece7e2");
+pref("ui.threedhighlight", "#fff");
+pref("ui.threedlightshadow", "#ece7e2");
+pref("ui.threedshadow", "#aea194");
+pref("ui.window", "#efebe7");
+pref("ui.windowtext", "#101010");
+pref("ui.windowframe", "#efebe7");
+
+#ifdef MOZ_OFFICIAL_BRANDING
+pref("browser.search.param.yahoo-fr", "moz35");
+pref("browser.search.param.yahoo-fr-cjkt", "moz35");
+pref("browser.search.param.yahoo-fr-ja", "mozff");
+#endif
+
+/* app update prefs */
+pref("app.update.timer", 60000); // milliseconds (1 min)
+
+#ifdef MOZ_UPDATER
+pref("app.update.enabled", true);
+pref("app.update.timerFirstInterval", 20000); // milliseconds
+pref("app.update.auto", false);
+pref("app.update.channel", "@MOZ_UPDATE_CHANNEL@");
+pref("app.update.mode", 1);
+pref("app.update.silent", false);
+pref("app.update.url", "https://aus2.mozilla.org/update/4/%PRODUCT%/%VERSION%/%BUILD_ID%/%BUILD_TARGET%/%LOCALE%/%CHANNEL%/%OS_VERSION%/%DISTRIBUTION%/%DISTRIBUTION_VERSION%/%PLATFORM_VERSION%/update.xml");
+pref("app.update.nagTimer.restart", 86400);
+pref("app.update.promptWaitTime", 43200);
+pref("app.update.idletime", 60);
+pref("app.update.showInstalledUI", false);
+pref("app.update.incompatible.mode", 0);
+pref("app.update.download.backgroundInterval", 0);
+
+#ifdef MOZ_OFFICIAL_BRANDING
+pref("app.update.interval", 86400);
+pref("app.update.url.manual", "http://www.mozilla.com/%LOCALE%/m/");
+pref("app.update.url.details", "http://www.mozilla.com/%LOCALE%/mobile/releases/");
+#else
+pref("app.update.interval", 28800);
+pref("app.update.url.manual", "http://www.mozilla.com/%LOCALE%/mobile/");
+pref("app.update.url.details", "http://www.mozilla.com/%LOCALE%/mobile/");
+#endif
+#endif
+
+// replace newlines with spaces on paste into single-line text boxes
+pref("editor.singleLine.pasteNewlines", 2);
+
+#ifdef MOZ_PLATFORM_MAEMO
+// update fonts for better readability
+pref("font.default.x-baltic", "SwissA");
+pref("font.default.x-central-euro", "SwissA");
+pref("font.default.x-cyrillic", "SwissA");
+pref("font.default.x-unicode", "SwissA");
+pref("font.default.x-user-def", "SwissA");
+pref("font.default.x-western", "SwissA");
+#endif
+
+#ifdef MOZ_SERVICES_SYNC
+pref("browser.sync.enabled", true);
+
+// sync service
+pref("services.sync.client.type", "mobile");
+pref("services.sync.registerEngines", "Tab,Bookmarks,Form,History,Password,Prefs");
+pref("services.sync.autoconnectDelay", 5);
+
+// prefs to sync by default
+pref("services.sync.prefs.sync.browser.startup.homepage.title", true);
+pref("services.sync.prefs.sync.browser.startup.homepage", true);
+pref("services.sync.prefs.sync.browser.tabs.warnOnClose", true);
+pref("services.sync.prefs.sync.browser.ui.zoom.reflow", true);
+pref("services.sync.prefs.sync.devtools.errorconsole.enabled", true);
+pref("services.sync.prefs.sync.javascript.enabled", true);
+pref("services.sync.prefs.sync.lightweightThemes.isThemeSelected", true);
+pref("services.sync.prefs.sync.lightweightThemes.usedThemes", true);
+pref("services.sync.prefs.sync.network.cookie.cookieBehavior", true);
+pref("services.sync.prefs.sync.permissions.default.image", true);
+pref("services.sync.prefs.sync.signon.rememberSignons", true);
+#endif
+
+// threshold where a tap becomes a drag, in 1/240" reference pixels
+// The names of the preferences are to be in sync with nsEventStateManager.cpp
+pref("ui.dragThresholdX", 25);
+pref("ui.dragThresholdY", 25);
+
+#if MOZ_PLATFORM_MAEMO == 6
+pref("layers.acceleration.disabled", false);
+#else
+pref("layers.acceleration.disabled", true);
+#endif
+
+pref("notification.feature.enabled", true);
+
+// prevent tooltips from showing up
+pref("browser.chrome.toolbar_tips", false);
+pref("indexedDB.feature.enabled", false);
+
+// prevent video elements from preloading too much data
+pref("media.preload.default", 1); // default to preload none
+pref("media.preload.auto", 2);    // preload metadata if preload=auto
+
+// optimize images memory usage
+pref("image.mem.decodeondraw", true);
+pref("content.image.allow_locking", false);
+pref("image.mem.min_discard_timeout_ms", 20000);
+
new file mode 100644
--- /dev/null
+++ b/mobile/app/nsBrowserApp.cpp
@@ -0,0 +1,160 @@
+/* -*- 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.org code.
+ *
+ * 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):
+ *  Brian Ryner <bryner@brianryner.com>
+ *
+ * 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 ***** */
+
+#include "nsXULAppAPI.h"
+#ifdef XP_WIN
+#include <windows.h>
+#include <stdlib.h>
+#endif
+
+#include <stdio.h>
+#include <stdarg.h>
+
+#include "plstr.h"
+#include "prprf.h"
+#include "prenv.h"
+
+#include "nsCOMPtr.h"
+#include "nsILocalFile.h"
+#include "nsStringGlue.h"
+
+#ifdef XP_WIN
+// we want to use the DLL blocklist if possible
+#define XRE_WANT_DLL_BLOCKLIST
+// we want a wmain entry point
+#include "nsWindowsWMain.cpp"
+#endif
+
+static void Output(const char *fmt, ... )
+{
+  va_list ap;
+  va_start(ap, fmt);
+
+#if defined(XP_WIN) && !MOZ_WINCONSOLE
+  PRUnichar msg[2048];
+  _vsnwprintf(msg, sizeof(msg)/sizeof(msg[0]), NS_ConvertUTF8toUTF16(fmt).get(), ap);
+  MessageBoxW(NULL, msg, L"XULRunner", MB_OK | MB_ICONERROR);
+#else
+  vfprintf(stderr, fmt, ap);
+#endif
+
+  va_end(ap);
+}
+
+/**
+ * Return true if |arg| matches the given argument name.
+ */
+static PRBool IsArg(const char* arg, const char* s)
+{
+  if (*arg == '-')
+  {
+    if (*++arg == '-')
+      ++arg;
+    return !PL_strcasecmp(arg, s);
+  }
+
+#if defined(XP_WIN) || defined(XP_OS2)
+  if (*arg == '/')
+    return !PL_strcasecmp(++arg, s);
+#endif
+
+  return PR_FALSE;
+}
+
+class ScopedLogging
+{
+public:
+  ScopedLogging() { NS_LogInit(); }
+  ~ScopedLogging() { NS_LogTerm(); }
+};
+
+int main(int argc, char* argv[])
+{
+  ScopedLogging log;
+
+  nsCOMPtr<nsILocalFile> appini;
+  nsresult rv = XRE_GetBinaryPath(argv[0], getter_AddRefs(appini));
+  if (NS_FAILED(rv)) {
+    Output("Couldn't calculate the application directory.");
+    return 255;
+  }
+  appini->SetNativeLeafName(NS_LITERAL_CSTRING("application.ini"));
+
+  // Allow firefox.exe to launch XULRunner apps via -app <application.ini>
+  // Note that -app must be the *first* argument.
+  char *appEnv = nsnull;
+  const char *appDataFile = PR_GetEnv("XUL_APP_FILE");
+  if (appDataFile && *appDataFile) {
+    rv = XRE_GetFileFromPath(appDataFile, getter_AddRefs(appini));
+    if (NS_FAILED(rv)) {
+      Output("Invalid path found: '%s'", appDataFile);
+      return 255;
+    }
+  }
+  else if (argc > 1 && IsArg(argv[1], "app")) {
+    if (argc == 2) {
+      Output("Incorrect number of arguments passed to -app");
+      return 255;
+    }
+
+    rv = XRE_GetFileFromPath(argv[2], getter_AddRefs(appini));
+    if (NS_FAILED(rv)) {
+      Output("application.ini path not recognized: '%s'", argv[2]);
+      return 255;
+    }
+
+    appEnv = PR_smprintf("XUL_APP_FILE=%s", argv[2]);
+    PR_SetEnv(appEnv);
+    argv[2] = argv[0];
+    argv += 2;
+    argc -= 2;
+  }
+
+  nsXREAppData *appData;
+  rv = XRE_CreateAppData(appini, &appData);
+  if (NS_FAILED(rv)) {
+    Output("Couldn't read application.ini");
+    return 255;
+  }
+
+  int result = XRE_main(argc, argv, appData);
+  XRE_FreeAppData(appData);
+  if (appEnv)
+    PR_smprintf_free(appEnv);
+  return result;
+}
new file mode 100644
--- /dev/null
+++ b/mobile/app/profile/extensions/Makefile.in
@@ -0,0 +1,64 @@
+# ***** 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.
+#
+# The Initial Developer of the Original Code is
+# the Mozilla Foundation <http://www.mozilla.org/>.
+# Portions created by the Initial Developer are Copyright (C) 2010
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+#   Mark Finkle <mfinkle@mozilla.com>
+#
+# 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 *****
+
+DEPTH		= ../../../..
+topsrcdir	= @top_srcdir@
+srcdir		= @srcdir@
+VPATH		= @srcdir@
+
+include $(DEPTH)/config/autoconf.mk
+
+include $(topsrcdir)/config/rules.mk
+
+ifeq (beta,$(MOZ_UPDATE_CHANNEL))
+EXTENSIONS = \
+  feedback@mobile.mozilla.org \
+  $(NULL)
+
+ABS_DIST = $(call core_abspath,$(DIST))
+
+define _PACKAGE_EXTENSIONS
+rm -f $(ABS_DIST)/bin/extensions/$(dir).xpi
+mkdir -p $(ABS_DIST)/bin/extensions
+cd $(srcdir)/$(dir)/; $(ZIP) -r9 $(ABS_DIST)/bin/extensions/$(dir).xpi *
+
+endef # do not remove the blank line!
+
+libs::
+	$(foreach dir,$(EXTENSIONS),$(_PACKAGE_EXTENSIONS))
+
+endif
new file mode 100644
--- /dev/null
+++ b/mobile/app/profile/extensions/feedback@mobile.mozilla.org/chrome.manifest
@@ -0,0 +1,5 @@
+content feedback content/
+skin    feedback classic/1.0 skin/
+locale  feedback en-US       locale/en-US/
+
+overlay	chrome://browser/content/browser.xul  chrome://feedback/content/overlay.xul
new file mode 100644
--- /dev/null
+++ b/mobile/app/profile/extensions/feedback@mobile.mozilla.org/content/content.js
@@ -0,0 +1,33 @@
+
+function populateFeedback(aMessage) {
+  let json = aMessage.json;
+
+  let referrer = json.referrer;
+  let URLElem = content.document.getElementById("id_url");
+  if (URLElem)
+    URLElem.value = referrer;
+
+  let URLElems = content.document.getElementsByClassName("url");
+  for (let index=0; index<URLElems.length; index++)
+    URLElems[index].value = referrer;
+
+  let device = json.device || "";
+  let deviceElem = content.document.getElementById("id_device");
+  if (deviceElem)
+    deviceElem.value = device;
+
+  let deviceElems = content.document.getElementsByClassName("device");
+  for (let index=0; index<deviceElems.length; index++)
+    deviceElems[index].value = device;
+
+  let manufacturer = json.manufacturer || "";
+  let manufacturerElem = content.document.getElementById("id_manufacturer");
+  if (manufacturerElem)
+    manufacturerElem.value = manufacturer;
+
+  let manufacturerElems = content.document.getElementsByClassName("manufacturer");
+  for (let index=0; index<manufacturerElems.length; index++)
+    manufacturerElems[index].value = manufacturer;
+}
+
+addMessageListener("Feedback:InitPage", populateFeedback);
new file mode 100644
--- /dev/null
+++ b/mobile/app/profile/extensions/feedback@mobile.mozilla.org/content/overlay.js
@@ -0,0 +1,137 @@
+/* ***** 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 Feedback.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Corporation.
+ * Portions created by the Initial Developer are Copyright (C) 2010
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *   Mark Finkle <mark.finkle@gmail.com>
+ *
+ * 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 ***** */
+
+var Feedback = {
+  _prefs: [],
+  _device: "",
+  _manufacturer: "",
+
+  init: function(aEvent) {
+    // Delay the widget initialization during startup.
+    window.addEventListener("UIReadyDelayed", function(aEvent) {
+      let appInfo = Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULAppInfo);
+      document.getElementById("feedback-about").setAttribute("desc", appInfo.version);
+
+      // A simple frame script to fill in the referrer page and device info
+      messageManager.loadFrameScript("chrome://feedback/content/content.js", true);
+
+      window.removeEventListener(aEvent.type, arguments.callee, false);
+      document.getElementById("feedback-container").hidden = false;
+
+      let feedbackPrefs = document.getElementById("feedback-tools").childNodes;
+      for (let i = 0; i < feedbackPrefs.length; i++) {
+        let pref = feedbackPrefs[i].getAttribute("pref");
+        if (!pref)
+          continue;
+  
+        let value = Services.prefs.getPrefType(pref) == Ci.nsIPrefBranch.PREF_INVALID ? false : Services.prefs.getBoolPref(pref);
+        Feedback._prefs.push({ "name": pref, "value": value });
+      }
+
+      let sysInfo = Cc["@mozilla.org/system-info;1"].getService(Ci.nsIPropertyBag2);
+      Feedback._device = sysInfo.get("device");
+      Feedback._manufacturer = sysInfo.get("manufacturer");
+    }, false);
+  },
+
+  openFeedback: function(aName) {
+    let pref = "extensions.feedback.url." + aName;
+    let url = Services.prefs.getPrefType(pref) == Ci.nsIPrefBranch.PREF_INVALID ? "" : Services.prefs.getCharPref(pref);
+    if (!url)
+      return;
+
+    let currentURL = Browser.selectedBrowser.currentURI.spec;
+    let newTab = BrowserUI.newTab(url, Browser.selectedTab);
+
+    // Tell the feedback page to fill in the referrer URL
+    newTab.browser.messageManager.addMessageListener("DOMContentLoaded", function() {
+      newTab.browser.messageManager.removeMessageListener("DOMContentLoaded", arguments.callee, true);
+      newTab.browser.messageManager.sendAsyncMessage("Feedback:InitPage", { referrer: currentURL, device: Feedback._device, manufacturer: Feedback._manufacturer });
+    });
+  },
+
+  openReadme: function() {
+    let formatter = Cc["@mozilla.org/toolkit/URLFormatterService;1"].getService(Ci.nsIURLFormatter);
+    let url = formatter.formatURLPref("app.releaseNotesURL");
+    BrowserUI.newTab(url, Browser.selectedTab);
+  },
+
+  updateRestart: function updateRestart() {
+    let msg = document.getElementById("feedback-messages");
+    if (msg) {
+      let value = "restart-app";
+      let notification = msg.getNotificationWithValue(value);
+      if (notification) {
+        // Check if the prefs are back to the initial state dismiss the restart
+        // notification because if does not make sense anymore
+        for each (let pref in this._prefs) {
+          let value = Services.prefs.getPrefType(pref.name) == Ci.nsIPrefBranch.PREF_INVALID ? false : Services.prefs.getBoolPref(pref.name);
+          if (value != pref.value)
+            return;
+        }
+
+        notification.close();
+        return;
+      }
+  
+      let restartCallback = function(aNotification, aDescription) {
+        // Notify all windows that an application quit has been requested
+        let cancelQuit = Cc["@mozilla.org/supports-PRBool;1"].createInstance(Ci.nsISupportsPRBool);
+        Services.obs.notifyObservers(cancelQuit, "quit-application-requested", "restart");
+  
+        // If nothing aborted, quit the app
+        if (cancelQuit.data == false) {
+          let appStartup = Cc["@mozilla.org/toolkit/app-startup;1"].getService(Ci.nsIAppStartup);
+          appStartup.quit(Ci.nsIAppStartup.eRestart | Ci.nsIAppStartup.eAttemptQuit);
+        }
+      };
+
+      let strings = Strings.browser;
+
+      let buttons = [ {
+        label: strings.GetStringFromName("notificationRestart.button"),
+        accessKey: "",
+        callback: restartCallback
+      } ];
+  
+      let message = strings.GetStringFromName("notificationRestart.normal");
+      msg.appendNotification(message, value, "", msg.PRIORITY_WARNING_LOW, buttons);
+    }
+  }
+};
+
+window.addEventListener("load", Feedback.init, false);
new file mode 100644
--- /dev/null
+++ b/mobile/app/profile/extensions/feedback@mobile.mozilla.org/content/overlay.xul
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- ***** 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 Feedback.
+   -
+   - The Initial Developer of the Original Code is
+   - Mozilla Corporation.
+   - Portions created by the Initial Developer are Copyright (C) 2010
+   - the Initial Developer. All Rights Reserved.
+   -
+   - Contributor(s):
+   -   Mark Finkle <mark.finkle@gmail.com>
+   -
+   - 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 LGPL or the GPL. 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 ***** -->
+
+<?xml-stylesheet href="chrome://feedback/skin/overlay.css" type="text/css"?>
+
+<!DOCTYPE window [
+<!ENTITY % feedbackDTD SYSTEM "chrome://browser/locale/feedback.dtd">
+%feedbackDTD;
+]>
+
+<overlay id="feedback-overlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+  <script type="application/javascript" src="chrome://feedback/content/overlay.js"/>
+
+  <box id="panel-controls">
+    <toolbarbutton id="tool-feedback" class="panel-row-button" autocheck="true" type="radio" group="1" linkedpanel="feedback-container" insertafter="tool-addons"/>
+  </box>
+
+  <deck id="panel-items">
+    <vbox id="feedback-container" flex="1" hidden="true">
+      <notificationbox id="feedback-messages" flex="1">
+        <richlistbox id="feedback-list" flex="1" onselect="this.ensureSelectedElementIsVisible()">
+          <label id="feedback-list-header" class="panel-header" value="&feedbackHeader2.label;"/>
+          <settings id="feedback-communicate" label="&feedback.communicate.title;">
+            <setting title="&feedback.feedback.title;" type="control">
+              <button id="feedback-feedback-happy" oncommand="Feedback.openFeedback('happy');"/>
+              <button id="feedback-feedback-sad" oncommand="Feedback.openFeedback('sad');"/>
+            </setting>
+          </settings>
+          <settings id="feedback-information" label="&feedback.information.title;">
+            <setting id="feedback-about" title="&feedback.about.title;" type="control">
+              <button id="feedback-about-button" label="&feedback.about.button;" oncommand="Feedback.openReadme();"/>
+            </setting>
+          </settings>
+          <settings id="feedback-tools" label="&feedback.tools.title;">
+            <setting pref="extensions.checkCompatibility.4.0b" title="&feedback.forceCompat.title;" type="bool" inverted="true" oninputchanged="Feedback.updateRestart();"/>
+            <setting pref="devtools.errorconsole.enabled" title="&feedback.errorConsole.title;" type="bool"/>
+          </settings>
+        </richlistbox>
+      </notificationbox>
+    </vbox>
+  </deck>
+</overlay>
new file mode 100644
--- /dev/null
+++ b/mobile/app/profile/extensions/feedback@mobile.mozilla.org/defaults/preferences/preferences.js
@@ -0,0 +1,2 @@
+pref("extensions.feedback.url.happy", "http://input.mozilla.com/happy");
+pref("extensions.feedback.url.sad", "http://input.mozilla.com/sad");
new file mode 100644
--- /dev/null
+++ b/mobile/app/profile/extensions/feedback@mobile.mozilla.org/install.rdf
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+
+<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+     xmlns:em="http://www.mozilla.org/2004/em-rdf#">
+  <Description about="urn:mozilla:install-manifest">
+    <em:id>feedback@mobile.mozilla.org</em:id>
+    <em:version>1.0.1</em:version>
+    <em:type>2</em:type>
+
+    <!-- Target Application this extension can install into, 
+         with minimum and maximum supported versions. --> 
+    <em:targetApplication>
+      <Description>
+        <em:id>{a23983c0-fd0e-11dc-95ff-0800200c9a66}</em:id>
+        <em:minVersion>2.0b1pre</em:minVersion>
+        <em:maxVersion>4.*</em:maxVersion>
+      </Description>
+    </em:targetApplication>
+   
+    <!-- Front End MetaData -->
+    <em:name>Feedback</em:name>
+    <em:description>Help make Firefox better by giving feedback.</em:description>
+    <em:creator>Mozilla Corporation</em:creator>
+    <em:iconURL>chrome://feedback/skin/dino-32.png</em:iconURL>
+  </Description>
+</RDF>
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..d62aed40c7179747bb987753b7dfc4f527c881cd
GIT binary patch
literal 2612
zc$}S9do+|=8y_RLNV>@_O+!S?yfc^^gSlbkGPxzXjhSJlF&A@Th@^XBjzSlrDY~49
z<5WsgUxbFJC{&_U)S?hkZs&|nTHpHCIp>dWul2rrKl}ate$TU?=h<t$hiHDD3+9{5
z2Z2Bfs9xj%)oeTaXltt8wKd9c)nqK8gh~Phk&-yNhy@}r1raO=l}C?a1+eJM_!uS2
z1q4!$<OGFELVbO33;_>DpT)prJRxXyxVXuLbOx6tfkd#PID9;Gu<{NR!eQc}8=QOr
zUm=Ob=6EHDSb+(CL5u`01IvWExk6lIIF$g8C80xPylB1{C&NR(>*7@F*=;x!@*N`K
z;-P;973xcakOU$Y#0du2GXN9-K_OrW2S+p-Z3jUD2mlTs;RvKX0*!M(;s5~hV?b5j
zM9fHB0NLY*FO`LdvLzBB4i1lti-W~EzyzWwI0B2s&T1f$_9}$EIG!(|%k24Li#Y`{
zOUw{)gc6Q`51F;;5dx_M4~5PhfhY9!{VB{B|45W7WpEi?2uHvGIFARPLyIK=tjK>y
zi-Y2YEO-D*ERc#As(M6P{FkeLr_KUZ(ct_=992>1(PRNb%46{*R5Bi_`T}Een5q<E
z00aW<2%wPw3WGpk&{!0OL;@%tL=p)@K+b9W9hZW{P%sDw3fTdPMIgu?L^2vnApr;!
zdRBl)nB!9UVhNqkV9jwkDlP^f0ayTVRB@gDk&7dVSagX%6eJKt&vgKeEszMrY=IC$
z3Uq?_(it57tUX(vACa;|oLCmqLnPoqzULRm`5XTLfFK~8uvjAUpU(Xkm-+wX46X_W
z{y)t!x25X9+2zmHR~bJq4~wt5F(TE~s9m>e3Ix(*QptoM+4FlFlcEEImnN@F;(5mS
z%&%eT8Bc<YqXRpL&V(h7bw;)Gju}Nt^o+q9m(tXX*IT3wpQ+ZYbNi11u`cq|Aw}{@
zZM_s;F<@r;JK@ac_MW!v*mGNdx%N<e(|Mp_?b=V$O69Yp!JSoGA6E38>aHr#ASld3
zM55(1#%9>{_vY-(+E>m#9Xs4pDd)g9wJj%CO}lt4@tTyWC9PnFQK>N@kscnG5*o73
znbp@WkXl(<(v}1-@v*l*9^QQFo46TX@87w%w>c+g<;<&iSIqevH!LqLd|c2`FlcyZ
zx^3$0+3d!}OD<UDHW_-y4M&Wps0V+Et;}oR?nK?UZ>^(7SQEppQPWx?l}bN#UaLHR
z=FIR|8KZmW5}k`3=B$|uR_)oxlc%cd(g!blW^`;DKvuX;4~RG4X~jY|thw2IS}<hh
zHp4ye3tNAkx3{;))4QeRZ~OY1K)c}b$TyxEzZXZ72(MG$HIhvG`}@;rFEf?QCR&_W
z^zB3D1wU!G6gRj}9=K*{126n~aUln{V|qUlW#w+Xf4#N8zhB}N_PbPiJ~)iat7@r1
z`sm);0>+w3%m_nalM|h<`yb?FPZWj}<@JA&iB@aj2<NJ&r#zIGdd_*D3s}_E-PP4q
z)4)t0`ij2qWPm?dzkK^-22$Lc$)VxZ`;h_MAkE&KQ~2baVKS}9COKbMX3Uf>++cx0
z->@kSav929bD@>`EE*Lm_wes6)HKo3tuK0-X-#?WselDAh6^rQUD~fUJURVdmh~)p
z3~AS&h9Y~c@Vq-<+o`twTG;C6ZrW*DJWast+pVt7;^N}3#x^!OXL86HD^}#Sm6ykw
zlC`E^1##3}Js)44S~Y#bRzuraFD<v}(P(Qfx~epVM;La^-~AgU-o?D3Z{(%(*vs+c
z$9fE?p;3m(#WZue3&>`7gML_IV!iz1zKRO$ujAwCczMeQ*v6uTEBH<)ee^3f$&cJM
z*Ht(k@yd&i^q3gsy(kaqaR%w+Oc1X$Yj12!8XLfJTleYeKa#*l^J>T%J;KUOYQLt)
zgR<0j{;~H_N5b^}{Dg9MXLUkU<oWP`z^K@#Z8I{h2`i#0_)8tqfkLyn3>c+#I&<6d
zLEjd%d{Bm8*9$4S2Jgr_ef;?7;{&-PTrM}iu}SHt>3bV2?_0S;v8R_0ew?yt_YmWG
zMbX)^7ZJwCPPVkR1l*pA=-%E@uPh3=oNwx&@G7rfZM1FPU9IE=koGbwY<GC_MB1vv
z#Kft>y`MjSJh6XkD#`)>*?bwf+MF}8I3iIi&n(^+<9BvTssG~K%;R@}D3h!$MN(TO
zyR4l}(^S9xktSV+Q!aQgo}nzMHvG*qCy=ISG6bj8-nWPV1sP;#=uv_<Y*@v%c6p&z
z?ABr?&-4dd`|K_&9zDMtyGT!cqWj9qar;K3S{c^pc63}cc*cO}qiLyOV(@KEAqk-X
zrv>|k6k*G-RR-mDhKF@AC3uv{GNpxHlm3gE@#L)T(^bsjqlH7*6C)`nZj_d9r9`wC
zHysIEoNoK32eU|V(3RhHE1r5rY*4r*IdeO|&Dg6@=$SdVI>u_-)Fuw+L!g&;+p!Wl
z&4oYyy#1JcZf5?G;d_s6xNZwjP~V=F-@JJm_iB@L@u65p_m!Iq)MDyGZvdr=!oAm5
z;6?M??4qAf-5r6Gh7*$R_u3q&S!CAU+WH0~8**2_SFlBB>C!juN%FBANx+z{*EM`w
zm5O{Ke{LGP<xXdWOTwtvTF})!sO0)qTLj+8YRA%tKH1ro58*9#-cQ(9ue|d*?)71C
zFs@(HRCm74>hQD9kKnOxofgf_*M-~dzOu=s^(fHm>57u(gV5^WX(6#n?dy@J;rDfx
zHGKkK(Pf-p-+}_Un<#V4Rz2%@ZP8mR<5=B$hl(u0?--wKL=_)yTD|e!150i5qi+yL
z*XTR~sXbeFP%Fp8KR@wZ{<Iq5;7sLFcGj+OgE6Lczdk3+dfT3;KT;c#h=tOKlJ&$<
zAnL{1*g>asuRC=;JA($CiF>1L8ZFd$+{(}Hrh65O99_*fya7AGY||&|j6-F%gCj{`
za$M?r`$LcuyL5uxH#w#oK4Jf{b~jpiVyva6SLa?q>5;=_G3ctp^ZH*YF$2vXU|sS|
r#2fu5)Sf~DxxhuOU%u>7vW5|;`|#$YJ3_d+v;T2aiXXXzxNY~JMN&vQ
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..35b3a174a5585a0f92f491066ef92dabb975cae9
GIT binary patch
literal 1583
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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..49e38c58680a16fc5bc06019df4201907ee8c727
GIT binary patch
literal 2497
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
LNkvXXu0mjfwkp;v
new file mode 100644
--- /dev/null
+++ b/mobile/app/profile/extensions/feedback@mobile.mozilla.org/skin/overlay.css
@@ -0,0 +1,11 @@
+#tool-feedback {
+  list-style-image: url("chrome://feedback/skin/beta-hdpi.png");
+}
+
+#feedback-feedback-happy {
+  list-style-image: url("chrome://feedback/skin/happy-32.png");
+}
+
+#feedback-feedback-sad {
+  list-style-image: url("chrome://feedback/skin/sad-32.png");
+}
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..a59db1ffbf433213346f489938a93ef370f3c611
GIT binary patch
literal 2394
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
M07*qoM6N<$f?Z66lK=n!
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c616b6599c13e5696be22b1f738e94cacbbf158f
GIT binary patch
literal 80456
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
new file mode 100644
--- /dev/null
+++ b/mobile/branding/nightly/Makefile.in
@@ -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 mozilla.org code.
+#
+# The Initial Developer of the Original Code is Mozilla Corporation.
+# Portions created by the Initial Developer are Copyright (C) 2009
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+#   Justin Dolske <dolske@mozilla.com> (original author)
+#
+# 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 *****
+
+DEPTH = ../../..
+topsrcdir = @top_srcdir@
+srcdir = @srcdir@
+VPATH = @srcdir@
+
+include $(DEPTH)/config/autoconf.mk
+
+DIRS = \
+	content \
+	locales \
+	$(NULL)
+
+include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/mobile/branding/nightly/android-resources.mn
@@ -0,0 +1,3 @@
+mobile/app/android/drawable/alertaddons.png
+mobile/app/android/drawable/alertdownloads.png
+mobile/branding/nightly/content/splash.png
new file mode 100644
--- /dev/null
+++ b/mobile/branding/nightly/configure.sh
@@ -0,0 +1,2 @@
+MOZ_APP_DISPLAYNAME=Fennec
+MOZ_UPDATER=1
new file mode 100644
--- /dev/null
+++ b/mobile/branding/nightly/content/Makefile.in
@@ -0,0 +1,25 @@
+# Branding Makefile
+#  - jars chrome artwork
+
+DEPTH = ../../../..
+topsrcdir = @top_srcdir@
+srcdir = @srcdir@
+VPATH = @srcdir@
+
+include $(DEPTH)/config/autoconf.mk
+
+include $(topsrcdir)/config/rules.mk
+
+LINUX_BRANDING_FILES = \
+	fennec_26x26.png \
+	fennec_40x40.png \
+	fennec_48x48.png \
+	fennec_72x72.png \
+	fennec_scalable.png \
+	fennec_maemo_icon26.txt \
+	$(NULL)
+
+export::
+	$(NSINSTALL) -D $(DIST)/branding
+	cp $(addprefix $(srcdir)/, $(LINUX_BRANDING_FILES)) $(DIST)/branding/
+	$(NSINSTALL) -D $(DIST)/install
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..3819f6337a171cf8ab8e5171bbab6f787b5f77ae
GIT binary patch
literal 16858
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
WYd8At+`NGS2s~Z=T-G@yGywn!N-@;{
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..3f04acd50d303235149c6a2822003ed94f8a51a7
GIT binary patch
literal 1761
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
Di}Ylk
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..5c97a5d4daffa1afee77b107b18e04c27cbdc49b
GIT binary patch
literal 1677
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
X<(k9cQX-E500000NkvXXu0mjf(W4)q
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..13532c21c13455285573a8fb062f7b9cd6cd172b
GIT binary patch
literal 2997
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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..6e01e7aec57e36b910270ff2cf3f634fdfb2e6dd
GIT binary patch
literal 3258
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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c7874013f6af9174fda8b201f513ea0baaba9e00
GIT binary patch
literal 7223
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
FV1ld%%{c%7
new file mode 100644
--- /dev/null
+++ b/mobile/branding/nightly/content/fennec_maemo_icon26.txt
@@ -0,0 +1,74 @@
+    iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAGXRFWHRTb2Z0
+    d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAADFxJREFUeNrsWWtwVOUZfs45
+    e89es5v7bQMh3DGBtpJWIRQvaEWg0FFbOyX9oR3bjtDRTjuditjpj05narWt
+    o84oYB11nCLRVqtUIYQKImiWS7gFyIaETbLJ3u97ds/p+3274WLFUsQZmeGb
+    fHPO7jn7ned53+e9fCeCqqq4moeIq3xcI3CNwDUCV/kQrtRCTauedCslJatV
+    c8lCu1HTbnXZYauxI+0LIBZKYiSSCguZjEc6M/S6zjvU2XvsGe8VIZAa/2iN
+    VqvxaGzXdV0m8Ha5vm6dzWltn99cjmkVZtiNWlgtGpTatQiGZURjOX7v0ZEo
+    Pug5Dp+nF8LQaKcukln7eYjkIvvdwuHdr4Us1hK7qcQEm8PaSd+/TrOTCIU/
+    68czp95vT9yyeJ1ita65bpILK+ZUXnDdbtPCbtXwc/94FslUHqCiKaSTOH70
+    FDo3b0NmcBQaWVh/vG/To5cKmA7Ls5nsskQ82ZJMpCAc6H51uySJ7UpegaQR
+    4apwodTlYOAZmfVExPsp4FsSbfM25OvqW2bWO7F0duV/CbPUqoWDSLDzsUAW
+    sQR5QVHI5QmINEcGfNj45KtQZRmSoPUYJPMi8kb4IsBX0+HBeCzREhwLgsBD
+    FEWIktSlMZoMHrOlpN1WaoOcIUsRq0HvkN3msK222iyr6cd/LBIJT4DP1jm3
+    i8jYlZAfM75ag6FomoAKF0SV1ipCyRbOh5MZhJmM8nmIiQSERAyCKKBxcjV8
+    /hD0dktLdeus7eT7C0gUga/LpDPuQe8ZxCIxkLEZcPImmEd3iAR406hvFEcO
+    HIVvcJgvXOeuhV6vQy6XZ+usodlDi7Uz2VQtadmQy6fsamAMZXIMoTMj8PnG
+    kM1nYLECcTKCoFWQQQ7BVBahdBaBeBb+SBqCToWxzIhAOIbhQT+XVDoYha2x
+    Go45DS2u66dsLwJvodlDpxsIk/vAvkNgls+TAfKkFH5U+HkXt9eH72wKMdkq
+    5OI8gTZbzahtqGExcYEr3+o+7XlhQGn5+NnXYJ3WiOm3tUEZiSAlA7MXTIPe
+    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
+    nEzLJzdlAAAAAElFTkSuQmCC
+
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..b940df9b1e90d2c077bf2111c5ed942a30ca06ff
GIT binary patch
literal 5937
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
TA@#s?00000NkvXXu0mjfGjyaB
new file mode 100644
--- /dev/null
+++ b/mobile/branding/nightly/content/jar.mn
@@ -0,0 +1,7 @@
+chrome.jar:
+% content branding %content/branding/
+  content/branding/about.png                     (about.png)
+  content/branding/logoWordmark.png              (logoWordmark.png)
+  content/branding/logo.png                      (logo.png)
+  content/branding/favicon32.png                 (favicon32.png)
+  content/branding/spark.png                     (spark.png)
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..91377a312090ce5032e4ceff60f173abc5a0da64
GIT binary patch
literal 19844
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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..a3017f59ecf02808ee8793f118d02bd04b2bae8a
GIT binary patch
literal 15088
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
NvXV*?)j;DP{|Bk8nm7Oe
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..32c8af51d275b35e8300171786822fee820bb0e3
GIT binary patch
literal 3231
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
RT;Biy002ovPDHLkV1gm){&N5T
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..25a0830eac7003d6dec6992b18b9f17a0f27d723
GIT binary patch
literal 19766
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
new file mode 100644
--- /dev/null
+++ b/mobile/branding/nightly/locales/Makefile.in
@@ -0,0 +1,47 @@
+# ***** 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 Browser code.
+#
+# The Initial Developer of the Original Code is
+# Benjamin Smedberg <benjamin@smedbergs.us>
+# Portions created by the Initial Developer are Copyright (C) 2004
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+#
+# 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 *****
+
+DEPTH          = ../../../..
+topsrcdir      = @top_srcdir@
+srcdir         = @srcdir@
+VPATH          = @srcdir@
+relativesrcdir = mobile/branding/nightly/locales
+
+include $(DEPTH)/config/autoconf.mk
+
+DEFINES += -DAB_CD=$(AB_CD)
+
+include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/mobile/branding/nightly/locales/en-US/brand.dtd
@@ -0,0 +1,4 @@
+<!ENTITY  brandShortName  "Fennec">
+<!ENTITY  brandFullName   "Mozilla Fennec">
+<!ENTITY  vendorShortName "Mozilla">
+<!ENTITY  logoTrademark   "">
new file mode 100644
--- /dev/null
+++ b/mobile/branding/nightly/locales/en-US/brand.properties
@@ -0,0 +1,2 @@
+brandShortName=Fennec
+brandFullName=Mozilla Fennec
new file mode 100644
--- /dev/null
+++ b/mobile/branding/nightly/locales/jar.mn
@@ -0,0 +1,7 @@
+#filter substitution
+
+@AB_CD@.jar:
+% locale branding @AB_CD@ %locale/branding/
+# Nightly branding only exists in en-US
+  locale/branding/brand.dtd        (en-US/brand.dtd)
+* locale/branding/brand.properties (en-US/brand.properties)
new file mode 100644
--- /dev/null
+++ b/mobile/branding/official/Makefile.in
@@ -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 mozilla.org code.
+#
+# The Initial Developer of the Original Code is Mozilla Corporation.
+# Portions created by the Initial Developer are Copyright (C) 2009
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+#   Justin Dolske <dolske@mozilla.com> (original author)
+#
+# 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 *****
+
+DEPTH = ../../..
+topsrcdir = @top_srcdir@
+srcdir = @srcdir@
+VPATH = @srcdir@
+
+include $(DEPTH)/config/autoconf.mk
+
+DIRS = \
+	content \
+	locales \
+	$(NULL)
+
+include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/mobile/branding/official/android-resources.mn
@@ -0,0 +1,3 @@
+mobile/app/android/drawable/alertaddons.png
+mobile/app/android/drawable/alertdownloads.png
+mobile/branding/official/content/splash.png
new file mode 100644
--- /dev/null
+++ b/mobile/branding/official/configure.sh
@@ -0,0 +1,3 @@
+MOZ_APP_DISPLAYNAME=Firefox
+ANDROID_PACKAGE_NAME=org.mozilla.firefox
+MOZ_UPDATER=
new file mode 100644
--- /dev/null
+++ b/mobile/branding/official/content/Makefile.in
@@ -0,0 +1,25 @@
+# Branding Makefile
+#  - jars chrome artwork
+
+DEPTH = ../../../..
+topsrcdir = @top_srcdir@
+srcdir = @srcdir@
+VPATH = @srcdir@
+
+include $(DEPTH)/config/autoconf.mk
+
+include $(topsrcdir)/config/rules.mk
+
+LINUX_BRANDING_FILES = \
+	fennec_26x26.png \
+	fennec_40x40.png \
+	fennec_48x48.png \
+	fennec_72x72.png \
+	fennec_scalable.png \
+	fennec_maemo_icon26.txt \
+	$(NULL)
+
+export::
+	$(NSINSTALL) -D $(DIST)/branding
+	cp $(addprefix $(srcdir)/, $(LINUX_BRANDING_FILES)) $(DIST)/branding/
+	$(NSINSTALL) -D $(DIST)/install
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..3cc1444f645b1a36a885816ffd6caa799482ea7a
GIT binary patch
literal 25842
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
N002ovPDHLkV1j~^$B_U4
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..ac4a6968bf2746ad89a82d85df3a8679b5530cca
GIT binary patch
literal 2670
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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c5bf9c25c09d1e89bbb75e774dcb797330a6249f
GIT binary patch
literal 1915
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
Bm&yPD
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..1bf715b96a29fd0e7297e699cd2bed76e9348ace
GIT binary patch
literal 4409
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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c8b62e0c1db7923d002e22f89622d2269dde5c57
GIT binary patch
literal 5625
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
TsoKwn00000NkvXXu0mjfFXhKa
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..6156f2d8c1f11bce42c594dcc28b143c30bd22b2
GIT binary patch
literal 11160
zc$@*4D`(V+P)<h;3K|Lk000e1NJLTq002k;002k`1^@s6RqeA!0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBVII!Q!9RCwCNd<U3ZXL;^>>eQW`?M1sP
zt76H>mSkJ5ARBNAU`nnN5+E3YLkmf`aUgjDgxt$RF)bv7CwaID_X&YZ;1YA~fN3T+
z27`-?++<Z-ZC9)9W%`_Y-|zp=tVXr~15P6NJ+rejbN=(5?|Z-ZD`$;3j^TZ77tZ$2
zkY!si9WIkUSp50-4VYOAjuFE&BCeP(x<Kr6MSPQ~9wUC*u(N!*gg7=~S~-N?Qa2B`
zB@S^>Y}lJ&XI7hTe!y_t9>aF>hG{xc6gR^#s6>H3hp09c`L*L{*7h1f_^^TaiS+2Y
zT65|o94m&E?L*`(^Y}cP;qbVj+I7<|zz#}i`X+i(DcpDA911%l)SERl=9Upz4l>(U
z!N|wpF%ed4XFdP1-+2f&p0j_k`oDfA&-veoK!xELFT!sC;jbB~kxR{NPbM=sjQl`1
z(%l6Vhk8-$?LbE{4}(A&#5WV8KjT_sQBN9+l{)5U7jbg`VJz%BP%1xp`1@fHe%nNR
zyAef`atz2tGUGG1635TUS=rACFe?uPMXV@}4DRnWys|f0xv>{H`F>=E2GM!W2u8P#
zVB@ACtRL;cXdeMe87L5xj^x{DhbV9rxdN_5u1P*QTDcrgE;kEL?4Nwa;d>r_#qn?5
z_1D3|(K`@^|42~3851N!j?Ew9v+eJ{1|R`Mj5<!9#}*&n964R@w$uG%na)0BM+eb+
z!8)9K$p&oOJc4!IIrP#a^ZZ1HtIUt~CxFBWD1Nf&(dg#t;x0Gw4Hp+vm{_$A`z~IK
zf4^X}yXW6_|9bhz(O>uG4n2a(<VU!V|7#dxxq4rxv5Eg<0WzNPr2WS@ajEDPu~qnx
zneE@2$raHtIDo?DF|6LX0heB~5t{}xps~>9fH}H+nv{{_(bKV}u9A_Qhp8XESRbHu
zo)Mp?xz@>Nx(&=<z83jz55c}19^c)!ed5UUSG?Ine`u6Xy^C)5fVN~)0TutJSdj5F
z@?P0`+|6D5ZIoX1S|`(mY)2NIt2ZIPVFNbp7{w)*jiHz$0Cf#S56xn28gTg0dZ_6G
ziRCD`qtn+sZoB^Sa%gCvWYc4vS(ImIarK2J2CiO*JAYu~jvrai-@R|>ew;e|i7<-)
z98nyIHQ_AQWIW5$Hh(TIhFWeLGU~PDSl2{W=e{_%=Cw{o5&6zMitBcwFtP<>>j$xY
z+ZqWlSS|&~gb})k#*m}I5rF-W5tJw36BR$wD@c}l&d>Ove(uS8gP4(tu18=QfRJ1N
zJpA=HtGM&-alG%1+wt9xUycvlv>vN3yzpIdZuL(PM%yCgZt>aO%=lFS(qHgie)sF;
z0LGim<TZ7`cL!F_ccaw6fa{vb<?_f6Uy5vD2wg=N8@CL@=h>9YHPjkD3XXx1tf8V*
zQ(TC^`H=t=DWH7y^XU~T;9~WjAdD4Qo&qWabpU#Z^7@T~xZ?G%!Z&97vFlB@p%xf;
z&)Z*$`~UVL{K@ZbJ|82SABdvpRdl&m6Qv8)IXqp)JS%__GihIjUY!g_AB4p(H{%s>
z`0#1Z>iJmY=BY<Qq|#aBd$u5(>!A4u=pF6?H%4$8sMP~rc>{F<RHpSb_+d|6N`Qz3
z2m^sU5{&jGzmwNnASo~jRFmJ^;A6<u#XV&*7GCt)>#)531-SSP-^GLX-;1F&o%qCi
zH{kYL#!}AK9k;&k*xD~G{IK#6&*e30|3>_*eazPX@y}{{QDnUzqP;Bds{8LR^YvlC
zwLj~l_!bx`IQ*q+r;sj=!cAp}VF254VYxOcWx|kg5fQv>rGn~hw_&t?5YG5sn1x={
ze&-gLxlS0g1~ZQJ1;H7LfxHv1kZi#J3USM0C~oU}s0m;V4?eel{;utKpy}deH-87W
zeqbECuI|PwUXsJ3TV3-FpX|b4eka5`7w`L0-%c~n<NSm13z78M9c@imY2F+)0=SmH
zg=cURQq~59oo|6<D-NOXg_G}v<7WBmkQ?VI88+&5o<!Y2uC|0VkKB$+e*75>Pwa->
z;0ZFe&%W~?5D^@UCn(@3{T;_`1|Mr;PLK){OA^ZqV?&X3xf$Wed<A|GD=Un=5JT%%
z!>hd%H@xpoe2XFPqUSGRWHgU&eQFFheE52N=<mz;<J!IdYxG5fz1;u*W`vkt@w516
z094&K`HWvU1BJJTWyY4WkI3|~-HHD3vSK&xo9UrN@dPXjk&{DUb&wOFh{Lfd`T00k
zb#YGhQM~HTcVPI`6EIUeK54!=;Nb9^zkvAK-$I8c07O~@x4b;zh?USTmemH1PjD)J
z2-`O3W+56)x-X9xdIoA04}ER`XZ--~o4yLyzw1uy{>Kob8=s_gH}LiM?!X)JH{zD}
z&EuBN10P0Ed{6F0xhwd!kEvt+6p*y-m<jiodKp~)Y~@wKd=>se1&x_9%*8UkI`$K6
z%^W3(7|QpD3Mp(Ks9{HM83U<0GFF2p;$ri`TXEwZufeLRC*WsO@F{voS9svk|BmsC
zeoLiojZjA>;UdjJT!bf(#ocP6CaA(c++u^T9ivv*J6*y;LtNQZJXEiRs8)O|FVZ|G
z_Td9BT)=1la2U?2t+?(Ti)haB!*fq@&-dZ;@62H2k6(v>da56dJq!8T!Qe+c+_@?;
z|CFd^NC;ef+tAbLhuX%N3Cm3@uF--T4Q19Yqtawg7k*saj0;CCtnH+W*$zxeO5GgF
zZZGzoN+EaG=aDPTpk`+2jS;%Ln%L8MA-@0HU&Q&BY+|kzBSpoSqIozxqGhzMk+HG|
z3C}{-9#@q}&2S&b7HaV6O4&3yuG-|H1=R^OL8@0m9J>DrY;5kw9e;N<LT3QKd-K=O
zZ~PE{^Ik_?R1A&4Pi@2N-|{dn{nl-`XoH2ZKihn~xiGzj=UaceN*a6JZtY@XDNp-%
z9`|mMgV3lj3$6u7t<S)@uoGh)7B&ZmQL7p7PTFW%DVS~sRyvPD{v@^>nZR_Tgfavi
zMj0krK{|yySN|6JH*HWG5X%vZZ7JlGp?%Cs01{vr_*5hl*E+ON$C6wqnws#^QmF}#
zejV{mA<fGdcO?L;x15hX_tbD5L;hV~c`5$o?{?u|Zw2=6e*jyC8wie1z*%SDlOG$y
zJD=PM=bmq1@Hf}3NpCEErg~)RCYt2gU97R}J$;Q-7Mhru4Y0t_k-w}9-IsR5%s42`
zhL}3R*H6|_o+_g<J&)4l1ePa{VrJg~Opnjg9cUMH0XJ(S-w|PNY7=J9y%wEarq(%e
zqH$vFIyEU#5FF3ct0{X*me1Ea=%P}|2n8U1NI((y3%NJH5%D#_mo7)^TC;5{?w#z%
z@BPtN`RV)c8#ffN`QmNVS{eAH3Gc~qtm-(5n?Jf4-*Z;s(5?H?y?*FTw4GfmB-AF5
z6hO1{!I^6zh)+%hSmwJ{UDJcYhE6o+V$>!`jHhVQ%rL{iVf1m;W7xFdm+Pp_*A%gu
zOegHD2`6WfD-3c*7H01NPhMMuZxSdTy2+FB<dLh+V^wJ$H7<G1Af>{(xL7ggU{zlh
z1AR<%`?GXE@)RSbPxrF;*}jdP7`<W;*<S9+Yhd-(bMU$ETKKoGJj|m#1f!!0XXC}(
zZvoAjWdw&$;qo1exbV*|!`-{N1M){^u;(K`HHsY@4^Mkul7Z&>ENuI=9^`s5C>^iE
zFH!neeVRW*xn(kiFra08#Bk4~Fmjb<F&W{Uj7cqIz)tb1rZX6O^ge9)(LZ5+=bxgJ
zVcw-{c(e>h+>4)a73b)@OdL=0rx1Gikq+}2S}&;%E`Jyht79S;(4s7Y7pELFiDuvS
z0dCxZ_izpQwHxv7zq$w4Ue4s