author | Ehsan 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 id | 1 |
push user | root |
push date | Tue, 26 Apr 2011 22:38:44 +0000 |
treeherder | mozilla-beta@bfdb6e623a36 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
milestone | 2.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
|
docshell/base/nsDocShell.cpp | file | annotate | diff | comparison | revisions | |
layout/style/nsCSSRule.h | file | annotate | diff | comparison | revisions | |
layout/style/nsICSSGroupRule.h | file | annotate | diff | comparison | revisions | |
netwerk/protocol/http/nsHttpHandler.cpp | file | annotate | diff | comparison | revisions |
--- 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 0000000000000000000000000000000000000000..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 0000000000000000000000000000000000000000..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 0000000000000000000000000000000000000000..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 0000000000000000000000000000000000000000..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 0000000000000000000000000000000000000000..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 0000000000000000000000000000000000000000..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 0000000000000000000000000000000000000000..e97e490585226e69da9cfff20b3b4db2384d963e GIT binary patch literal 39250 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 Ku%Q3iLi>LY_s)3$
new file mode 100644 index 0000000000000000000000000000000000000000..f5af7a70fc77eec683544b9b1d7c18c05656e499 GIT binary patch literal 46788 zc%1Eh1z1#F*Y=rV=x&e@1O*ik!A40Hu)AAPF%huq%rJBdf}lvZq=a+`FWueU-6{P0 z957JCc=Ua~@B7(0<28G)b+5JKth3L$XOF7qZ)iYJNP_Bl4FL#(lorA=)iT{O!{E>O z*MAm{L(q@fRW&3fAPB2M2|+gTF;U^cu9n&mg;#59V{K(&fCCYtbZKa)uc;`BO3T!O zs9c(xn%Y{LQX`^m2oSY<TU$qjrJ1*nos&KuqW13W#jiedK;U6@kuCV>I~-2BY@d<{ zb4Z&P@^SJWL?bLAO8H<Y5PS@nybD2OjEvBOiBLR*4VVnqg0K;jk$8y2ckF{E_~+ip zcr>Cn{$b4j%9X&8;Sb;=6aas~Pm+v|Od=oN>P|wj;9nbJ2AmE#nnJ(Ojh2SmWV9QQ zJKRQ|`aUt*>(z8OdYtfa!Po4orn)hhg?EX6{`7uY3)+njwp&lwdDtJc?w{(04%4Eu zPY*&5k#2yGQ4FMv!raj3p1=?eJF_bRf3PbUmu9$$w5~eo(~Pv1lvSj8eC$eBTu5V; zXH>;hSNba>avKvvf{L5au8hVQ+N9@YJP+$dyE5T-QpGXynY7gy+Lei%OLDu^u8Ajp zh(v_P#-1<bUBAO(=wnw#LNqmlhkm9j8tblKg&+(C1aY24$^~g?x@@0B%ZCfopLa}7 zmkVEgp04=(`NO7}pC>PW_4(3&<MXc1pRXXF*T%-iOqGOf$Y(4C<;Ow-LCOld1g6FT zg2*Sk!D|@2#=&a>ye5$s3|_I|RsA<!&==+3w6A&%2|DD%1PEhi55I)1NuND4F~C1E zh3IqYt12tXONt8evQwi2T(=lQ4C$?Pb+t8B6=lVR`596E9+E~7CcPD|qp7W~tSBum z%uDhJj^Q+fFd1$5dYU>!vZN@>-=iyn(*RVq6B=mhfoOSYewgccZzQKagvsjAYNV-0 zM2n(bJ9}E9CG{XoP8YtJzNx9Xt*xb@{6BV2?-CsBBy}N7Za3V*(A?Tx8R6*>R$LTl zWol~X_(~UI%j*MITUUeOHl_W$rDV0!6Jui|LcBKUKy3N_?d{#AI~FURR=>V;1=F^i zisJmtP^6`Bu(PXW3&TpK6Svg2uUbg4qo%sN^gq&|rD(W&L=R$KDzoqGaak!oMx04& zRaNFD&{8tm*D3^2aEZxomlj*Qil1g>ZGByyJZLE&AC1F87#ePob(_|$72{)|N@#B? z1}!8N6B8~lM3157ShP%ZsQ@Pp<lWO+wiRiaoOH%RbQlUo4lXWs22#kYzoQZ~;3_94 zA~6JrhJ>7&h6)Ffz3=a?o~j>f6wrrAMVk70>yV0y$&rc2ph9<~ufG9QkXB5Nj@PZz zg~;R@2Kxt_w(CG-plWm?W3@I!zA1NPU|^^jRAMS7;W5UEGBsW-1d;IHt{5F092jmv zS}G^;V+<2RInH`|F8PCF!$U)ZBhwA=IMvwL_~gX+_{4|N5qOwnXtWg=#Z*t?KWL3( z#>U`Lcmz9!)R9zAPE2ThfXDG;q@$xF;~(WF2p{m{@EC4%^g}zSg6hmCG2IAybe2vU zF$I^LoSM8b4*F_268>w;F>|iv*wWNcH_LMDtV&D#Pij&ASIe=p-p$w{Cf>!^DRt&@ z>?+Z`Ztj(n?W%oVGrRoD<=9F%a?dj|FXP4I(<fe3ez6<}{9t|iu!LlPqS@)~ME|DG z%dz<`!P?0^EX?Gpg)`CcarLL=IFfSg(n%FHr{Dl5Uymnu&!x1X%aN^O;zQuN)siy1 zo_ctCIa%#qzAC62U5;!OlM}u??EFhtoHI5t(mk_;7J4(a9@)Tpj9tjZ%f4{8%K2+& z1*tLQ(<_n<S&@<p7f{hLh;35d$Ou8A(@T>LS(;Bt7;rc;3NkhkZV1wwUZZSNYZSsj z7z{Zb0~PemQUy0PECzzUvs|(KcYbBLPW-jyicLvL!+&qd&WND7|4IbKH&Hj#)s%g; zU`d)=+G^nv%A(SofSC)ny)hvwyQwulIw~z;#)9pva`lYQ>+Z^nbau`!`*Ojy1-|gj zujy`24z{<8tE&3EV0+UdVzX+STZ+TtUz<dw)PG*EZT?YdIr%l!v2F?35%GaFpBC&; zv7^UJN6+lalFXvKw}I{jE$D)!te6;0Bi_GDFb;wXD6^6cuRTic{J3Dpl2wmfxUS*w z{(W4`s|(vUMD>1Luw&V`E?zi#-onGf$K`_JI;o7lPYbpQetK@pjy;+>&-M4M7CF-V zdBKi4t6tc!QCdOzu=X_(;nzc7F4&v<CB?+Wl~pvZN}vC@V3C&557|f9#KrknA5f4y zmp^mGekgk=&PGkkE&-Q+wPHUE=6RTzc@_+e&bDI5#y<Sz0DBGH2jbBE4|bW<7iA?m z^i`osm>mC9K8*UXebvsIIXR<*vCM2||Em3Kfp6Ns68N@#rob%iGX!R9pM1wMcl)FR z>D=udLUXtGu9~~OXY~*C*UY#7|IyBtH(UGAr*<Z%!n|)ve$29u?c{uttG_KvXg;<> zSdv)^7Hv{Je;GUnVU?x?F_YjC1bLr8-zTTuVe~x~eXmB}yV3Vy^nDzCpFrOyzkG-P z_r61DFTO4F<MX}oQN4^jN7A1rLRhgQyS29I$YIxSl79hV{L1mA3?;=yg#~#z*_jz> ziP6D+UWQf>yG?sTeM3WiU2Sz$1+vKj`=P{$ATQnL5XP_tU&~ZeQw4TUWnfQKke{6z z6X@=%ZwX=aTM2bcwYAmNXj2hrN(ysvOCVSvO~g7zfL2veUJCYH`I#{u&x?`>&j4N< zv7V`}uBN)Gvb+r0j{V2?S$=y0-W)WwYd0_fCu*hu^V5RNbH|z!2xdr=4rr<eO$cI9 z#yiWb$)TnM@GOEc?9^>!n)1D}yd*o)ItR>iN2<07(xlx4gT@9#v9c^L#@^P>&dL9M zl)f>9G49rFhMO3hn;YwEDhd-k4K%N)UcYPZ_!R5{je7|#_-4A6&hFam)Re5MrpmNn zhi9-c&eY7-`Jy2rpw-IQ($diproKa7PEJ}`Gqfb-oj>f0d*kWmZ)*tQO#9p0+VO4l zy_qM3*Y7)b<<dcEL7vm^3*Z#e<iwcph}Qtcv|p>8v(Haxk=*X%m(*__S6VMjD-=*$ zQdCrsosw*C2=SW^c6M}jbPNQta<7!$c~tez-P4Nemh#dr2yH}$C@;?)z?cu=ySVyt zd8qkBq;?!pxpn8{=5@=sILMdgf<13pNqGPwGmP)%>OTt6ED&0=dG868iw8EzNwCu~ zK$lvPEo@B)kg*zpd$@<<$RJWCKCum3_a59Ly=tZ0A}%&M`ov}+)er$ZvKs5_?Hg4C zR~sdpz={o<m1QKCipxq0^DseAyTH!3Inod!vl{R3ALx>RA$BYcJHP0fP4XMpNv#nT zT)+s)w}Am~i$#P!3=9mHvf&{%5?a=U!eWwZ*Gh;AEo7&M7FD!0HFm@!G82P?V`<a` zh?RtzWdYw}VPPRbz6H$G5L<3%OLKPuA~HENG@e4G1+ic$8CVx^^YU`BGt-hnY&qR+ zt-b%5mKZHyB|^*?Qfhi878Yg(8Zr#TU)Iyn-j{?53=faCi0MG&7#sy96(u<ihR9@E zdpbJ?lBb(ThA-+vFopn;-5KcZ?i@-*#%mI60LKH#O(AmnsKMTz?vb>QwPS6&K<%ma zfxf=p(R4$I#C#I$AxANhoW>A^V8UR3e_!8tCNeLR_)(IvK5IHdh?32@XK(<te8@r@ z2%w?eVu3zHvdFGu2tR=B|ByYUF-A5zI@al<NU06sXm-Et9EJzs0nEfytM(Y(K!Nqa zWo&eGY@)|s74;9pL+~JWU=lQA%_qlo#%Oyh6MP*UeE(D3J2EniHe)8Ip~tnxsKCB* zXrO;+bZm444_ZkE2a#5KpgaBn{R{TRW8+}63yl(h1j*3Q<dnxcABf|GG5jcg1UrmW z0do_&V6!|`hnbw}FkwRH0|Big85x<b)1J@<a(J+(#*R#b=}r)*t1w6nWMel8<p4}V zS)O^WP8OyhbP{?7eG}u}l*6TrB}kCV{}|*#{HKFleSJgy|G^+fY{LI2$Tc?9SAQ?a zb+lLK<!0xU)m3~a$hF4XTE6!5bF;ONE=-;+$Z_;!Yuz^Yh%GFLaW~e~Nytx4Ntqes zx<gN0*SB^JD=2v9VDj+H@wZjq2D#qoZAa9I_RevIg~3)t_4CKi#n*oo<a!GT+wR>q zeIJ*eljmzpxOw!%J=2`JnL)10Ok2zRrFYc(r1V5**jj7b>Jw&GjWdJXK++AJ7dl>V z-$lkpT4-t93sAfE@R@p2(~KZDWPa(9v4h<!hmi1hHh0fI4flLxsdojeqNyOqZ}kBL zx%SKF)Gw-DzJAB$ZOA)kJD&h|GySI*)titY7lR5RL2mb<L+fRC96hV=<KrI~=;QJF zvfQy#CrYQI96uW6GGteXimuuqzw?Tni<_&n{R=adW!y`oKE^qIB#Motu3NZZk&uY^ zs%-}5&n(OgbyOsH86b|_=}<Q%R3OR1#KyI7(K3~L51u@Jbnk}P0tPZj@ME~+N5fr{ z93LM)KMOmr!r}8fFQ}YXV5Px9kZfyD7aH`~r-I%!=EWjRwDb(D9Ev;k?B2#hi3O4I z?u-b?I3CEv%1c8=K}Ai&%f`EYy#y!xO+aKEYugPm(&I>Qq-3O|I0oUx>_F&L+gI_C zERqwVAi-c@ECY^;k)4H(1e!Hi5+Me1S}JlJ2AU;icKkSI?wK`a9{MLSb9}a#i9=&1 zVVnesnD99K-G~W~kPQEskco)>a>)Gdw(xVrEdRe0F@LZv#5XYj&F==xw$|Em;D1GR z*;fJ6bShxBwdBOU&nzl0OpZ&-PntDgc9sVCCFC~@3^Wxb`1z*feiJY|Q(t;U{3oZX zudg~QKFH~Le8sl`vpd_++9NbQtG=(dA}QR*@s(Xx%~t`lry|VQ?@erTLwi?uQEaHU z?W?zOMYTvG^K-!Lh=>hKN-L~yYH4rE3Q2lr`s8I&MBU7Q*<aujn;uhKSzXsy^FHj2 zf2o)I+a$l-#u)*#|J|E+2{{?*nN>Aa$$kz&)de9*F}~p~NWhH#6fm7V0$to(+<kK@ zDyp*5ic0d{M~8d6H+~r~hpL~ywtb{!Wc@0#q`0K4v?wp#0k(0otN1ctjuac;xpnK_ zW1_K3Ms99iPI_{Jz3K_oCnX(U1kBL_U6qq6SJgD{8N??3=RXOt(T-{-c1i6n>G~pI zj+ViP_Z>cY{^AX{(2%fqp+P>^kL;3Lb)a%az--jHe^c$^!J}t&UwPPgczWm@P?BCF zcBN%{mxv0D^uN%A3Hy|H?KyPJ%;wcg>oc3BR<9Jb?CtID`V=s^M`LbiKG?oVVXLC@ zxx;7mjdV_ni!W119QZO|QjRqdFKV1zzfNisEKM)98^&K0SuPB>d<>ZUNWdH&9f>=0 z>e5=V6%vxGHf}$6N8`q}<-1b`W&}*Gu^wk7IpL+N#Fj5pQoDIY<;1o<K3y||Ci7UE zoix+J&Fh!&FOuK0WzCYUu5B};Co_ni?SaR*X&D)*={cC_7M%-e|2l;B=i94n5ai}r zyy>!YVc)kQw5RevZ{6Jkld8TOLP4k>oC=}%A?)CEqc)m|1shKAHugUteqKh?wUiXo zX$a~CJPW@nJY19zW|ou%D!;$8`J2)dDo^qq1&V8vvz5O6m{}Dtw6|xKpX}a)olOBl zcXxJqpfH<-@5@j2%%(7h{AADGZx!Z}pUuLY^0O$+E&r{;59GfY)*s1FcJG=o(?67- zY?8qKlKiAOCFYmpBUwm(Nj{bv_e=6|JijQ<J1;*kKQBKo|G!b5_TG==6Tggy5Y3sA zvWhuMd8Hla7x5XQ6p-C}V2-k1NtE%+8wQq|g_CQJvVfhQ6#BAYu(MKBpSh}!cNbMn zgl5=|(p8h-k1>R=)~O;?LKSd1Wm#!yNl7tyrYwXDSo8Dpa&wSJ%hcqAxai1t!GR&+ zp?4D?Om&TRHLj`}{2^45fxealHMoQuQ7b6ON7b^kGE<XKt)Kuu@4$CQ;vu~nY;{cy zTn$%2m2d^NysQjg$~|QaQOZS>(vuV8qa)r02fXq0inEM^FtxSXHBc@7hiXZPT9BW& zn|ruXEQGJc)YQT?c%X=>o<lP$D>XSWE-E}Ez{kVIGeR{6A_C1C!jvAq3a%tUdIy)1 zejF5Lq<2{vX~~JPplg1fu8x6`s?m_q4>eMg-p53Q1bDkTI7UXRMnT3v1F9y>P$-(A z033T4_{P=orFU|aY9wS*hp&Zd@YT>q6?`cdVxtHd^Sr#Atc;Yz*zjOqcZZiR;!~qk zBOueSHDJ*F&nme&nQ2MyqeJ~Yoop>V@_<S>WQMB1)f81#m6a8<>13oP#DoU|6$^_B zpmQM%GN0DLSJ9z5Wo4h&5EG)25+4!d4HS%uQH^)dvrihx#PEHgf!fGIQW-ujw$BVw z8h}RRg;2<%9$yE68O2ps1J9-=6E0ma?O1+Zc1BWcn4jw_3&W@mROfsMWI2ZpnE#xt zl=$!fcRLIH!2W5SVCea@&eWjsO)YKIwSxTItaRX)r@f`V+vrD)Ajs;w8u_`1SHV7x z&kbxRKWV&$tQ+w4P#uhpz!y`)S%RcifLC#0zRp$#R+FD~0-+bP>(G`I7Z&7YrN)Q* zySy+of+s0H=>(uUn7VJ3Xo`yq^RiRpBLdxQjg9eN==ei6pLOuyx?!4{Pp~rcv(pnI z-nzds)h2vaxZnq28XL76phnY~dW@(Z7>0t}^rWaDPdhWB))#8N5Zpv;gqqA6@eP>z zdKeu*2<R~&dSLiKpORyPy<R`lCVrvj18FtEjf5tXuhr;*8n9NFmzfe1>TPeKr~QT2 z8%VneYSeDRHa0ftf2j#q(<6DX^3vjh?6mk$9|uc4ozHrz-q7<Votg5?RfwUI!kpCj zcRo&522XF_xPgbCQt3PT#N^bYT3*nzW^7Yavu+c<5!28Bqq8PhQ;m=p<)wu=>F>k+ zonIJhJy5@PS>^os3zsfkyQ%TaI~iPko{-f{HP#v=8CPCboST^lChMiS?vuOf*RR5= z)Yq=7so%c;gz!2tLe&F;T5OxOzEotXL34E_1z9OE!QKv5#@bKr-_d~8X*4u$-+lNP zCh8hHhpM_mT0jv7Ly9W0*VWb5qKUlHBGADwKev|_MmhxeG5!(F<Ht|&L>)atQ!~5J z6K;@p3)GBnu>`vKMhK{~PN`N_lojP=Bt!*yIlr_tGt!6kU|niGJ$*wXQ!@)IE5|4| z$e{Ik3#Pdl4`u}40D*y}2WsWT`PpFA2Y9-?wza}r!p})8EuTM!tw?QbU%q@3=n9#( znzrzzyWKs!dEIg$Vew5$C!W5^LcRi6T9A{G7!9JNhpVF_-T~+2=;+`8+hbna!wy)d zNO>2?yw#v(ZS*~PP8y~Ke2ayImkJ9mWM^g&*sYsTSy57uot_vQ5gO?4_r~XqkFSr9 zueZ0Cr-z4|tDCE9sDldxx0$yRTd3<D6sf3L7q8v2=kO``EZeC=JLFdjax&3!9`r2( z&ZmRe9vL1+ct;-=_AWFy=&iq>uMa@-33Gw8+Td19Tbp4kzGbQNMsnJPYqlLacJj=5 zm5Ucu&Ye1XV3*=1F&;)5hP?sB1t1_NC%%u5i;u&{)5gWdL`8&$1P2BB`}&8vK-%rt zw)S?Tw&kq}J8{$t*DLSYckt-RvllO`Ub%Ad?9u%@l@z4ci7cR_WL8Np%+JfpNKZ>k z#i!Awrluq%#v@>1A#VeNTp+`C{WcLpPBK;r`K`)3_Z>QR>fFVv*KS<Da{1(e-AW3Z z)=7#AFjJB*wJ$E5x|io@Wm9LSrzXFD5ANq-At5f1al3Y#c*Q9aO8zw)Wi~7C+<*AQ znG2V1sNGV#apm-(J<7ln3DKp3>{O(*_dz&Bq9J-apveb8F%#Ua-^WCSgFaz8I!xN} zZOe0|F*J);uG%22ptN(};S*;ssH$mbsNcGJ>d>BTn>PV0VS$Al)HvLkl8SP;3<8@C zI`n3VgjjTQ67B-wJ54$i+LJ}Fbb`ypR;}Nppty7I;p1miuBvO^xvg>Y9O~A36pD+D ziiBi$5ps_!pT7A3u)N&Nw3NiS7#E1xNz&2L*{R#1P#}t-<rNebl~}t`UUA3XgU3!^ zysm!x-n}~-DhGBeD{NYe;PEbCWv0Mj50@iX&vfKNnM`oUNJ)%$febo{9h++uAW9A% zexc>!YoufqcOE!!<kZFMw{G8mc>lKQkzGnCmXH817Y`RJH5Pld2Dyf(Z>Ob5m`C>z zE|5_tzGF+v2?)o;&c(NQ*^1Tc<&<~rJ9PBS#Va>8?moDG>(Ysxit-!RtP~Mi#LKyG zDK9f62GT|@Pt>`o+fxyW<^n<8#$Ae?o#q$}6(b8L-(sYrvWh$Q96EOT{N<}RHSXNK zerV73t+E?di7j2i&%?>e!br<P1~G)xeFmJy%gzK-&~4bYHJJ&*QPMGUEEHTSvSPI~ zSRMPoG+elR?dC0Y^>h0VY}vGKt<1*7{M;NYjP%s3%ou1@$ut}ijgjd<;J}sB4R>L> zyS2I$JN7~l2{{cT8_%L8OGVdgl-;^*_kknGlDl&4#?8z7cF9St+jUTS(LyeEW=1+1 zPIgKNdQ^{mOStA!rx8#v6W#bOMK`dK$B<GnuyFDUE(J>kthyb04jw%LE=tvl$B!w> zNv~h6uxBG5?*cYv23l$wCT1+ep8OH7YI=r?3cz*HjcHhmhvZ4fX&IRpELtK0=2ixv z?LBzp_^GqUcPS|<$Vjb`SiW9qtpGbKGb0TpEjtTv?o$0%Xr)EqV(9HP?17vKkOXj! zo|%JJ0GSRcaDDCAv;Xk%14>)B$jeBrm0TgbL3xW9C*y*JbhPXo%=B1@@jVE_G<67h zg93svbb$!Hx;>cA9a@kCmYjx(ZNWmpWnz+RH_C2S+Od1z!L9OgvYR%nT_wJJsl1|` zj0A_E$fAYZ9L$Uq5Ok*zz)^pkVr2BdCDBXL)6?6F@4>vMB|;K73R-41E`G570Hn-j zrENR+Y~8qV!}>LnD@25a6gJC9trrtnD#!;A8K^PP@?r#%>Jwx|Inv!ey<Tij&l7D( z5<^N!&&<xvzXWknN=AN*()JzF8`i9nSOGu;<>fZ5Uj^2)05ZP}G$atIdn1BJ`56yH zwSG*Cybi=jLQc)V46d`qOT{GCY}h2Lumx6LAOoBc5?HiC9)L=UEnBi^3JE+xsl&}Q zO#toFYC(}w8FV3O5(*kd7JvlSh{WpkQqpn?TND*HtPm4lB_$^<1%^&Ucrib^MySak zXmwRfb2ExmKZOK(I542!4>{;Vn@A~X0Teg5Bt%!PTDx9qlZ>pqf`YufoXkcr2P;LF zE)n44=4552rzXchtnXW=p&F*3z@;#t-4ChhLrj>DNQ;C-#3WX&S+_w7zljHo{JJ%g zE5()zF9tp1U}2&|a7bRYqCjvX=~VYzApHSsU-xzchzUzZ1#sB8c)<lFA|?)y*5cPK zUb`BMxae|WApt&~1>jPmr6dJUjc{vA>*v1J)uJ%{bsG$)VVKz#@bU{TS-M<w#YzbY zSaPw%$`zs_%Y=ml`FXiGK&NOZ5SXit0OpG^0x*Nvfx;C=kO%_9z|6`Cx+S<oc$tW( zsF;|jsL1l=ONEvQ@-O6Gz>ana2T+dHz-?5m2vAcK7@#^3!-n(#P6od*#DFEEq@ibK zVPC+_%MXx*gb7O-gaL#A|3c6oR&X&>k|9jEaz$HvTU#sKLOO*4E|wwUAhs`s+XR4+ zQc%+~F|%?26h3|dK|%at20=lAMSQ&63qWre>8L?>V2E741l*2M6dZ~Iu8|?~!NH-S z!QLb;Q-}_OBd4ZgU}j+hKs>yBTKsf;3we3CIFUF&PeVyYf`=#oM#nS=2?7GfWC*w+ zU<TAlkj^k7`kV{6xCuOT+}sNmaIhiTD2I-RD7TlibaqbbV}U*xj6uC2Y;UHRIRL<t zQBcz&2(0WJoSgUtw45C5Kz&M|6ia}xN6K2@PF%+n0H(PKHQ!yb-U6b*;>aiwZ6;<G z7FIkP4J#`PGcywd9Ss!)DTx+Da;2uF>$5J@>;hqjhKF^Aust<9o<mev963;@qi0}b zA}~`iF*4HA(Na^Aladf2+{3!o?kU}NL>F;dYnXg!Xn1I-x9++%M1dtGqoAawp`|0x zQ_|7V(oj=Ukm0aIh>Xm-wynDh=t3QEI~FVgw8O*Lz6L8Bh#ZR}C8waIq9Ra}Q&Ccq zlaZ2Ov>|eq(7Mj<PfD1!R-iMWH%v0v{FcoYBE=wIZ6G6%gEvwf304=PSeMe&)$>^c zYMU}bGSr$aX9r<17_1fv28%I(uonwk@IBa1k_fQ=Ft)4oP7p*&X<gcZhD)Rs3%Uwg z`|%^%!z6vxUMz1R67lG&ZWs|j#sbrUwrh=04i6(F+hAkrE+C_k)!c_iWx5d)K%`H9 z1UKASWKJ0Xku3BsY=`?03><K`vlBG;8jO$()Wpbw*2{@CJ%m0C;sXiN3|e~(fO1=o zIkg`|vdAN^O}h{3MLN*k1!7gtDA4V%jN0!Dk>T#d*Yx!F6VY~H9N8$~M|DSVLv2}3 z{5}v)HXygH5AH_*;2sER@6tjzy3tX>2(GUt4yN*kaNO33wLMw@g`~H)rw5VIAB7S3 z3qnqNL8R1=!izgWT+`~qf_Bi{X*fzYGBVhd>b=7QA|<~PnAy??0|B%bNV~}>g6$~d z29e@UcqP^KXbliSD>U6mI?_`SWhdhTk&&NpkFW0TCjw=BAF|6FGXc<DrQxr4;2a?e znv1S66<q^^gE|9R{V))KI`Csgqh!OKCE-qI>Fgmg-rFA0<(&g~AVKVhPzkLu?C9v2 z-YD5nXKAGSBhgn7Ic}qYSA1pX01*X3g!IRBM#+b}D&yZ+9AUPB$OKhweUodt^#-*E z2&jP37;%(hq_-~PtrKAz%X5f==ZLXOXm&%-AUvcCq+nFabc`@cH8Rjr9OLtva9|<M z6r!RQJ#Ap`mr&N)H>ib5PI>ig3_nUU)LoYw>1}U%WBXzzQeB9aoMpw~yU*->Vhb9( z2Zwcsv<Ha;5DIKL29NTO40hJ!#`wCvG$UL+wo7iEh}b&0?MH9uJhO8RjL)y@92mlb z3t4B7fZD)zjE^H~+#>^>^~GtC{vOWuudFT2%$_}eY47YA6q8xj2&NG=gP-<_fP7_U z+-!_%baZ5>x2>)$FD*VQEcor);IPQ})V%Wg_THfpJ=6$xU;vrE4m}_ak1~%8^>w#5 z*Mo<`%Bq_BruOc>!D0M}J}Npj&jvt{adZqp9vtZJ>+R|79~c}S)&+Rlzy%0hNyg*m zV}_%8piXy)Fo-VDPBWlrG^&f*#ZT91k7GZKe}Knv;C&qBkg?-q<Jw>rAut8_k*V+f zKqFeiNOaR0!VV507gCqS2h(vQuo!elbU@2g-E&Z9IHr%*q1S4c^#`+Y1GI*S)?m9P zCTu>KpmjO`6GATfE&`}C26YG;u!V%1F1?B8Xq_&ogQx1c4JRz8>vTr2!^3Eu@fUSd zQl_BB2>78hsyzZBv98-<;u(-ZRwi+}=J}@@!nBq(TB8SQ@Y6N66XpO%4<KVlM$j6& z2{W`tXB0D4VGk+{(TXV*NATGIz!K5VnC?mE2~$v^H>Nc$fS+_iYjnZbqJ8fsPGTk| z?I%poN<65Xgl7JMr&H8~YVBW2QEOF`qxtD-Bt?y@C<i-ExRj!}q@)N<GQ#=HXpZ`` zn%|r095tpI&0zgfikesh-UxH2n!im_!$^`EKcA$YPg2h(ssBeNsi7vF-%V2En@oQr zNlj?NHZ}oms7dda64e$>n8x4ARa-Xe{Z5|Rx*5~dO#CmWs!^l(e~_)lHZ{-4S6BT+ zzS^kuSquDo>1ua^y6TlHSFc>TcH_3rbh^3_Nmqv<>1wCB($!B+omJO+?coy;^e!?g z+|%;mh0BJ&kgi@_?|5RTnt_#*r(Z}^LTW}P@HWuP$?E>mbHA3ZKDbX^$KtiSPe52k zPHtXaHWDM>INLrmd~oCfnyya&sdV)TMb(Ff)^?7rUVfozdHDqexvA0bKtO+GX#hXG zvGe**q^nJ~9KHU;(A?72-o?`|Ffz9QMB%*mLB4MGHs%Ie4{lvOs^st~U5(GC&B~sc zur_HYwux7$${)Y>h@fZu%;vQ-7~RPH0ualy;{v>0?5s?6;fETkXHUpH{)vP&Q|_)U zhgCK2KhZWcv$k_`f8!sX2X-TcS?|D|&E}br_LIA}uAV!3P+Dcqgtcjhe3G2p-t$-0 z?mp7eH?_2NaP#(wD?mDz8|CHl%F0v^|4{S#rL)KP?$~(rr}EX(8@C@jd+CP816W7j z%*M{yJt#XL!7GS%bp$sz?Wgx{UA=Jfz|Ji)G8cZ3uReQ7X3yc1=da$n_t?PBKjQUk z_t?B#WXSRpy@6}`gon4UUpjO8y4v}(dQUW`^S86+tJk+&HBgh;x&PRiOV>5;xxG(J z4DpLi%gO<01sSpa)>8v^<-*Cscixz&8oJ)p`;=aW%PGFiS6f_jy|+neul}<u8fv$_ zV`JYZrKY84WM${(6(rfeurSdj+*i8_M(x1PL))Zu9PE#VAnC8~<*RpES|3^?ebx7k zBYcq<78w)wJ~1UVJtH$aCnq<=-ql#^5&YtX%E`lfw<}1me&T9lx);q?*UXWxJ_nnc zsb0Kk^TyBNs=9l4coYClN={A70I0di4li||JPOIMJ9+fLE+u&>X=}F^mbaeHk*_|Y zr)T=g$<@yKrH`j~aLBuesMz>~#N?FJw9Lc+e`9Sh6EEM}96G#b`)29&>oz~MGd9}& zoqV-Y!=8r(9U}`{hYMWy{CxuggF?b05cd+2lGDQN%uV%)PwuLz7=>9~QdE?emK5G@ zYh$FNcJs@Gb@`VG>vhh1A3q`Ln_AhuIA-bX?c*O96pA3m#=lPreqmv1Kzwpf<N7(X z*cko2>rX$}BxB-eX^e*zKBlZ|zDikd=sbDz&O=z+5L~2gE^ZzOVlaXj9TOjK_srBl z`{@JCo0n8PqCz9>_v-|MNczIu5Pop}{&d#5X11)g)O$sB^}EQmZ)yA5(Z$XCjc;IZ zaOk`6$f)QzXG1-0_`&U)SI(*Uf}j)Z6!7ZkeTV19x=(N4+CEF>+Mrjurw4!N+6@o@ zke<JM?d0~%>5ZLzKu`$qG$Ja@S|9)5w%S#d6KDKGg8~Cw?wsGJ{qmWi)+2Q_r7v>V z=)DikU2kYPaPHz&HPCS#<7Y4I9kuYU^&UKa^)@INAcjYVhuW!KzkKfaF&M!4`@0@g za(!)Sq6^<wyK?OA#|(D;7a8nrsT<FnyL?^!?qmFIqN&lHi+42D@7~k#2lEZq&%3aQ zFzZJTU}GmVT>JPqJb!I%4&1wQL*>klZxh)h0|Wg7y8YW6Hk~|uLG^~_gA+>oPaHXZ zUPbl#EsX~*egGEn6u251`YtT=Z2-XZa(4wgb~D|l_itS}dq!qPPP=w0rw#W*1NeS9 zO+}QZyLm)zi=y(bgU3&wzjWogn&wMCUw;JnZBS5f5E#S&Ki@ar?vAEfs%OqVd8~Q; z;>qJ1XJoi*r!w4peck)F?>lnxtm@&l8)X%?C{6KCm#$ng^a0ZjKnVd${QVI$@L**3 z=-5`-wZ|T6UO9K{kUU{#svE^y)L*B#ZP&Klr!L4!tdrU#E5Ai~*Zw0X&YV**@$&HW z_69d%KfLc^9{}g>;_%W&@2G<Gx|Lh@A3Jqu@0Oc0liqbm(p!3<P*zDvXw|WU5-TKE z14tQpgwHyB<f)Uho4dQGr<WH%1@~hQHy1}cTPt%jg7O*(5&ng;AYLe(nKc2<H;}Pf zVe3+U(WOh5i-}9FUb|tVwA|KhyY`+_A-FiZxVpLF-Fe+yogMA%Y^^QK4E3MNtrT6t zw}5BS8U?xiv!=s0_oYZkZ(hf<aM5BR1QcZ(q~*6NZ{L37)hj!Ddk19qV*mP;t&O#% znXv(Za8_JIh@YE{fr6ZpS-JGv?6}}`c6`MK>5U7y7xFC<6cR>BgH>zRZ<O7vaMjB4 zx%CTz4c`l^=a%NC#`-#Xmv+i56I#U0#zaFwip6c4C0)L-FGX_o20=DXE^c1FMT=4T z0D)Y$LF$&Vk+F#xY%cK3+|1O($UskrfY&^;4q-CcnQ19Vaai2mSu^M|y_p+UuI6E8 zW9Q`JLHt}SB)n|7h}a78y-x^Q+PYwmXkehPuct%Q!asR*TUJbDF+VpuGaV%<2^PYh zm?f(&+g&0nD#FCX%!*)g^Dg8^L4`#Q-M)AK;p3+;9#0_P!T$X5!~1vdsE95R;NxOr zqN5^3zI9G|?K{c#MLjjU7cXO`Wne;*{Ok)5V7^5H{3~zXxN%G4_MLn8?>~U=Gu^v; zTl1FMjm-iGgUg75!VoFN<Jt1?9MgID8(hLdT+DRz%*;$2z-0gp^HOiPsCroy>}S<9 zZfn4|7}aiGzX~d(xDhf9j3)^O50O#7m^DYgrmw+@ML<Yo`7&Mx=9S_s$Uty#axM}P z*?0cJ#S0fM?cA^jfL*$%a{lZ&B?-<c!UqcwDKH$LQuw4((?12dda(H|KM%q|iZQUt z%7}nbK)DV!<`suTmCl|zvzcPcg)^s5pFDBw_;wCvW`uMBhy;idD>ZwLpLwV?dow#X zpCIs4Y>faj%3r|D+$_vO8<;t^96NG!`@tiJ4<9<Pf8YM)bo4Y-<Y2;y5DD&5VGCg@ z)&H3YSlLy2hk>1Ip}-Qb#u+GSXy_0)MkZ$9CKKPDeftmY-@AMFuASSrDf3d1kxxO9 zVQ6O~4&V`;Ve!6dFD_<QP9A<iq2&zZlvLCRMM6i9fHJUb-Mvj&Y1<BE#jRU5uNPqB zrz1hw4;)r<7Mg)D0uM`mq!|#76QKd=NXaQEC{a`dmX=j^`2tQ(ZgB-US?NtuYgTVq zg2m`SIGpBeoCF8LNzl=t93I~SGEy?o9~6xWre<Oiq5`N?G~&`y>kx)fT$COFVHV9w zUoax{#T2W^$xDO9;YdkgG7LF6OhE$RC}ApEYDy+<amke{M3*n;p+x&QJJrE}P#rWl z3Tiq=W)4~mmV^Yx;Q<(doDR4~j$;>Hwp3`b03S0Lb{s}vHa>&_;X@!SDJ2a(6B9WZ z2^NbdL0kerWVEEDWaOmOO9TZFT8~Z}A|suJHGxO<Mrcvi1cFdPkBJV(5U>Oi0*;mh zM}lMK<K^aB0G2F{I5(@pfU+tOgwTQ%$j`n(c#JNVo)SmN!o|VP#=^|RKu?8SE_2c@ zcnFKZVznV13?n%O3kw^f$4F00Lq$P`Lt?^QoXj(b5rbu528)fJ4rrj99I*EtqNX1q zYAhgX3L5GuG7bn65#Gl8d%TSWL`H(cficGD{yc-D4Upzya0sZxUuJMjeucp){Rsw# zW(I?!_v-`>Jd7y)69UKbuaP(SQQ9x5o1veiZl>x!Qa9Mn@elZMvJc}Qke{}|k3%1{ z#wn2FhUj@i{1`M2k6}g;<^kBF0+-O#-%;QVeh3<dhp>Z#pO_p&L{#^OWDaKh6L+Ki z6`zA}H-CrEF`KYJYyJeEV+dqs@;Qd6)+av49Hnc%<Z}>yXNu3kc27=DF+6{S(D~If z2RhXxHB|^pg0G}1FGnA{5jF=d#1<6f!+A_V2|aNTi=H^}{e0q}`WH_eK(*QkoAawD z4&Yj?c_wF`$(d(z{yLLGYyfY+O66dhnr!}?hYgJW3kMB;o4nEa9p(nx(%fRxO!!^y z1{qAa0b5@W^q7Bzx3Op@X#x-Cze?N~v|9c;abw(yX=ycWA<K&m@O1O=hTpJxdUyxM z6ny4x<~nKswV5I8O`7{l_uz#5vZ|W8rq=eB%FIa5SH2lP$KIH=YPT$I@VB&m`#vqV zsI0QSxxK5qv!$WBtS~do!6Nim*qeywuL7bIGx7>csylo7`ulr3n(He|@-ma(hdY}^ z{S<p++_o&k!qOusIx#gfx1hMPy%*s0bvD+N73F4t=pW+y!ZHJ)4dy0qJT2@zgQ8*+ zlGAhYic4#OGhp}ETv?hAB5zDskdMb}Ltk*o&vDj(vGS$aOZR|~@aXuYw5+_MlG<K; z--4bduxc|>z&+)ykGtb51FN55ZVC*It)1Way?qxMH`S}E9(*55S2dWPG^9)ZZ`>Vi zt&Ge{=O%8LGl+T?uU$NR14ANW-h-ay7d7<4eam~hYYTx-V8{H{&(p=;*20u%Qd~7f zJbX*sXm!FJ7=*ZCE`CBVd12?|=ItN+E+RH5H8ZEIORINj9ddVyjR*<!ad$>I7i}H$ znXFCmOxA|A_N6V+%nG5&d;=oWOKQ?mv+H}h2|Y`j3e%J0qu#ys^Kx@|?dk3CIy&~{ zT%668me)yMTE-SH>>S;^eRG>zS}Tj|+dI3uyL)=t>Pk}H$Ap7DlZTVt3%}wx*Vw`k zm$}avya_4{z#EuFzIXBRcvINe*xU*hSVt!S>}g5|0~;9{;O*h+@Y2fM%9s$5o8ubu zC1+DMgR|ktc$J#={1L&eyd*2wF{HM>p{cp01;K+mmvvQS=ElBz8<LXZY-eL>sz-bh zoS&XzQ93tg!`WdKotWh6<dIfdp6%k9Usqe-*wozI($>}vcP#5_&P<I64yx!(L-Mgk zdIVx>ep+&<-B+Z@7o5#ox45{(th|D(w2YF%qN=JI;AA7>CFpijX-RB&=v%+krj!>i zEKLlw@lW*wGv6oJq<xRGF$s?Zi!39@<8E+yS$TP7bxmD;Lj&SpYgKwY*tmgxs8e)x zva^wq9`TWeNm^QbOo+wzIh#Pou&}7O#I&q*hm_*t(y|H^5qQ|xQl9ia4m|FGsdb32 zuaC6A+xcq|V{?+@BO)!5W^gv;C})H3)$7^NX%-k18W9tpoSp@?Iz`inwROPD#`O5u zsPN!GA5Ryj{MyQzjOP&*IoaS^i;D>LwVji*NwEqD01ut92`L%bIe7&oC8ZUWU?gj5 z!B}P^(IL>+%hkcDxVoaeGOIM*J}4{seRSB{Ad`}BIUBf_w6C|Xx3`bb%ii<a#mDb0 z2qs7b$j&WD$SFzBD66c3t5?+4RV76rxNc4_Uzb*bLCXnnwT(<iw%-B%F9T2lqyF>h z7ldo!XfgHlLb&>fn1tlC?3}RB%!q)%w2F#KxQe&Bwz@LS%frRN);0+FiL8>`SC+Y% z;MoC*G;S|uJAJ^JZsg|f?HdTX9uS!r=jY_}#>>|)ysWIe0<ILTs;;R{4D=6<&O&~S ztGK8*GbuAA0l4?p*V9w)yW9<@|1%dC4{s3nUKv>0zOb=(baD6e_RlFPErZM9ie;6^ zLwj{4vgW`RFE2YSIUzbc7z9Ii!{k}08|{8BOB)9#SI;;8Hbh;0BQwhvuN<5Zx-PA> zq_h++Bb4(@Z%p&^GGpI4zI^rWU7)Y0i}N$jSvVX1zHa!nouiA}8{3DlmbRXO@w4YP zuk4+iouW&Miot_kX$cHMu^@me0FNH&{+3!#?^vT@-`?i=EToNKe;v`**3!z=gLvoR z69B1eV2VK6*~b(X6c!<vVCdi?L1d$yotc&j7W(76YQ*PuuJ*5NOlLW&ATUs@V{Liu zfs^eW%{%uWKEV@+V5jozxm8e3PF{XKLfRLB$5D3l=PSVtEa82a_HFg6XU}Lk+P}0m zo|Uyx7|0@6THaJqzj6JhI)aL9fb<Ma%<Sw#@^X-`T!4FGer|3yxWT3(H|v;pPt~qn zJag>ig(oJKdb83tTzzSHGfTqRb1JG=udChCxO4BpBV;RPV4&}w31?_!EzAUW>y+fg zgt(Zn@K*rt?D2!UwrtsY@X0Kc4gVBnlk&vG%;4PVa~CdNzIy#8N-aEi1QWE0ZmCId z%Hq^iaQjb1FyrH5qhg&59;;qFbNtYr?OWue<e$z;+N3=(G`@QH#Hlj~CPFEwYiQoN z_vrDHH}B)#CnVq#7bPTsJwR-9R78Zo-JMG+Q+TqQ)+rEY<!l!AW<S-}KfnLTF%(qg z66pSoo43?8G|a;yBcq~Y;8-|@Gde0VA`Gm=r`NAtIDPCOa<*;LhBdM}vrsmC-6i++ zp6=ay;Lwp{$4{O<dtL=OYI*J2E$g6=kkEHw;o<lQu5hpg3kiA~<Z?~r+$j`KZqtUf zl3R7Y!`Sfl)I89J4{Y1D_rSr!M-f*M+)Ed4`}_GJBq~0bHzXt&Z0Z8Qu8w%_%!woW zcPoQluV1rTVwc%$gpJTNVPo_N|M0^89Xt2z-Fp-`j3A#o_rweA41Iik{Q}<x!2aA| zqxi<#>&@fiM-T4ZsjMKg5x}kz-|sRjV<XVl;CTB9UK@Y!+8LF{4-OtYeB{`%6DKaJ zsabn^dV6?!*%-a_fxWmrJ>1>gjWmIy+ZE-drPi%kEh!;+GJMuk7XpLL!I}>rJt64o zsA*c5-`>6Nz`;X@j{<)*?bM9jUEM5IEj(aX9v5dP=VwRu?%AQdSyp<(+SRKhCB!#q z%ud=!54C3Bd2kOrZ)g#ShFACP*tL7_zWo6A;8pnGF=J;3#}}_19PI61+r4^ybNkM1 zTabREkSj%%wPriQA=6cAq;dP+18_BJ6L%{pZ`;0O=dL|__U+rh|KR=$wsv;*cCTLA z+SpjXusXX{US1CAGy=DBh1fBNY4)c3t79K*ebqi{nwobWfXJb>TXxG9MJ45JJ9g}X zcMI&<bNHE^_4DU1Y^|Py2NE6CqpI6Cf=){UNbwaSQa8Ut;mA!>IQKQCuJWflH_FK? zY~HdJfd)QrJ7l7M^2CYL_bs29nVFjC>YAx<K)WrzLQHho9{t&foQ=bsMYhP*h+K@< zq&G^-$jT`om|GPUx9+{EsHmi*sQkpj*bt>ZwRWuly++`cufF6n8=b>3P!pqZV+!!$ z_B9)%Hf};7<>eLN&6us5@mo1J?>kS_)6phs5wFTihyyGDCcK+4E2YCZ+?Hc=`O4L6 zH*RU%-6y_k?fUgn2%@x%3@nS0lf%nX%SxTnCV)rfCl60c!eSJnBFlx=s(Q`B?XdJ$ zM%}%HM2VZ~R~6*eu3EEp?Yi~w2CUS^jqoPCG^dP|;?pOOA3ePP=zx%zsEEk2Wx|K_ zW@mU747FvssGL5JxOP+HjD)y^<f>Jx*C2@N;Png}HmqB}cHN0b5ANN)bNlwSjY9A; z@}-Mq)aIajIQnYh43F(UasIOE^;6;q^DMqnLP8S2!mGK~tXj2oz4FC-cW!HHsNcG& zer~O#@M8XDr(e!S{IDX#&;3100PD&Q!R5<E(9?A*U~%4+08xJPmFu_f0u;5IH?Cj1 zdiBy-<yGQ)^$`|`2#`LrK=e~AkeZUT^4=4BgqAMFFN2ojMR*agl~>ensRMu;*REZ? zqI&t_xswNXZ$0>Q7Fvk8zb4M<ij1VRqSE3;ON4}%FIz6ORBJh>@Bs}(8PUF^a_;2e zJ<77{w%_@dDq=;bqSvbHg(cSWE#T!9+jmfL<4R#+{8CO~QRQ=2E?v5K0S&{-3L966 zD&6^(Lt;ZXB>Nj1c$X|<=HQUrv3vhfMZsl@7sE?97W0W8KXLTX{@vTQ%57XDzGR8g zgDH|pX9mZ_igHZ%6u8(}SlO4ZUbjhRk)RYW51yBmd(md4&2k`ItrQjJ=UB3j@ZB>+ z%qRn;drXj$l98KVP*_AjY$-F$%ErbfEV)`jTy)uzMZ6pg%q!2E%)(ABL)oe48nR3z zWK(BBdD$5m8E9Dr1^9TmIoX(L$tn2vKA45JS~^8r>0g#*$3hT#LXVc7j)op307)T; zf_I0y+3Z{v%`}%~aC7G}7MvkOL(abPpr*+ed=_y4)BlOk5|}2m%pYIfyHS{fk%p3z ziiVz<XNByM8+eN!@>=Hl4{xffoIHN~%q7*Ej}0uo;I(u=9ZUl8dfeh$Ud!D4e+I9G z97)mz#)+SJEmMSM`j*-<9W(ywRFc*>^nnOo+T&X2d88>i3qOh(LrEXfQ4sh?MhL^? z;9unCkN)cB;BOpE`j*I=c`)e(TBi$K{xd|@?;T7sLTlzGvVM3l=`)e_rw%4*qQ569 zO96dVFjGfokuPTae4(dDNp%V`9LelI5c<;vgC(V)Wn$yx;^F=J_f5ZFczJnvxVbo3 z8IhC4v;N@dPn*Z!DCk&!^jm7PmeCepc}`|pO0w_$rs_}G2SJgQ@3-uO@*!?52Lts# zaR7s(Wa1I|UHg-hBdT0X|HJ_dDK*>THNS6va$J*#`5!odA*1D7CjAfWPYxaY2M%Dc zWOQ6&TmFfC#DU+Q0$`t>XQlE#vOhU~ko$KXz+lPgc_p|1GyDI*0brkDq2!JqoA{9f zTufBI<G>%X|Jx2s+28q(?N5#$`Yi|knEl^$;Lq9rJqP}v{mJpezwW@FwEsH}{89VA z;lQ7@|LYF?Vf(-Az@N7Ns}B5e`@iVGpSS;Oao{i5|0M_hhW%f0;IG*K1qc3)ee`zx zQyY@MWdElf_*?dWc1!lx>`#vVlmmay{^TI)zz-fy|DyfLp)FjDl%#Vz@Hg#Gb_sFP zQ{etR`;*avY&3Jvz~8k$EXT`4Ip+ZUUHg-^LhN%7z+bjsEY8C~G1oQtm+cR)6=0#7 zYXbhV{RwGdc52dp&;F!>$O2ljf6>0;3T`?w?7wGUc_k11To=IKw!cl{-?hJ8lJ{S= zzvJJx&p`gK+F$tpwf&v*_UG--+n={TZ-3tYy#0Cm^Y-WM&)c83KW~5D{=EHp`}6ka z?a$kvw?A)x-u}G(dHeJB=k3qipSM46f8PGQ{dxQU75o4E{LS~u&wc;mU$y@S&R>1M zAm2Zl+x{Ooe>O+?@%O*}`T4uK$`&y$y1BoA`H#;Z&RL|FanAYuzv=Ur%EwhTA3S*q z|GDz?$pcN*<H~Cmv(5Sa$LaH@QpyKUo>RH_CyUCtlLwWhM0kGm1zhy}t;ibbEy~+> z?AZCI%8nh|mA6Q*5#eK{o%=iJQ|FI)7B3T9Dfws1O0i{&d06QvaC0Bf{;l)ZKXXKz zhl`VqiI(CAUqJuO^XETvLLK=ZoXLLTbU0?}|5PR;|FeY*{U4ft=5#y;DcC<>P~2~< F{XZcap(_9Y
new file mode 100755 index 0000000000000000000000000000000000000000..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 0000000000000000000000000000000000000000..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 0000000000000000000000000000000000000000..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%¤tAppVersion=%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 0000000000000000000000000000000000000000..d62aed40c7179747bb987753b7dfc4f527c881cd GIT binary patch literal 2612 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
new file mode 100644 index 0000000000000000000000000000000000000000..35b3a174a5585a0f92f491066ef92dabb975cae9 GIT binary patch literal 1583 zc$@(*2GIG5P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F8000H{Nkl<ZSi|jC zZBUd|6u$ex$1c0DF3YYg7^04ZXsDCcBn@MxGqjc;1AbsBPCrb4P+}@b<xGkqL^B#1 zQBtzXh?)U2G-DWAGd3288locuXb^~e$Yv~{0;lKheHRuPol&!o8GoGFeeZkUbDr~@ z=bZPxjELC3Y3vDr{|kUIcDp^kti1ftHwA@1mmEJ{+F`S8!um5Xnae(}yRIJ@Ku~RM z?dR_#By{=)jmB;^U}}>;Er?y#pO=?+uHx+3{M>^FD>m;)YslW0d!e(lGvSc|^!E0y zOifK~_3-v_1YD|MbWG3acN3%YevH!9jHXLq6tMBIS+J?F84(d=v)R@?EC8R&moHl* zBO@KoC&(E6gn$&t=n8^=>chyY6W7Om8KrqM%Ek2>0GjE+D8fyE+PZC9JACOL6u^YS z!oqU~gTdkCWp_q)vk10-1S2`tCMp@7F*0iNXS4;uXCtUV&geBy1Xm80C@wCp7yhO` z2!Pq?>FF&pnQVa8WDTP-WdA3EeT>XQ5MUR6=_y9PU_A?&?}g0((EWND1&2)}PmPuW zm2y)1=xFz6*>&){6sEi{fZMlk1903eSCPqhT@kPzwD)rs0tDr!42&wkzyf4E9dutG z$>>|GAB8?%)wt1=pg@|gcB9o`#tS~eo_n6Y$hB5>bae2p89xj_YisMq*w|Q_Jb5xD zBqUH+Sl9rFeNwH-EEzzQ0>CRC;{IY4qZ$CrNAN}f*`{Um9<*=}<+6db2HabVB#hXr zH=F5=x7PHWI(@nbfoBZ>sIRa80iw%lYHF%kxNsrK<?;almy9AP58g3SsGn!cnK%g` zUn6iA0<G5wEwo}!uM1eGbz;v^fV04-7NU-ciJ|7^=B>^WsLIRB^GzmGpCd3dFan~A zbQb}gPBI|4TH{d1+!_$H%1?-J3|jSs;V#x(0b#vZCz9Kkm}GYVC@Cp95gHmwNl8g$ zu~-}cmVw%<ron(*15qA=QYRx$rzgQi5*S#i7LIwRa7MUrhwPR1N2|oX6>)Lx4gkf) z#SL|Jb(dDHT1CFTzNAnpDZ+htpeYdCX6<lIRQd_QDqIB2q;@UV4=+b5n2bUhUYavU z0O;xISq$-YrKF_v#mC2!OraomIJn?92!dxb4h}Uk$*BvtJ7zI}c+jU^=0M=saiqo+ zjZ!Pfiq^dXHt$HR9PmPi_!$L&mX?<98yg$*3JMCY^9OZ4V)RCP4hFLOi?-wHE(GPJ zzC&4Ph7K$MF&BHbdy9F&WO7oD(337Gn7oW8GI?uhlE#ywRC1bzM3yXHZgYw-xT>mZ zcSuMGWo2dcI&>gq@s)0nx?0pfTWZT)2=cm0sM}Ez$@omTg|)L_?+BQB6M)7lWuyfY zzW!$N3kW2gIe_FUHI<i@opu5UMHjT8E%xT*<g}a7uTB8d+=gb#19rpu@!taH0SZym z!+N2QXk<Q0dUh_X2y4HA`jfanR$Aven?HX(_4oHLcLI187J^xjlaY}@^XAPXtyb&k zhHTwET1qO*O4U%|=>kU4+Z#68K1@luHh0kyGK~(V05A}OdqE~6WoBkJw6(Qu!J9VL zd2VoyL}hn(_aO|WYP=6<Qh2z-;bGMLM}rtPcLQhx-Ae&L$;UQ^S7Kt~O*rSnB><-7 zhZXo-T~S%Nujtr!rHxHZA7RaOua}XVbhFxOwK^E!{Tz-G>;Vh6Tmtt=<@f~3UI75S zW47-|yM|}OAN5GaDVez`Ir%2feu0O0^YMY?nmKQ~Oston6ACbJd?2n)yM6uNc_xfn zyKY?<2XR0nX~3oL`Bbbiik>%fpwZEN51ak{j%1NLGc&K6QHpobv)7D+t@ek%7)C{U zA-vQbX-(L#c^s!=bLGX02clvYk=b2IvDli=U%#L}8FSyj=RT%pSy@^B<35(Zc;@`C zd28SQpnb{<GibEQM8TeJ;$*B=Q+0Lqk$>vLgm;Oh^~Q}2muhNuVtRgw*|Ddqt82}J hehWPLH2Y5h_zN|DpW89Sou&W)002ovPDHLkV1o4=>}>!5
new file mode 100644 index 0000000000000000000000000000000000000000..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 0000000000000000000000000000000000000000..a59db1ffbf433213346f489938a93ef370f3c611 GIT binary patch literal 2394 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 M07*qoM6N<$f?Z66lK=n!
new file mode 100644 index 0000000000000000000000000000000000000000..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 0000000000000000000000000000000000000000..3819f6337a171cf8ab8e5171bbab6f787b5f77ae GIT binary patch literal 16858 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 WYd8At+`NGS2s~Z=T-G@yGywn!N-@;{
new file mode 100644 index 0000000000000000000000000000000000000000..3f04acd50d303235149c6a2822003ed94f8a51a7 GIT binary patch literal 1761 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 Di}Ylk
new file mode 100644 index 0000000000000000000000000000000000000000..5c97a5d4daffa1afee77b107b18e04c27cbdc49b GIT binary patch literal 1677 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 X<(k9cQX-E500000NkvXXu0mjf(W4)q
new file mode 100644 index 0000000000000000000000000000000000000000..13532c21c13455285573a8fb062f7b9cd6cd172b GIT binary patch literal 2997 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
new file mode 100644 index 0000000000000000000000000000000000000000..6e01e7aec57e36b910270ff2cf3f634fdfb2e6dd GIT binary patch literal 3258 zc$@*c3`O&aP)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU;TuDShRCwC#S!-}q<r#j?IeX7uvzz;E z10mcofwq!XArvoYMWE18TRSEFp&i?f(9upior>7$k4|T5wXLJhC}16RoFdUyt5hL` z3L<EhOSlEdhJ;PB$=>gKcF*bieY@de#Ztr>nc<s!bI$HL`<>@`-{-x2CxWV~xSEHE zt9)D|aE-t<0$2GEuGB(JtDbZ#B_*p>bIC%xQPXa9*<q`(Bkc<y7D{3yk_ro%j7K^% z^t#SF)Y*IN8SfP#kQ)DJjaIAiXl&PYT_*5$xxQ|l&1r3)-&~Gq6=v9tT39U_l-jij zhGj%!IezcaktjasIS!wv7sAkJr!JCN`+11uBKzIK;oYx=EY=dcsl)`E!`eyTzfQB0 z2!%iE$1|tiZ%^E^c%5RkuDNcK3oGVSUU1!R)531m@N@ro7Rgi|prR?HlQ@3#6goF= zLuPOk8d+F>yl>N^mkO8;%d?s6vP3-Dl1!u^9O!;^yCjM2N?w7a5#g$Eq15GI;2D|q zM8x|k;9C-H^ETw`>RV>kJF#?j<$npY)T)JpNU-y<Ko+qCc|lRg<q3#1M+SV@_~ffl zWf_v7^%x}cBJxJ~BEVPE;lX$;(GnaBg1|!*MTnBrr7@Ze9<!yS-BxOYoFPjQt3mIO z-R7{Zw%RPK>BoO85(!U$&(=A&i^$lOkRLO?T7#iznt%!yM3vSmLdh1+hm#qEnT+yz zh=~M*L=1u`pmB0FeEtyhc1ufj>#XhM`wK`Efv?M?Gwwm}8N?znkg*wX@+O!^cZdXd z)2MG0M-Ci?Z*Z6|T<5NZUavzgmuKs&q1i)=wKLgNEos@1%ctyWU<_q)452e4@cG7& z&1Yb-0&y~epjD7T4#89wp>!63cozOh8iG!RvCN1-IELXtKbKTG7=^8|8jd*)Ew1aQ zY%c<Dq1i*H8wiv8z`jFZmd}#`@}v}gRQP!px7Ua7Yzi^iD&*okfi_#ssBNfWF>!$_ z-|9Z?d0{|l`S{t_V4c>8>9@5(8Hpez1G5)QgWja$24M37kEjz<<@0#=K|~Ip#K^G$ zjQYl5a9A+o``?1bsKZT~c-IeCPH)M{Is1`A#}OP4ajQ#AGNQy~E|CXBNes_he6NE? znJmklbaA!9nJEYb!WbvU)wPwFGJP`Stjslc`-1wGl9O@#A-EWp`U;3T(zrzjr`d!I zStOgvK%j?#k>CUb&f{#ytEf<ER?eG(IIW*Kb{ftZjc_zKKx;AL-dPshHnpyuz+><3 z9wdue=R+;n0J*{mt;u2(oPa2ZPZ0Rk3_Np@Qaldy4{;(hW;G+7&cN=pW8q{ou(S!! z><f{lMQB_$2zo8Ti8QkcC&0eHzzbl&*+Jn1R5Fxf{!C19S3yVQ^91<5Rx1{`O^A}b zKHB2}>7Hwyfwoh8@}Q+P*^wDE9Extbppfl)^Z6cEd1;G@7Ic+45sSr<B2a<xAP?+v z%1+sA7ERM8aTj)-jN++Xeu!EPB$}dD;tv!hTJkJ`a|(h|@WkQw_CTT!jcs$G=5ho+ zj|Z+V!@@~s4($D|JzV3}HI=BSDMzW(0p^i0e*gh8CJSU*$FpGBeXVCbzy>jXf+Bqb z_W)VSNhHcEoS5A@gI^B?!xTs%^!6OVjO(VMeX<oNhNJlV!Lf7THPTt@3uk2nczcc^ zMh|z^lp!+UMJ}0y91EkSbvBmHbe#pik7P4xiW~KfwfuL?cpvZCk8uLeyvwZ5vk)of zQ(K9xul%W><l|P(lak(`M>EC2#G>P)0YoBEOm1%EpMU<c2M33u5Hw6aQW3mZ0MGvf z_zs^yp#L<<C(l!<nwKfyjktYzJ09<t&(~qOy@b5aMkEx)A<tn7;4lX)OayU(g!h)a ze%d&JSvsG<ckWm`K!>{((y2lZQ}QaP>fy|3AI)JnsJ}4~A$C1W7Bdlu*>yI&xw{Xk zWD5CA2Kg+_bQ-zhlxZrtEW!gsAWP>oRl3Jw)Zm3jRzlAb0S#U87!F3@8yevWq@k%E zREu~@k5FtBt=;kB=C_Ytw3&N-!|%6~$l96CYZ|IiRZ{_1xszLn$;d_v#-a(bQUvbF z^)Qwg(S2|Tzj$uPS?jalo$$a!6r||>k=|a?yv)6@`PrZ0>+_m<TnNHB7>X(&Ela#| z2mE6g_MSpA8sgTc(Y37O;YH`;)qIiw0qrmt^*u7>;l3j$ar96h<z5M8M54N`iqfYA z2BU#Ao5iU<FQ(3#f(5f`am(x~{A1U#b1C!_1TwKGvhfJ70}tJQC)(yt0c&5<<RR9F zrE^9kvO1))B6Lz3W|Im-xehv%qrWeSbSfQAr7|6t)K0(hm)|TG1z`)(hP|SJ^lC<l z&52|z1g)f^rpgLY$xx7mK&=Q>?iwC1k3PE<Q|ikwwV?{l?rK=*8XG-*J`4?y;k~Up zU^N@?*u&rB0m-D|tgMBiuSS-48ae326f&|(cE}?zI)c!!m$G3L;Xq`?T|fSH=Oyn4 zUjFlAt0|prV0zc;jWAhDVJ|01)i=Rxb5H}8N6dc;gC}~?L;=mJx2hBa-&{db((%<* z%4jT*b8?bmBt~E4xYR;H>T8Tuuvbok%+e{%G<B-O-V+G=&yZ{aNR!73`Csg~=O>SB z{4|`>#RzPEYrE&pn{KdE*_kg$8d#l`q<1UzM>1!vH(6jQtwvdG6QZFYbQ*={>m0A< zEbU7?cv*E%#mA6Ngb1X}Wy6eOt(pUKX%!|CMv|Jmpx?)9NH$GgNU<4bid%c{gX^EZ z7*6T4`tQ!IJKtG)^Nj<!Y-V|6e1w4d`S(_51;vGy*9(nS539q0RAiWgXAPj7p-dy_ z2yljCB}JAD^A<%ZPF9W0Wz?e3y&1}KvP_dQ*tqXBe5Vd09tj{G8e;<K=y>S2Pk$Ch z>3?k^-uTx}kDSv+rp=nQq`ID}uto!|PG6Wrf>qgc$V=%m!NId;Fh^RJ(=6?YWc?7Y ztOf97ZB^yO6_wfq$;iLwS|-bL57EbDPC_uF`{M%-{pxpDWKUdOaicq(>FZxe{mYU? zZD?qo36t3hXGJwkQk=9ME=Z$T{8(yKi=8JUcz$CiiiKW@rA4E|4Z+|-EF8q?zC##1 zbsTTLvjg29_ClxCHV*p-y;p2gUt+4*l2^0Kjnuf^d_yaK)Ug~j_0=4lk}GtvDz|jO z!UX~-5-7d`5ejXFSR}yPV!ahddi(I#mpbw8&X15HNoh6W##lVqaVfZ@OWyrM+(Qpu zvvO%WR@|`w1|mXvnLsPNOJrGuZ!{R0^Nz|{`4qIz$Q9dRBw|UDScFom9*$Bg_Ii#X zo=C!E(5*<O65%UKAg^S@<*qWJb-KIVN*j+5m3-D6hC^{A5?QW)4fR6>@P&=hMBwI& znMW<2v)_!21kr!8AEP5<7#a3c3&Jcf;Yi=<^`XdE=NI-~$Y^kEFDWs$fBV)p%%3}z z`lAZ!S!Usb_jjV_$Z@P%(nkG~t{4aBJ&2yvLsk8~?tQpt)e5Q|Q*mf-cVVa3wGTV? z^ioF3bj9L<MPKNfIjWW`63LY3r8l}UaAphw6{gxr%_yrV$KIY^JooCmh{h6>8gs=d z^W)*;UcC199*j_H?5e1O*<yi-T9U2*-jBDtJ?uVDh0D6)3xBnkrAD6gzKDuXXM#5E zB9*MXoW|Vizkyr7`8CpY1RozbRw!x&o*e}W-haNki&_f_t5)2KIbUg`wj@YBkP*ZF zAW19NSypOZbi&&o{(tdY_N&Ehe|u^TwbTz%qvy8RU6|drgyJHIczBGqo|W+Ie1j@# zn%`U7G!x}@)2N^Ep|Y+CnRo!bd$;jm_6NdYqgK<p^1feQ)*Cv_<q|MkN;Xo!{(xy+ zkrUY8y%{!V6@hJ`N?nDr>Phe(JHYR)n>-V)s(PftLl`=`8wskkCA61dqeiRoPzP+k zTpX88K%>>T$@*(2KGT-4T~0@qQRCObK3g0v%1k*P%nUpyO-*1tIOH*y3|(aX2wn41 zYwo5^3wveg`BJ>@CQ!?1hDL|_)fb;wr*3)vag~j9GSNTKyR-dE|NjB1%q)j5Vkwl> z21AL3ika;3pWNBnF!RQ)FFk=G3D3x2|9V!$67d*zZQHuGe)f_uuC{Ua-QV3pbIlj} sADV0b=)Oka8i8vBt`Yb=<39on0FnHhOv@)XWdHyG07*qoM6N<$f(Ic#qW}N^
new file mode 100644 index 0000000000000000000000000000000000000000..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 + pOMGYPMCj6gTU+XzePdBRA6fxMixAYz6xmFwWDDj+9+CxqjDTZp41w9XTm/J + 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 + nEzLJzdlAAAAAElFTkSuQmCC +
new file mode 100644 index 0000000000000000000000000000000000000000..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 0000000000000000000000000000000000000000..91377a312090ce5032e4ceff60f173abc5a0da64 GIT binary patch literal 19844 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
new file mode 100644 index 0000000000000000000000000000000000000000..a3017f59ecf02808ee8793f118d02bd04b2bae8a GIT binary patch literal 15088 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 NvXV*?)j;DP{|Bk8nm7Oe
new file mode 100644 index 0000000000000000000000000000000000000000..32c8af51d275b35e8300171786822fee820bb0e3 GIT binary patch literal 3231 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 RT;Biy002ovPDHLkV1gm){&N5T
new file mode 100644 index 0000000000000000000000000000000000000000..25a0830eac7003d6dec6992b18b9f17a0f27d723 GIT binary patch literal 19766 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≀!gYAhb%gS<gJpab`W{hJ(Yb(J` zQUiSDx=f+Eq&kuoe$%V!`dBR$-SEV3#6XLizYXvlLtZzz0SfSjW<SwpmD%XI+fAat zXcC6-TYH-8uc+i}ISo`SpM%UI^~bS3&>?P1FG86@cxW?z&=nAtDkHfj;6Or_Nv&AQ zAIg;I$vVmyNy{-Kte4;nYMwLY_4qDa)eM}WP({`O#Rpwxc1ImR7rSdrx>{?kM$eVX zeevQ@b-&{dT3$I&7HQ|{F<42veeqKYOPk{2c5$b7J56B~2rTmF`}^^r+88C;HyZlw zlWoSP)<DvcW~A`T&5efC1;HcnzH{yNe+vU3eq`!2TW%#m>Ec`%OwzEN!`h`7q2%V< z`aMIqEH|(`XE(*~X%k{ff_ZI^TElf(tk9=cih_up$wqv=vsQ2-TWz~)Ler&FPiQB* z06XOV98fsjWO(pp%Ht(q+1e79&Iu7&+m}?6?V;;?SkU1Sq^m`|9J>g-RYVzw!c2vJ z^i8WFV^q|N)qN!y<72x$o<st~qCrGM=W?bJIOm$UyT4>}HK3*trY(;vtA_(kp|QjZ z6~unRURRjnd_(z-9PB!x*=0Fw+t?Q?OhjVhg;PIJxSK+sik?}UB^Ue5Y(0kddzU+H z$CWnw9ie&diuTFqH1^unbnN4NX9DU@b}i^wA0uh7*j)3Z@xwDmrby~m@4H3VRJKGD zmf0a1wQX7PKo|_I>qxI@wyj0airo1sr|=SKng(P;u1wI$fa_BIszQkvhc$GS<Gk~p z<vuHak>?)sitske0odq=Zs�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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 0000000000000000000000000000000000000000..3cc1444f645b1a36a885816ffd6caa799482ea7a GIT binary patch literal 25842 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 N002ovPDHLkV1j~^$B_U4
new file mode 100644 index 0000000000000000000000000000000000000000..ac4a6968bf2746ad89a82d85df3a8679b5530cca GIT binary patch literal 2670 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
new file mode 100644 index 0000000000000000000000000000000000000000..c5bf9c25c09d1e89bbb75e774dcb797330a6249f GIT binary patch literal 1915 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 Bm&yPD
new file mode 100644 index 0000000000000000000000000000000000000000..1bf715b96a29fd0e7297e699cd2bed76e9348ace GIT binary patch literal 4409 zc$@(_5ytL`P)<h;3K|Lk000e1NJLTq001Ze001Zm1^@s6jQ+T700001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXc7 z009KI?BbaK01&xJL_t(o!=0FUkY!bU$3MSw?!9m8e!X{3chB_9^b7;T3=kv%8H4~) zFp5ax7L$O9nm|m-h01DGDlw@TLnTH_O)O0`E+LB`i6X(#AraI8ff^hbVD_Hrp5Es5 z_WCV%JLi`_-hhcosmZB2RcEPt&gcGqXZfA4@S~)SZw7UiGym+q*SLESdatHu=xPS4 zJByX#WE2IX#z>cehVy=|(N0gerTTL$%smRvJ_Jj(7e60=lSPbU<{y6G)bjle$!D%d z1ipBv$j|-R1F-4M!t_5V05?7ek9}kh-n^cXp=-D7-g?QlU0cnLotrst`#6*1{dAR! zNSf2AH+cTk0tXLGap>t29D4l7f$aFgf6#2)qk8Xtk?ziz8{Z_%{FB13Q2T?Y7<}L3 z|2yEmTQ;-v@)5?~`<)j%Z@J+X{$=mKbSeX{y?`jV({}Z|ZgkfL{a3tp4_DoI85fKe znE<Ll5wL&*^jyw>!@ws#|4mMObssZ_=a%Q6S-6KJ`xyQ!2Y;CJUIhHh{*d=9X8@=k zl}Fxii(YfjA>d{h32!B`zgr!dxNytmFXg&lyp~;;3{W+&!Jq>mRy~Sztb*bd@dya& z3c`U}EYCgs4K}S#@$8WrfBVH_$Md6S-v?j$+zSkk48q8-PO{_uCtd`!FBHDo_5j@T zvXR&E+*fY>iNASfAN-YNeC94wuz%P;wsm~d?w{o1YcBD_+lHm-3}Y2^(53h+C&Qp9 zP8Fw+DdeiOou{2C##otgT};ia`JaDTx4h++k^XO=Nv}IE@4N1yYu1-Pa-@0m(=BK| zvci2IzMKy|cm@Ci@TcVt=f%)lt=Qk59G2T|e(NvoqVGE&M(l6e?x9L)a7P{%do(sB zbGFu|@YvUM@Plt9_|%=W8mlCMC2^j_D~VT9uf)!isM2zt<#wXogH>h+E;8@@N6|EG zxX16=*!#10UU}nZ&hET#|J8CUz^8zR-t`PqpL<yc@UF69aHL=WZtV@<I6i1EFE&@l zUN!gRzhm0JPNBqxp+W5~8XGIv(?|8Hzki3`@Sz*2?E5>WH(kzp-w5r*(ee;`Xgj6t zltf`Ub1Wt~bM=JNGb`F#5FOpVgFm>t&ph?$aenKa!p7Tgj2>|pfA;7*Hh)s}3*lR7 z(X4ege2_VK`-waJugC`(8L(RmjRuXUVqR`*L+`&5+`uTiMplvPSy}X_wePXLa{j4r zA>HWy8-IuPb+<8=AwF}2)~G?yj(cS#aU5H2X*0=5Qb&C?lewunThmi|>n#&Jd3cfS zJ>Swhe(7R9-MC)%f8ncdFWmLVE#O_d-t#=qePSm;XjMc$s6Z5D`G)%GI(DMqdv+Gh zyQ4GY?HTpC5u0{tYgL(EUO;<bYU{;3x99C_37`?@I1^A3B@iK3$OIPRoLVEJ)y!zr zQ<8?GP^j=92P<^P&+$jU)~ng_Bpf-&>wbQle*XFM<f(&4-kCo6Qx8X%?Ynny`z8~t zw)BO4lGWyOH@T}q^(8&pUiP{&6XTqUw_cGIS`A1`WvzB~d}##M%HT|(Eem}DHdb=) z$P_IW0>+2CSgI#v8AKJUz1vD8L4i;I^Ax*AzRexC_tQQ$LHEolx&94BeeAv=nV&az zoPIA44qd;uX@BjqA?}@P0r2i?yKmUMt8}@pq}rHniF)arL>^F!h#@KoL3atJrs+NT zG(8qZW)5PG9cFRO<Ep*nK|tFn8Q=qff+grGAmxZWh=}@nSeb9}?8Aq7&5te8zq88v zl%qRdqO`4BqOy!emBB~<;+~mf!E4`AwLE#&WuLwHf@FUA<*Ucnsh@7)5paS>@Bmhk z&|s{fHXt)0o4)lBqlX_N2q7rK$A_-w#JlchXzNC@^)}8!>Xb~CI9J+<VRdeuwb>PV z#(FvV{Q2Df;FH`wIZLp?5<lI;?ya$li>_3wg)adf49xtx2WZdKUZ1X{=f{hQ_a1{7 zeD1}mpon^}7*Vh)nmd9h((sZoin~YY$yTH=*iX9nQk`CKWW^NMN+oxSQ=?g~BpIYR zviRNO)Sh`pD;Hmc4v+K1v4e8^iDintxw?%bI6Q%=V_6>q2ukl?)U}UIZqT#IE$K>5 z)^Z3&JXW3ec<p!?QT(}z&ocUVY-YnN-$LI@cQAish7aAp%D#LjTWmyJkI8b#9W>_7 z(pqWaOWnArL>v_H#Uica$5@|l@NChrG!rwBXGGN|QY_-u+PG%B4<G;tQ@JGZa#_;y zs53%f)p<}ARS_`fvIr&!)Rsefh68NvFrWMDH9mG?M9-8jV*6z~z(lOAB{+|IwXCnD ztR9~t&m7^FZR(?lEcYY}^ISYs#kRY2>QsyVz~fDmsM2NfR!V)Uwfl=NAH6LAP+^Z( z$P-X8qDE95C<1{XMlhizsun2pmMQm^+0dJ@f9e?TefCn!C0BF)d4mK7R#p=fB|bAp z){4<WMCKgrr5f6f@p(qNyux}t<xN*6T(`ZCyip?09eJ&Z4m&X}^6f>x!z1qwW`BQM z(Zep6D=t>N2#TNr7(qfIC|H872q_lHO@tZ?rHJ8;Wd_{@$zVT?<uz16Oy|dvMvLZ& z6SzFbIY*u(xb-^fJ*XvF_pB{V^V(l+6VFyi)-q_-A*-W`Os|)UE3J4-(0XMx?b_d% zcTJD;9#v5gupohvuwwDX=*g1_OSKlZ9m~_b7chI?1$yatn~IxbWpP4GkYLQYXvP?P zSd>hJbahqLTGTnztEls+^NLqiR_l<}q}bae$uiY~!T5%@nhiOyP@&Ic5^US^(=31K zZpl_N)Ceyg+eWY@gG7dthua)|u1)AY6$|%wU&hm|oB6k+({v4&Fr^jZ&JqRAjUiwL zHV_0wvgI1CxdJMvy3S_HGkg}~n<*yC@Xa-BZy9{d+*Hc(WP~d>G+ROY3;$kd&$UL= zwG8hCuPUghh!7O4t~VWLXA`Prp;|JG_IbT(hw}X3D7p5NN{nqa)rlpQh{T6Dr-;wB z97PoSH;}Kd<Ki|LtDvY;NOH2IfjCj$>LzP05mZ~S-j);7hV7Rs+iWr$oO$4kFxLvb zC}}EqlrRFUfEBXXQx27486vB6_X_VA{00lj7Vb~3qHYTW#^J?MkemrS%W$F1imPyJ zshg%|6jo|zo`G?wSMnUlQo2kN$y?-ES7+_!ZQ2VdJ15~ndxX>9SbjDbedGD@=|6n< zSuNR{(geKm8dL%hP=zQI`nr{Zfl{Q{C}g6r%10}o<cgI;+#g>-J+H9Q*0{d#6xa3~ zXMCbUyk#d3uI}VRdwV&P8pv`)J<da`;rWU4YrO5s8Z0)DQj;La$d)sb)lA32SZXKR z%pOU<9dy0wYyOGz&6ll_Uv#+{%bZfEA~qCt4k>m8^z~Z}(v0qkV1ryvord8}xxRaN zA8$$@V>K_ykgU;bo0@8fo;GaIvvS9!bDZ3Ix&HZ?al(87o5zxP3#+l-bkPj2++Cwl z6Ddu2d@Iqck)y3l>noYe9rx37)B5cIpt0r;mJ06q+%wiry)VVinu5V)o}g^$8ZHsl zGYS!eCCkiolVc|x+jf>19!%I2w8)&H)+`dX8cfv;_dL?g%>CUQDOw`m#%D2E+`=Ux zNS!MtYOtJ=X8}GHvU)<co<o{bpO0zQ-QM3k;SU9Sw-)5ulS%!XUH)-r<oaey30HD0 zdZBA5RF^7IrHF)zOA>4p==g*%wZF}yd)rKI38;39TJd=2_-1pA&or*!pzKuQK`4hr z+9pp@e3mJz!b>h#<kEpvl68kEp|0-8>lt}7N8;4PwXD%NYwrbo5J+x;+<D#SoW3(l zwY0Y4U6N)dEL)1kkQty@Mhg+%<&^sjFMV0S*B=+|Jz6HJ6j%uRIUz$lZzgDzw<ASM z=v%mEO4_bNRt7f!L5;Wl_$)&OSkDcbrzA^|)-xna$yPIJivzhXPqg6xfph8rcIN); zPl<idDnGNf?tGkKZ86i~g6*7JB4{bZh9NEW42;6nuZY<D=vMa5Ptwl2An1p%h%`?l zODp8<HGJHF###EuHWKwtvS;gI-u#j^lFArKZ5omoRfB6}6g88FpQ*Ck-tBLC<3;fF zfzG@5tD6IJ<Eh+#ZF6vQBb9q=u?9)*wNkNczpx_3E~6$A!m=SO8Zm*vShTCCtmgrT zR;%(<t;)xb?9_#|VOV?={BeO0@H)}wxa((PHWj>dl@oSdJ*q41koMEZ35r&{gJQF- zj~wseOGhq~+iu!;;Mxzo{U(uXW&?mYb{^mrr}8g-c`UfEY<WXF6Ioi$w0t^Y%eE4# ziiihQf~XTIuQ@1&88086XHVZ87nINP$ZVA}{p<KNqqmZA(MHFf$&?@KYvJM?Ggx7L zAt9b#z-5-8uZo^t)T3t%_b**2ul|K1*IvK=fXFqo{;o|T4~$!0b;hxG8{BXl9@t=Z zC62EzXR@Iddn}^cCQFQMiZBH*kzgZ35E*O$Vg)aT$a;Fh6f`4NK~*S*o>IXRw>>LO zA*ckD%1Yi!Nt{yNF-E%BB0X`Ivm<>{x^$3BH#eV{exUj4i4UwT&fLAHb9;Vy%<`Jq z?+I5Q?Kig#AfH)Dl%-UCDHJogxu9bkBTUo@!GeMi1O^EOYXwkL6f2%U9D<Uo5+@dy zcnU=&Dkz2wBBi`z5K}2gGCi-AKBPKP0`j@Dv+>PizmY!C@tAy1oB7uv%Xk1kKGy+# zUyuF0Eh6t<O+Blrx=Mf@9}O8Di?rBfF#*^@$C@I-xtCSv`oVRsE*0`bK%r3f6v|3i zhG?)1)w1}w?z^M5v89k^&Uf$L*Z$@A+?O8!ICN))T_0@zclk|kD8pnK`FIVW_>Qvq zlglD=XRff8c{SeCSGA09EJ)8_pixn<kzhj+W3;0?p@?cH3<kuYL8L@QB`6v}EJUJW zV#FnqnSy_MN&ofEe@cG;$f_O!&_@TEdCIftj^+QU4+4xB!UfL&F!Y*|{e@SS&Fy_c zZ$0<KsizR3gM*<Aj)Yq64TwsJ4V557O#nflSgRdq5$&j5g7*;Glt!Y|<FXVe@o%S- zzyIxTtb71CJ64tYY+c*`mBs#VfK5d$R26!T<a+8*<`+govvF%t`nwAT??oExPFw3v zve==SqPe2E2j|c{M^i_hdXjc0=Xr*+i9FjFkS7+-leAgk!0Gg{-`c<Q3DEUQDEV?* z*Uqh#9}L)0_;3cI2&zk-`XjMFlcL4(f{cuHTU#wz!7FLv(A0}-J4xD(yzL?J;$tUi zs^Yv#P*AD#AX+T4=m+t6i^osRJp8@`%bx<BiHy`^r;FAQtNsuP`1|_G0z(R;zzDFZ zN4W5fgZ7H62BK}_MN_RrLM{-fqZleS1QRNzV34ALk|8fx8pgKg8(M$-Wb62s4#oQq z)%gx^%D}S1f<oi_t@pzKUq}V%D7-@o8-M{|uuGVH{l?PnOZ$TJ>#;XJlx$<gcJ~L` zyV!KeF()%pv~j8$&#wFBgR|+(^Nn;0I0Y;KOIBC}R-KZZQ;hll0KNzcbOF8RB<b?G z`i66DYLU_<UAC{@%>6NC9;gE`&;-`#SZV!SdEG$U|EL=E{~-wwR1AggK%#kvr4x7; zvRw5AH<b&<lsZRYrb?E3P2ybBtYa<zqfYjpTLA{4ySJj|00000NkvXXu0mjfd?KB$
new file mode 100644 index 0000000000000000000000000000000000000000..c8b62e0c1db7923d002e22f89622d2269dde5c57 GIT binary patch literal 5625 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 TsoKwn00000NkvXXu0mjfFXhKa
new file mode 100644 index 0000000000000000000000000000000000000000..6156f2d8c1f11bce42c594dcc28b143c30bd22b2 GIT binary patch literal 11160 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