From cfd263a72bcac442b4f7404f1381281f7048af3c Mon Sep 17 00:00:00 2001 From: "kaie@kuix.de" Date: Tue, 25 Mar 2008 12:34:48 -0700 Subject: [PATCH 001/129] bug 420187, hang in nsNSSHttpRequestSession::internal_send_receive_attempt r=rrelyea, pending more comments blocking1.9=shaver approval1.9b5=beltzner --- .../boot/src/nsSecureBrowserUIImpl.cpp | 56 ++++++++-- .../manager/boot/src/nsSecureBrowserUIImpl.h | 5 +- security/manager/ssl/src/nsNSSCallbacks.cpp | 100 +++++++++++++----- security/manager/ssl/src/nsNSSComponent.cpp | 13 +++ security/manager/ssl/src/nsNSSIOLayer.cpp | 77 +++++++++++--- security/manager/ssl/src/nsNSSIOLayer.h | 7 +- security/manager/ssl/src/nsSSLThread.cpp | 22 +--- security/manager/ssl/src/nsSSLThread.h | 4 +- 8 files changed, 209 insertions(+), 75 deletions(-) diff --git a/security/manager/boot/src/nsSecureBrowserUIImpl.cpp b/security/manager/boot/src/nsSecureBrowserUIImpl.cpp index 98049c5c4681..971b81985fc9 100644 --- a/security/manager/boot/src/nsSecureBrowserUIImpl.cpp +++ b/security/manager/boot/src/nsSecureBrowserUIImpl.cpp @@ -162,6 +162,7 @@ nsSecureBrowserUIImpl::nsSecureBrowserUIImpl() mMonitor = PR_NewMonitor(); mOnStateLocationChangeReentranceDetection = 0; mTransferringRequests.ops = nsnull; + mInconsistency = PR_FALSE; mNewToplevelSecurityState = STATE_IS_INSECURE; mNewToplevelIsEV = PR_FALSE; mNewToplevelSecurityStateKnown = PR_TRUE; @@ -596,10 +597,6 @@ nsSecureBrowserUIImpl::OnStateChange(nsIWebProgress* aWebProgress, PRUint32 aProgressStateFlags, nsresult aStatus) { - nsAutoAtomic atomic(mOnStateLocationChangeReentranceDetection); - NS_ASSERTION(mOnStateLocationChangeReentranceDetection == 1, - "unexpected parallel nsIWebProgress OnStateChange and/or OnLocationChange notification"); - /* All discussion, unless otherwise mentioned, only refers to http, https, file or wyciwig requests. @@ -690,19 +687,43 @@ nsSecureBrowserUIImpl::OnStateChange(nsIWebProgress* aWebProgress, regardless of whether the load flags indicate a top level document. */ - nsCOMPtr windowForProgress; - aWebProgress->GetDOMWindow(getter_AddRefs(windowForProgress)); + nsAutoAtomic atomic(mOnStateLocationChangeReentranceDetection); + if (mOnStateLocationChangeReentranceDetection > 1) + { + nsAutoMonitor lock(mMonitor); + mInconsistency = PR_TRUE; + // we ignore all events until the reentrance is gone + return NS_ERROR_FAILURE; + } + PRBool mustResetAfterInconsistency = PR_FALSE; + + nsCOMPtr windowForProgress; nsCOMPtr window; PRBool isViewSource; { nsAutoMonitor lock(mMonitor); + + if (mInconsistency) { + mInconsistency = PR_FALSE; + mustResetAfterInconsistency = PR_TRUE; + } + window = do_QueryReferent(mWindow); NS_ASSERTION(window, "Window has gone away?!"); isViewSource = mIsViewSource; } + if (mustResetAfterInconsistency) { + mNewToplevelSecurityState = STATE_IS_INSECURE; + mNewToplevelIsEV = PR_FALSE; + mNewToplevelSecurityStateKnown = PR_TRUE; + mSSLStatus = nsnull; + ResetStateTracking(); + } + + aWebProgress->GetDOMWindow(getter_AddRefs(windowForProgress)); const PRBool isToplevelProgress = (windowForProgress.get() == window.get()); #ifdef PR_LOGGING @@ -1251,8 +1272,8 @@ void nsSecureBrowserUIImpl::UpdateMyFlags(PRBool &showWarning, lockIconState &wa mNotifiedToplevelIsEV = mNewToplevelIsEV; } -nsresult nsSecureBrowserUIImpl::TellTheWorld(PRBool &showWarning, - lockIconState &warnSecurityState, +nsresult nsSecureBrowserUIImpl::TellTheWorld(PRBool showWarning, + lockIconState warnSecurityState, nsIRequest* aRequest) { nsCOMPtr temp_ToplevelEventSink; @@ -1319,8 +1340,20 @@ nsSecureBrowserUIImpl::OnLocationChange(nsIWebProgress* aWebProgress, nsIURI* aLocation) { nsAutoAtomic atomic(mOnStateLocationChangeReentranceDetection); - NS_ASSERTION(mOnStateLocationChangeReentranceDetection == 1, - "unexpected parallel nsIWebProgress OnStateChange and/or OnLocationChange notification"); + if (mOnStateLocationChangeReentranceDetection > 1) + { + nsAutoMonitor lock(mMonitor); + mInconsistency = PR_TRUE; + // We ignore all events until the reentrance is gone + // and has been reset by ::OnStateChange. + return NS_ERROR_FAILURE; + } + + // We could test for mInconsistency right here and exit, + // but let's avoid another lock to mMonitor. + // We'll do the preparation work based on the parameters, + // and once we are ready to lock the monitor, we'll do + // the inconsistency check. PRBool updateIsViewSource = PR_FALSE; PRBool temp_IsViewSource = PR_FALSE; @@ -1344,6 +1377,9 @@ nsSecureBrowserUIImpl::OnLocationChange(nsIWebProgress* aWebProgress, { nsAutoMonitor lock(mMonitor); + if (mInconsistency) { + return NS_ERROR_FAILURE; + } if (updateIsViewSource) { mIsViewSource = temp_IsViewSource; } diff --git a/security/manager/boot/src/nsSecureBrowserUIImpl.h b/security/manager/boot/src/nsSecureBrowserUIImpl.h index 7e7baf510b25..93779619b729 100644 --- a/security/manager/boot/src/nsSecureBrowserUIImpl.h +++ b/security/manager/boot/src/nsSecureBrowserUIImpl.h @@ -114,6 +114,7 @@ protected: void ResetStateTracking(); PRUint32 mNewToplevelSecurityState; + PRPackedBool mInconsistency; PRPackedBool mNewToplevelIsEV; PRPackedBool mNewToplevelSecurityStateKnown; PRPackedBool mIsViewSource; @@ -129,8 +130,8 @@ protected: static nsresult MapInternalToExternalState(PRUint32* aState, lockIconState lock, PRBool ev); nsresult UpdateSecurityState(nsIRequest* aRequest); void UpdateMyFlags(PRBool &showWarning, lockIconState &warnSecurityState); - nsresult TellTheWorld(PRBool &showWarning, - lockIconState &warnSecurityState, + nsresult TellTheWorld(PRBool showWarning, + lockIconState warnSecurityState, nsIRequest* aRequest); nsresult EvaluateAndUpdateSecurityState(nsIRequest *aRequest); diff --git a/security/manager/ssl/src/nsNSSCallbacks.cpp b/security/manager/ssl/src/nsNSSCallbacks.cpp index 30db376147f2..a94e9bfae458 100644 --- a/security/manager/ssl/src/nsNSSCallbacks.cpp +++ b/security/manager/ssl/src/nsNSSCallbacks.cpp @@ -80,20 +80,35 @@ NSSCleanupAutoPtrClass(CERTCertificate, CERT_DestroyCertificate) extern PRLogModuleInfo* gPIPNSSLog; #endif -struct nsHTTPDownloadEvent : nsRunnable { +class nsHTTPDownloadEvent : public nsRunnable { +public: nsHTTPDownloadEvent(); ~nsHTTPDownloadEvent(); NS_IMETHOD Run(); - + void Cancel(); + nsNSSHttpRequestSession *mRequestSession; // no ownership nsCOMPtr mListener; PRBool mResponsibleForDoneSignal; + +protected: + PRLock *mLock; + + // no nsCOMPtr. When I use it, I get assertions about + // loadgroup not being thread safe. + // So, let's use a raw pointer and ensure we only create and destroy + // it on the network thread ourselves. + nsILoadGroup *mLoadGroup; + PRThread *mLoadGroupOwnerThread; }; nsHTTPDownloadEvent::nsHTTPDownloadEvent() :mResponsibleForDoneSignal(PR_TRUE) +,mLock(nsnull) +,mLoadGroup(nsnull) +,mLoadGroupOwnerThread(nsnull) { } @@ -101,11 +116,17 @@ nsHTTPDownloadEvent::~nsHTTPDownloadEvent() { if (mResponsibleForDoneSignal && mListener) mListener->send_done_signal(); + if (mLock) + PR_DestroyLock(mLock); } NS_IMETHODIMP nsHTTPDownloadEvent::Run() { + mLock = PR_NewLock(); + if (!mLock) + return NS_ERROR_OUT_OF_MEMORY; + if (!mListener) return NS_OK; @@ -120,9 +141,16 @@ nsHTTPDownloadEvent::Run() // Create a loadgroup for this new channel. This way if the channel // is redirected, we'll have a way to cancel the resulting channel. - nsCOMPtr loadGroup = - do_CreateInstance(NS_LOADGROUP_CONTRACTID); - chan->SetLoadGroup(loadGroup); + nsCOMPtr lg; + { + nsAutoLock locker(mLock); + lg = do_CreateInstance(NS_LOADGROUP_CONTRACTID); + mLoadGroup = lg.get(); + NS_ADDREF(mLoadGroup); + mLoadGroupOwnerThread = PR_GetCurrentThread(); + } + chan->SetLoadGroup(lg); + lg = nsnull; if (mRequestSession->mHasPostData) { @@ -148,8 +176,6 @@ nsHTTPDownloadEvent::Run() rv = hchan->SetRequestMethod(mRequestSession->mRequestMethod); NS_ENSURE_SUCCESS(rv, rv); - nsSSLThread::rememberPendingHTTPRequest(loadGroup); - mResponsibleForDoneSignal = PR_FALSE; mListener->mResponsibleForDoneSignal = PR_TRUE; @@ -162,20 +188,47 @@ nsHTTPDownloadEvent::Run() if (NS_FAILED(rv)) { mListener->mResponsibleForDoneSignal = PR_FALSE; mResponsibleForDoneSignal = PR_TRUE; - - nsSSLThread::rememberPendingHTTPRequest(nsnull); } return NS_OK; } struct nsCancelHTTPDownloadEvent : nsRunnable { + nsRefPtr mEvent; + NS_IMETHOD Run() { - nsSSLThread::cancelPendingHTTPRequest(); + mEvent->Cancel(); + mEvent = nsnull; return NS_OK; } }; +void +nsHTTPDownloadEvent::Cancel() +{ + nsILoadGroup *lg = nsnull; + + if (mLock) { + nsAutoLock locker(mLock); + + if (mLoadGroup) { + if (mLoadGroupOwnerThread != PR_GetCurrentThread()) { + NS_ASSERTION(PR_FALSE, + "attempt to access nsHTTPDownloadEvent::mLoadGroup on multiple threads"); + } + else { + lg = mLoadGroup; + mLoadGroup = nsnull; + } + } + } + + if (lg) { + lg->Cancel(NS_ERROR_ABORT); + NS_RELEASE(lg); + } +} + SECStatus nsNSSHttpServerSession::createSessionFcn(const char *host, PRUint16 portnum, SEC_HTTP_SERVER_SESSION *pSession) @@ -367,7 +420,6 @@ nsNSSHttpRequestSession::internal_send_receive_attempt(PRBool &retryable_error, } PRBool request_canceled = PR_FALSE; - PRBool aborted_wait = PR_FALSE; { nsAutoLock locker(waitLock); @@ -410,30 +462,26 @@ nsNSSHttpRequestSession::internal_send_receive_attempt(PRBool &retryable_error, if (!request_canceled) { - if ((PRIntervalTime)(PR_IntervalNow() - start_time) > mTimeoutInterval) + PRBool wantExit = nsSSLThread::exitRequested(); + PRBool timeout = + (PRIntervalTime)(PR_IntervalNow() - start_time) > mTimeoutInterval; + + if (wantExit || timeout) { request_canceled = PR_TRUE; - // but we'll to continue to wait for waitFlag - - nsCOMPtr cancelevent = new nsCancelHTTPDownloadEvent; + + nsRefPtr cancelevent = new nsCancelHTTPDownloadEvent; + cancelevent->mEvent = event; rv = NS_DispatchToMainThread(cancelevent); - if (NS_FAILED(rv)) - { + if (NS_FAILED(rv)) { NS_WARNING("cannot post cancel event"); - aborted_wait = PR_TRUE; - break; } + break; } } } } - if (aborted_wait) - { - // we couldn't cancel it, let's no longer reference it - nsSSLThread::rememberPendingHTTPRequest(nsnull); - } - if (request_canceled) return SECFailure; @@ -628,8 +676,6 @@ nsHTTPListener::OnStreamComplete(nsIStreamLoader* aLoader, void nsHTTPListener::send_done_signal() { - nsSSLThread::rememberPendingHTTPRequest(nsnull); - mResponsibleForDoneSignal = PR_FALSE; { diff --git a/security/manager/ssl/src/nsNSSComponent.cpp b/security/manager/ssl/src/nsNSSComponent.cpp index 38d4813e79f7..a48faada70e3 100644 --- a/security/manager/ssl/src/nsNSSComponent.cpp +++ b/security/manager/ssl/src/nsNSSComponent.cpp @@ -1722,6 +1722,19 @@ nsNSSComponent::Init() return rv; } + // Access our string bundles now, this prevents assertions from I/O + // - nsStandardURL not thread-safe + // - wrong thread: 'NS_IsMainThread()' in nsIOService.cpp + // when loading error strings on the SSL threads. + { + NS_NAMED_LITERAL_STRING(dummy_name, "dummy"); + nsXPIDLString result; + mPIPNSSBundle->GetStringFromName(dummy_name.get(), + getter_Copies(result)); + mNSSErrorsBundle->GetStringFromName(dummy_name.get(), + getter_Copies(result)); + } + if (!mPrefBranch) { mPrefBranch = do_GetService(NS_PREFSERVICE_CONTRACTID); NS_ASSERTION(mPrefBranch, "Unable to get pref service"); diff --git a/security/manager/ssl/src/nsNSSIOLayer.cpp b/security/manager/ssl/src/nsNSSIOLayer.cpp index 91a63a94404d..4718ba2be8b8 100644 --- a/security/manager/ssl/src/nsNSSIOLayer.cpp +++ b/security/manager/ssl/src/nsNSSIOLayer.cpp @@ -204,6 +204,7 @@ nsNSSSocketInfo::nsNSSSocketInfo() : mFd(nsnull), mBlockingState(blocking_state_unknown), mSecurityState(nsIWebProgressListener::STATE_IS_INSECURE), + mDocShellDependentStuffKnown(PR_FALSE), mExternalErrorReporting(PR_FALSE), mForSTARTTLS(PR_FALSE), mHandshakePending(PR_TRUE), @@ -319,15 +320,30 @@ nsNSSSocketInfo::SetNotificationCallbacks(nsIInterfaceRequestor* aCallbacks) return NS_OK; } + mCallbacks = aCallbacks; + mDocShellDependentStuffKnown = PR_FALSE; + + return NS_OK; +} + +NS_IMETHODIMP +nsNSSSocketInfo::EnsureDocShellDependentStuffKnown() +{ + if (mDocShellDependentStuffKnown) + return NS_OK; + + if (!mCallbacks || nsSSLThread::exitRequested()) + return NS_ERROR_FAILURE; + + mDocShellDependentStuffKnown = PR_TRUE; + nsCOMPtr proxiedCallbacks; NS_GetProxyForObject(NS_PROXY_TO_MAIN_THREAD, NS_GET_IID(nsIInterfaceRequestor), - static_cast(aCallbacks), + static_cast(mCallbacks), NS_PROXY_SYNC, getter_AddRefs(proxiedCallbacks)); - mCallbacks = proxiedCallbacks; - // Are we running within a context that wants external SSL error reporting? // We'll look at the presence of a security UI object inside docshell. // If the docshell wants the lock icon, you'll get the ssl error pages, too. @@ -339,7 +355,7 @@ nsNSSSocketInfo::SetNotificationCallbacks(nsIInterfaceRequestor* aCallbacks) nsCOMPtr docshell; - nsCOMPtr item(do_GetInterface(mCallbacks)); + nsCOMPtr item(do_GetInterface(proxiedCallbacks)); if (item) { nsCOMPtr proxiedItem; @@ -395,6 +411,8 @@ nsNSSSocketInfo::SetNotificationCallbacks(nsIInterfaceRequestor* aCallbacks) nsresult nsNSSSocketInfo::GetExternalErrorReporting(PRBool* state) { + nsresult rv = EnsureDocShellDependentStuffKnown(); + NS_ENSURE_SUCCESS(rv, rv); *state = mExternalErrorReporting; return NS_OK; } @@ -465,10 +483,17 @@ NS_IMETHODIMP nsNSSSocketInfo::GetInterface(const nsIID & uuid, void * *result) rv = ir->GetInterface(uuid, result); } else { - // Proxy of the channel callbacks should probably go here, rather - // than in the password callback code + if (nsSSLThread::exitRequested()) + return NS_ERROR_FAILURE; - rv = mCallbacks->GetInterface(uuid, result); + nsCOMPtr proxiedCallbacks; + NS_GetProxyForObject(NS_PROXY_TO_MAIN_THREAD, + NS_GET_IID(nsIInterfaceRequestor), + mCallbacks, + NS_PROXY_SYNC, + getter_AddRefs(proxiedCallbacks)); + + rv = proxiedCallbacks->GetInterface(uuid, result); } return rv; } @@ -619,6 +644,8 @@ nsresult nsNSSSocketInfo::SetFileDescPtr(PRFileDesc* aFilePtr) nsresult nsNSSSocketInfo::GetPreviousCert(nsIX509Cert** _result) { NS_ENSURE_ARG_POINTER(_result); + nsresult rv = EnsureDocShellDependentStuffKnown(); + NS_ENSURE_SUCCESS(rv, rv); *_result = mPreviousCert; NS_IF_ADDREF(*_result); @@ -1139,6 +1166,9 @@ displayAlert(nsAFlatString &formattedString, nsNSSSocketInfo *infoObject) // The interface requestor object may not be safe, so proxy the call to get // the nsIPrompt. + if (nsSSLThread::exitRequested()) + return NS_ERROR_FAILURE; + nsCOMPtr proxiedCallbacks; NS_GetProxyForObject(NS_PROXY_TO_MAIN_THREAD, NS_GET_IID(nsIInterfaceRequestor), @@ -1173,6 +1203,10 @@ nsHandleSSLError(nsNSSSocketInfo *socketInfo, PRInt32 err) return NS_OK; } + if (nsSSLThread::exitRequested()) { + return NS_ERROR_FAILURE; + } + nsresult rv; NS_DEFINE_CID(nssComponentCID, NS_NSSCOMPONENT_CID); nsCOMPtr nssComponent(do_GetService(nssComponentCID, &rv)); @@ -1187,9 +1221,16 @@ nsHandleSSLError(nsNSSSocketInfo *socketInfo, PRInt32 err) socketInfo->GetPort(&port); // Try to get a nsISSLErrorListener implementation from the socket consumer. - nsCOMPtr callbacks; - socketInfo->GetNotificationCallbacks(getter_AddRefs(callbacks)); - if (callbacks) { + nsCOMPtr cb; + socketInfo->GetNotificationCallbacks(getter_AddRefs(cb)); + if (cb) { + nsCOMPtr callbacks; + NS_GetProxyForObject(NS_PROXY_TO_MAIN_THREAD, + NS_GET_IID(nsIInterfaceRequestor), + cb, + NS_PROXY_SYNC, + getter_AddRefs(callbacks)); + nsCOMPtr sel = do_GetInterface(callbacks); if (sel) { nsISSLErrorListener *proxy_sel = nsnull; @@ -2743,6 +2784,9 @@ nsNSSBadCertHandler(void *arg, PRFileDesc *sslSocket) if (!infoObject) return SECFailure; + if (nsSSLThread::exitRequested()) + return cancel_and_failure(infoObject); + CERTCertificate *peerCert = nsnull; CERTCertificateCleaner peerCertCleaner(peerCert); peerCert = SSL_PeerCertificate(sslSocket); @@ -2911,9 +2955,16 @@ nsNSSBadCertHandler(void *arg, PRFileDesc *sslSocket) nsresult rv; // Try to get a nsIBadCertListener2 implementation from the socket consumer. - nsCOMPtr callbacks; - infoObject->GetNotificationCallbacks(getter_AddRefs(callbacks)); - if (callbacks) { + nsCOMPtr cb; + infoObject->GetNotificationCallbacks(getter_AddRefs(cb)); + if (cb) { + nsCOMPtr callbacks; + NS_GetProxyForObject(NS_PROXY_TO_MAIN_THREAD, + NS_GET_IID(nsIInterfaceRequestor), + cb, + NS_PROXY_SYNC, + getter_AddRefs(callbacks)); + nsCOMPtr bcl = do_GetInterface(callbacks); if (bcl) { nsIBadCertListener2 *proxy_bcl = nsnull; diff --git a/security/manager/ssl/src/nsNSSIOLayer.h b/security/manager/ssl/src/nsNSSIOLayer.h index 54ea1be056d9..b5fddb03a270 100644 --- a/security/manager/ssl/src/nsNSSIOLayer.h +++ b/security/manager/ssl/src/nsNSSIOLayer.h @@ -198,14 +198,15 @@ protected: nsCOMPtr mCallbacks; PRFileDesc* mFd; nsCOMPtr mCert; - nsCOMPtr mPreviousCert; + nsCOMPtr mPreviousCert; // DocShellDependent enum { blocking_state_unknown, is_nonblocking_socket, is_blocking_socket } mBlockingState; PRUint32 mSecurityState; nsString mShortDesc; nsString mErrorMessage; - PRPackedBool mExternalErrorReporting; + PRPackedBool mDocShellDependentStuffKnown; + PRPackedBool mExternalErrorReporting; // DocShellDependent PRPackedBool mForSTARTTLS; PRPackedBool mHandshakePending; PRPackedBool mCanceled; @@ -223,6 +224,8 @@ protected: nsSSLSocketThreadData *mThreadData; + nsresult EnsureDocShellDependentStuffKnown(); + private: virtual void virtualDestroyNSSReference(); void destructorSafeDestroyNSSReference(); diff --git a/security/manager/ssl/src/nsSSLThread.cpp b/security/manager/ssl/src/nsSSLThread.cpp index 1304f695f664..8c5ccc3aa890 100644 --- a/security/manager/ssl/src/nsSSLThread.cpp +++ b/security/manager/ssl/src/nsSSLThread.cpp @@ -1120,28 +1120,14 @@ void nsSSLThread::Run(void) } } -void nsSSLThread::rememberPendingHTTPRequest(nsIRequest *aRequest) +PRBool nsSSLThread::exitRequested() { if (!ssl_thread_singleton) - return; + return PR_FALSE; - nsAutoLock threadLock(ssl_thread_singleton->mMutex); + // no lock - ssl_thread_singleton->mPendingHTTPRequest = aRequest; -} - -void nsSSLThread::cancelPendingHTTPRequest() -{ - if (!ssl_thread_singleton) - return; - - nsAutoLock threadLock(ssl_thread_singleton->mMutex); - - if (ssl_thread_singleton->mPendingHTTPRequest) - { - ssl_thread_singleton->mPendingHTTPRequest->Cancel(NS_ERROR_ABORT); - ssl_thread_singleton->mPendingHTTPRequest = nsnull; - } + return ssl_thread_singleton->mExitRequested; } nsSSLThread *nsSSLThread::ssl_thread_singleton = nsnull; diff --git a/security/manager/ssl/src/nsSSLThread.h b/security/manager/ssl/src/nsSSLThread.h index 5e60f11a52a3..d91b2ee77278 100644 --- a/security/manager/ssl/src/nsSSLThread.h +++ b/security/manager/ssl/src/nsSSLThread.h @@ -152,9 +152,7 @@ public: static nsresult requestActivateSSL(nsNSSSocketInfo *si); - // Called from either Necko or SSL thread. - static void rememberPendingHTTPRequest(nsIRequest *aRequest); - static void cancelPendingHTTPRequest(); + static PRBool exitRequested(); }; #endif //_NSSSLTHREAD_H_ From b1791d123f3727e0f0e6da6f4ffe2dc657cf3831 Mon Sep 17 00:00:00 2001 From: "uriber@gmail.com" Date: Tue, 25 Mar 2008 13:07:16 -0700 Subject: [PATCH 002/129] Reftest for bug 423676 --- layout/reftests/bugs/423676-1-ref.html | 20 ++++++++++++++++++++ layout/reftests/bugs/423676-1.html | 23 +++++++++++++++++++++++ layout/reftests/bugs/reftest.list | 1 + 3 files changed, 44 insertions(+) create mode 100644 layout/reftests/bugs/423676-1-ref.html create mode 100644 layout/reftests/bugs/423676-1.html diff --git a/layout/reftests/bugs/423676-1-ref.html b/layout/reftests/bugs/423676-1-ref.html new file mode 100644 index 000000000000..82a50a61fb35 --- /dev/null +++ b/layout/reftests/bugs/423676-1-ref.html @@ -0,0 +1,20 @@ + + + + +Testcase for bug 423676 + + + +
A
+B
+C
+
+
D
+
+E
+
+ + \ No newline at end of file diff --git a/layout/reftests/bugs/423676-1.html b/layout/reftests/bugs/423676-1.html new file mode 100644 index 000000000000..8b72f71875cf --- /dev/null +++ b/layout/reftests/bugs/423676-1.html @@ -0,0 +1,23 @@ + + + + +Testcase for bug 423676 + + + +
A
+‏B
+C
+
+
D
+‏
+E
+
+ + \ No newline at end of file diff --git a/layout/reftests/bugs/reftest.list b/layout/reftests/bugs/reftest.list index 9eea847f7a73..6acf04090de3 100644 --- a/layout/reftests/bugs/reftest.list +++ b/layout/reftests/bugs/reftest.list @@ -774,3 +774,4 @@ fails == 413027-3.html 413027-3-ref.html == 422394-1.html 422394-1-ref.html == 423130-1.html 423130-1-ref.html == 423599-1.html 423599-1-ref.html +== 423676-1.html 423676-1-ref.html From 49b860a42b34ee18d755fdaf8ff26ef8e5fa85b8 Mon Sep 17 00:00:00 2001 From: "kaie@kuix.de" Date: Tue, 25 Mar 2008 13:09:18 -0700 Subject: [PATCH 003/129] Attempt to fix red tinderbox, trivial mismatch between NS_IMETHODIMP and nsresult. Follow up to my fix for bug 420187. --- security/manager/ssl/src/nsNSSIOLayer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/security/manager/ssl/src/nsNSSIOLayer.cpp b/security/manager/ssl/src/nsNSSIOLayer.cpp index 4718ba2be8b8..e7558b3ca89c 100644 --- a/security/manager/ssl/src/nsNSSIOLayer.cpp +++ b/security/manager/ssl/src/nsNSSIOLayer.cpp @@ -326,7 +326,7 @@ nsNSSSocketInfo::SetNotificationCallbacks(nsIInterfaceRequestor* aCallbacks) return NS_OK; } -NS_IMETHODIMP +nsresult nsNSSSocketInfo::EnsureDocShellDependentStuffKnown() { if (mDocShellDependentStuffKnown) From 2d7e70b9f1356e33774f15777e12ed74757a21f4 Mon Sep 17 00:00:00 2001 From: "smontagu@smontagu.org" Date: Tue, 25 Mar 2008 13:19:34 -0700 Subject: [PATCH 004/129] Remove unnecessary and obsolete code. Bug 424916, r+sr=dbaron, a=damons --- .../src/base/nsBig5Prober.cpp | 5 - .../src/base/nsEUCJPProber.cpp | 5 - .../src/base/nsEUCKRProber.cpp | 5 - .../src/base/nsEUCTWProber.cpp | 5 - .../src/base/nsEscCharsetProber.cpp | 20 +- .../src/base/nsGB2312Prober.cpp | 5 - .../src/base/nsMBCSGroupProber.cpp | 20 -- .../src/base/nsSJISProber.cpp | 5 - .../src/base/nsUTF8Prober.cpp | 5 - intl/chardet/src/classic/Makefile.in | 60 ---- .../src/classic/nsClassicCharDetDll.cpp | 72 ---- .../chardet/src/classic/nsClassicCharDetDll.h | 43 --- .../src/classic/nsClassicDetectors.cpp | 297 ---------------- intl/chardet/src/classic/nsClassicDetectors.h | 123 ------- intl/chardet/src/nsPSMDetectors.cpp | 14 - intl/chardet/src/windows/makefile.win | 80 ----- .../src/windows/nsNativeCharDetDll.cpp | 150 -------- intl/chardet/src/windows/nsNativeCharDetDll.h | 43 --- .../chardet/src/windows/nsNativeDetectors.cpp | 333 ------------------ intl/chardet/src/windows/nsNativeDetectors.h | 64 ---- 20 files changed, 1 insertion(+), 1353 deletions(-) delete mode 100644 intl/chardet/src/classic/Makefile.in delete mode 100644 intl/chardet/src/classic/nsClassicCharDetDll.cpp delete mode 100644 intl/chardet/src/classic/nsClassicCharDetDll.h delete mode 100644 intl/chardet/src/classic/nsClassicDetectors.cpp delete mode 100644 intl/chardet/src/classic/nsClassicDetectors.h delete mode 100644 intl/chardet/src/windows/makefile.win delete mode 100644 intl/chardet/src/windows/nsNativeCharDetDll.cpp delete mode 100644 intl/chardet/src/windows/nsNativeCharDetDll.h delete mode 100644 intl/chardet/src/windows/nsNativeDetectors.cpp delete mode 100644 intl/chardet/src/windows/nsNativeDetectors.h diff --git a/extensions/universalchardet/src/base/nsBig5Prober.cpp b/extensions/universalchardet/src/base/nsBig5Prober.cpp index 55d63c6f5874..7288eb15966a 100644 --- a/extensions/universalchardet/src/base/nsBig5Prober.cpp +++ b/extensions/universalchardet/src/base/nsBig5Prober.cpp @@ -51,11 +51,6 @@ nsProbingState nsBig5Prober::HandleData(const char* aBuf, PRUint32 aLen) for (PRUint32 i = 0; i < aLen; i++) { codingState = mCodingSM->NextState(aBuf[i]); - if (codingState == eError) - { - mState = eNotMe; - break; - } if (codingState == eItsMe) { mState = eFoundIt; diff --git a/extensions/universalchardet/src/base/nsEUCJPProber.cpp b/extensions/universalchardet/src/base/nsEUCJPProber.cpp index fb0d296543c4..68a8b519aca5 100644 --- a/extensions/universalchardet/src/base/nsEUCJPProber.cpp +++ b/extensions/universalchardet/src/base/nsEUCJPProber.cpp @@ -57,11 +57,6 @@ nsProbingState nsEUCJPProber::HandleData(const char* aBuf, PRUint32 aLen) for (PRUint32 i = 0; i < aLen; i++) { codingState = mCodingSM->NextState(aBuf[i]); - if (codingState == eError) - { - mState = eNotMe; - break; - } if (codingState == eItsMe) { mState = eFoundIt; diff --git a/extensions/universalchardet/src/base/nsEUCKRProber.cpp b/extensions/universalchardet/src/base/nsEUCKRProber.cpp index c91a97e6637d..7d278ad8fd64 100644 --- a/extensions/universalchardet/src/base/nsEUCKRProber.cpp +++ b/extensions/universalchardet/src/base/nsEUCKRProber.cpp @@ -52,11 +52,6 @@ nsProbingState nsEUCKRProber::HandleData(const char* aBuf, PRUint32 aLen) for (PRUint32 i = 0; i < aLen; i++) { codingState = mCodingSM->NextState(aBuf[i]); - if (codingState == eError) - { - mState = eNotMe; - break; - } if (codingState == eItsMe) { mState = eFoundIt; diff --git a/extensions/universalchardet/src/base/nsEUCTWProber.cpp b/extensions/universalchardet/src/base/nsEUCTWProber.cpp index 8552941c3fbc..ef2bcf50c336 100644 --- a/extensions/universalchardet/src/base/nsEUCTWProber.cpp +++ b/extensions/universalchardet/src/base/nsEUCTWProber.cpp @@ -52,11 +52,6 @@ nsProbingState nsEUCTWProber::HandleData(const char* aBuf, PRUint32 aLen) for (PRUint32 i = 0; i < aLen; i++) { codingState = mCodingSM->NextState(aBuf[i]); - if (codingState == eError) - { - mState = eNotMe; - break; - } if (codingState == eItsMe) { mState = eFoundIt; diff --git a/extensions/universalchardet/src/base/nsEscCharsetProber.cpp b/extensions/universalchardet/src/base/nsEscCharsetProber.cpp index a816bab764f9..553660955636 100644 --- a/extensions/universalchardet/src/base/nsEscCharsetProber.cpp +++ b/extensions/universalchardet/src/base/nsEscCharsetProber.cpp @@ -74,26 +74,8 @@ nsProbingState nsEscCharSetProber::HandleData(const char* aBuf, PRUint32 aLen) { for (j = mActiveSM-1; j>= 0; j--) { - //byte is feed to all active state machine codingState = mCodingSM[j]->NextState(aBuf[i]); - if (codingState == eError) - { - //got negative answer for this state machine, make it inactive - mActiveSM--; - if (mActiveSM == 0) - { - mState = eNotMe; - return mState; - } - else if (j != (PRInt32)mActiveSM) - { - nsCodingStateMachine* t; - t = mCodingSM[mActiveSM]; - mCodingSM[mActiveSM] = mCodingSM[j]; - mCodingSM[j] = t; - } - } - else if (codingState == eItsMe) + if (codingState == eItsMe) { mState = eFoundIt; mDetectedCharset = mCodingSM[j]->GetCodingStateMachine(); diff --git a/extensions/universalchardet/src/base/nsGB2312Prober.cpp b/extensions/universalchardet/src/base/nsGB2312Prober.cpp index 576dcd6e9811..f05b6d7fa965 100644 --- a/extensions/universalchardet/src/base/nsGB2312Prober.cpp +++ b/extensions/universalchardet/src/base/nsGB2312Prober.cpp @@ -57,11 +57,6 @@ nsProbingState nsGB18030Prober::HandleData(const char* aBuf, PRUint32 aLen) for (PRUint32 i = 0; i < aLen; i++) { codingState = mCodingSM->NextState(aBuf[i]); - if (codingState == eError) - { - mState = eNotMe; - break; - } if (codingState == eItsMe) { mState = eFoundIt; diff --git a/extensions/universalchardet/src/base/nsMBCSGroupProber.cpp b/extensions/universalchardet/src/base/nsMBCSGroupProber.cpp index d723a1e7cb31..0141814e0b7d 100644 --- a/extensions/universalchardet/src/base/nsMBCSGroupProber.cpp +++ b/extensions/universalchardet/src/base/nsMBCSGroupProber.cpp @@ -134,16 +134,6 @@ nsProbingState nsMBCSGroupProber::HandleData(const char* aBuf, PRUint32 aLen) mState = eFoundIt; return mState; } - else if (st == eNotMe) - { - mIsActive[i] = PR_FALSE; - mActiveNum--; - if (mActiveNum <= 0) - { - mState = eNotMe; - return mState; - } - } } } } @@ -161,16 +151,6 @@ nsProbingState nsMBCSGroupProber::HandleData(const char* aBuf, PRUint32 aLen) mState = eFoundIt; return mState; } - else if (st == eNotMe) - { - mIsActive[i] = PR_FALSE; - mActiveNum--; - if (mActiveNum <= 0) - { - mState = eNotMe; - return mState; - } - } } } mKeepNext = keepNext; diff --git a/extensions/universalchardet/src/base/nsSJISProber.cpp b/extensions/universalchardet/src/base/nsSJISProber.cpp index 9bab50681aa6..eb39d91d2784 100644 --- a/extensions/universalchardet/src/base/nsSJISProber.cpp +++ b/extensions/universalchardet/src/base/nsSJISProber.cpp @@ -57,11 +57,6 @@ nsProbingState nsSJISProber::HandleData(const char* aBuf, PRUint32 aLen) for (PRUint32 i = 0; i < aLen; i++) { codingState = mCodingSM->NextState(aBuf[i]); - if (codingState == eError) - { - mState = eNotMe; - break; - } if (codingState == eItsMe) { mState = eFoundIt; diff --git a/extensions/universalchardet/src/base/nsUTF8Prober.cpp b/extensions/universalchardet/src/base/nsUTF8Prober.cpp index 6d590b45e5a8..ab8d9f7bb928 100644 --- a/extensions/universalchardet/src/base/nsUTF8Prober.cpp +++ b/extensions/universalchardet/src/base/nsUTF8Prober.cpp @@ -51,11 +51,6 @@ nsProbingState nsUTF8Prober::HandleData(const char* aBuf, PRUint32 aLen) for (PRUint32 i = 0; i < aLen; i++) { codingState = mCodingSM->NextState(aBuf[i]); - if (codingState == eError) - { - mState = eNotMe; - break; - } if (codingState == eItsMe) { mState = eFoundIt; diff --git a/intl/chardet/src/classic/Makefile.in b/intl/chardet/src/classic/Makefile.in deleted file mode 100644 index b8adca7cf6d3..000000000000 --- a/intl/chardet/src/classic/Makefile.in +++ /dev/null @@ -1,60 +0,0 @@ -# -# ***** 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) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# -# Alternatively, the contents of this file may be used under the terms of -# either of the GNU General Public License Version 2 or later (the "GPL"), -# or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -# in which case the provisions of the GPL or the LGPL are applicable instead -# of those above. If you wish to allow use of your version of this file only -# under the terms of either the GPL or the LGPL, and not to allow others to -# use your version of this file under the terms of the MPL, indicate your -# decision by deleting the provisions above and replace them with the notice -# and other provisions required by the GPL or the LGPL. If you do not delete -# the provisions above, a recipient may use your version of this file under -# the terms of any one of the MPL, the GPL or the LGPL. -# -# ***** END LICENSE BLOCK ***** - -DEPTH = ../../../.. -topsrcdir = @top_srcdir@ -srcdir = @srcdir@ -VPATH = @srcdir@ - -include $(DEPTH)/config/autoconf.mk - -MODULE = chardetc -LIBRARY_NAME = chardetc -EXPORT_LIBRARY = 1 -IS_COMPONENT = 1 -MODULE_NAME = nsCharDetModuleClassic -REQUIRES = xpcom - -CPPSRCS = \ - nsClassicCharDetDll.cpp \ - nsClassicDetectors.cpp \ - $(NULL) - -EXPORTS := $(addprefix $(srcdir)/, $(EXPORTS)) - -include $(topsrcdir)/config/rules.mk - diff --git a/intl/chardet/src/classic/nsClassicCharDetDll.cpp b/intl/chardet/src/classic/nsClassicCharDetDll.cpp deleted file mode 100644 index e1e714ed899b..000000000000 --- a/intl/chardet/src/classic/nsClassicCharDetDll.cpp +++ /dev/null @@ -1,72 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is - * Netscape Communications Corporation. - * Portions created by the Initial Developer are Copyright (C) 1998 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * Pierre Phaneuf - * - * Alternatively, the contents of this file may be used under the terms of - * either of the GNU General Public License Version 2 or later (the "GPL"), - * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#include "nsICharsetAlias.h" - -#include "pratom.h" -#include "nsClassicCharDetDll.h" -#include "nsICharsetDetectionObserver.h" -#include "nsISupports.h" -#include "nsIComponentManager.h" -#include "nsIFactory.h" -#include "nsIServiceManager.h" -#include "nsIGenericFactory.h" -#include "nsCOMPtr.h" -#include "nsICharsetDetector.h" -#include "nsIStringCharsetDetector.h" -#include "nsClassicDetectors.h" - - -NS_GENERIC_FACTORY_CONSTRUCTOR(nsJACharsetClassicDetector) -NS_GENERIC_FACTORY_CONSTRUCTOR(nsJAStringCharsetClassicDetector) -NS_GENERIC_FACTORY_CONSTRUCTOR(nsKOCharsetClassicDetector) -NS_GENERIC_FACTORY_CONSTRUCTOR(nsKOStringCharsetClassicDetector) - -static const nsModuleComponentInfo components[] = { - { "Classic JA Charset Detector", NS_JA_CLASSIC_DETECTOR_CID, - NS_CHARSET_DETECTOR_CONTRACTID_BASE "jaclassic", nsJACharsetClassicDetectorConstructor}, - { "Classic JA String Charset Detector", NS_JA_CLASSIC_DETECTOR_CID, - NS_STRCDETECTOR_CONTRACTID_BASE "jaclassic", nsJAStringCharsetClassicDetectorConstructor}, - { "Classic KO Charset Detector", NS_KO_CLASSIC_DETECTOR_CID, - NS_CHARSET_DETECTOR_CONTRACTID_BASE "koclassic", nsKOCharsetClassicDetectorConstructor}, - { "Classic KO String Charset Detector", NS_KO_CLASSIC_STRING_DETECTOR_CID, - NS_STRCDETECTOR_CONTRACTID_BASE "koclassic", nsKOStringCharsetClassicDetectorConstructor} -}; - -NS_IMPL_NSGETMODULE(nsCharDetModuleClassic, components) - diff --git a/intl/chardet/src/classic/nsClassicCharDetDll.h b/intl/chardet/src/classic/nsClassicCharDetDll.h deleted file mode 100644 index 596d17cb2537..000000000000 --- a/intl/chardet/src/classic/nsClassicCharDetDll.h +++ /dev/null @@ -1,43 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is Mozilla Communicator client code. - * - * The Initial Developer of the Original Code is - * Netscape Communications Corporation. - * Portions created by the Initial Developer are Copyright (C) 1998 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * - * Alternatively, the contents of this file may be used under the terms of - * either of the GNU General Public License Version 2 or later (the "GPL"), - * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#ifndef nsClassicCharDetDll_h__ -#define nsClassicCharDetDll_h__ - -#include "prtypes.h" - -#endif /* nsClassicCharDetDll_h__ */ diff --git a/intl/chardet/src/classic/nsClassicDetectors.cpp b/intl/chardet/src/classic/nsClassicDetectors.cpp deleted file mode 100644 index 2fc5a1bef7fd..000000000000 --- a/intl/chardet/src/classic/nsClassicDetectors.cpp +++ /dev/null @@ -1,297 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is Mozilla Communicator client code. - * - * The Initial Developer of the Original Code is - * Netscape Communications Corporation. - * Portions created by the Initial Developer are Copyright (C) 1998 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * Pierre Phaneuf - * - * Alternatively, the contents of this file may be used under the terms of - * either of the GNU General Public License Version 2 or later (the "GPL"), - * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - - -#include "nsIFactory.h" -#include "nsISupports.h" -#include "nsClassicCharDetDll.h" -#include "pratom.h" - -#include "nsICharsetDetector.h" -#include "nsICharsetDetectionObserver.h" -#include "nsIStringCharsetDetector.h" -#include "nsClassicDetectors.h" - -//========================================================== - - /* values for EUC shift chars */ -#define SS2 0x8E /* Single Shift 2 */ -#define SS3 0x8F /* Single Shift 3 */ -#define IsRoman(c) ((c) < 0x80) -#define IsSJIS2ndByte(c) (((c) > 0x3F) && ((c) < 0xFD)) -#define IsLoSJIS2ndByte(c) (((c) > 0x3F) && ((c) < 0xA1)) -#define IsHiSJIS2ndByte(c) (((c) > 0xA0) && ((c) < 0xFD)) -#define IsEUCJPKana(b1) (((b1) > 0xA0) && ((b1) < 0xE0)) -#define IsEUCJPKanji(b1or2) (((b1or2) > 0xA0) && ((b1or2) < 0xFF)) - -#define YES 1 -#define NO 0 -#define MAYBE -1 - -static int -isSJIS(const unsigned char *cp, PRInt32 len) -{ - while (len) { - if (IsRoman(*cp)) { - cp++, len--; - } else if (*cp == 0x80) { /* illegal SJIS 1st byte */ - return NO; - } else if ((*cp < 0xA0)) { /* byte 1 of 2byte SJIS 1st range */ - if (len > 1) { - if (IsSJIS2ndByte(cp[1])) { - if ((*cp != 0x8E && *cp != 0x8F) || (*(cp+1) <= 0xA0)) - return YES; - cp += 2, len -= 2; /* valid 2 byte SJIS */ - } else { - return NO; /* invalid SJIS 2nd byte */ - } - } else - break; /* buffer ended w/1of2 byte SJIS */ - } else if (*cp == 0xA0) { /* illegal EUCJP byte */ -#if ALLOW_NBSP - cp++, len--; /* allow nbsp */ -#endif - } else if (*cp < 0xE0) { /* SJIS half-width kana */ - cp++, len--; - } else if (*cp < 0xF0) { /* byte 1 of 2byte SJIS 2nd range */ - if (len > 1) { - if (IsSJIS2ndByte(cp[1])) { - cp += 2, len -= 2; /* valid 2 byte SJIS */ - } else { - return NO; /* invalid SJIS */ - } - } else - break; /* buffer ended w/1of2 byte SJIS */ - } else { - return NO; /* invalid SJIS 1st byte */ - } - } - return MAYBE; /* No illegal SJIS values found */ -} - -static int -isEUCJP(const unsigned char *cp, PRInt32 len) -{ - while (len) { - if (IsRoman(*cp)) { /* Roman */ - cp++, len--; - } else if (*cp == SS2) { /* EUCJP JIS201 half-width kana */ - if (len > 1) { - if (IsEUCJPKana(cp[1])) - cp += 2, len -= 2; /* valid half-width kana */ - else - return NO; /* invalid 2of3 byte EUC */ - } else - break; /* buffer ended w/1of2 byte EUC */ - } else if (*cp == SS3) { /* EUCJP JIS212 */ - if (len > 1) { - if (IsEUCJPKanji(cp[1])) { - if (len > 2) { - if (IsEUCJPKanji(cp[2])) - cp += 2, len -= 2; /* valid 3 byte EUCJP */ - else - return NO; /* invalid 3of3 byte EUCJP */ - } else - break; /* buffer ended w/2of3 byte EUCJP */ - } else - return NO; /* invalid 2of3 byte EUCJP */ - } else - break; /* buffer ended w/1of3 byte EUCJP */ - } else if (*cp == 0xA0) { /* illegal EUCJP byte */ -#if ALLOW_NBSP - cp++, len--; /* allow nbsp */ -#else - return NO; -#endif - } else if (*cp < 0xF0) { /* EUCJP JIS208 (overlaps SJIS) */ - if (len > 1) { - if (IsEUCJPKanji(cp[1])) - cp += 2, len -= 2; /* valid 2 byte EUCJP */ - else - return NO; /* invalid 2of2 byte EUCJP */ - } else - break; /* buffer ended w/1of2 byte EUCJP */ - } else if (*cp < 0xFF) { /* EUCJP JIS208 only: */ - if (len > 1) { - if (IsEUCJPKanji(cp[1])) - return YES; /* valid 2 byte EUCJP, invalid SJIS */ - else - return NO; /* invalid 2of2 byte EUCJP */ - } else - break; /* buffer ended w/1of2 byte EUCJP */ - } else { - return NO; /* invalid EUCJP 1st byte: 0xFF */ - } - } - return MAYBE; -} - -//////////////////////////////////////////////////////////////////////////////////////////////////// - -static nsresult JA_AutoCharsetDetectBuffer(const char* aBuffer, const PRInt32 aLen, char* aCharset) -{ - PRBool hasEsc = PR_FALSE; - PRBool asciiOnly = PR_TRUE; - - PL_strcpy(aCharset, "ISO-8859-1"); - - // check 8 bit or ESC - for (int i = 0; i < aLen; i++) { - if ((unsigned char) aBuffer[i] > 127 || aBuffer[i] == 0x1B) { - if (aBuffer[i] == 0x1B) { - hasEsc = PR_TRUE; - break; - } - else { - asciiOnly = PR_FALSE; - } - } - } - - if (hasEsc) { - PL_strcpy(aCharset, "ISO-2022-JP"); - } - else if (!asciiOnly) { - // use old japanese auto detect code - int euc, sjis; - euc = isEUCJP((unsigned char *) aBuffer, aLen); - sjis = isSJIS((unsigned char *) aBuffer, aLen); - if (YES == euc) { - PL_strcpy(aCharset, "EUC-JP"); - } - else if (YES == sjis) { - PL_strcpy(aCharset, "Shift_JIS"); - } - else if (MAYBE == euc && NO == sjis) { - PL_strcpy(aCharset, "EUC-JP"); - } - else if (MAYBE == sjis && NO == euc) { - PL_strcpy(aCharset, "Shift_JIS"); - } - else if (MAYBE == euc && MAYBE == sjis) { - PL_strcpy(aCharset, "EUC-JP"); - } - } - - return NS_OK; -} - -//========================================================== -NS_IMPL_ISUPPORTS1(nsClassicDetector, nsICharsetDetector) - -//---------------------------------------------------------- -nsClassicDetector::nsClassicDetector(const char* language) -{ - mObserver = nsnull; - PL_strcpy(mLanguage, language); -} -//---------------------------------------------------------- -nsClassicDetector::~nsClassicDetector() -{ -} -//---------------------------------------------------------- -NS_IMETHODIMP nsClassicDetector::Init( - nsICharsetDetectionObserver* aObserver) -{ - NS_ASSERTION(mObserver == nsnull , "Init twice"); - if(nsnull == aObserver) - return NS_ERROR_ILLEGAL_VALUE; - - mObserver = aObserver; - - return NS_OK; -} -//---------------------------------------------------------- -NS_IMETHODIMP nsClassicDetector::DoIt( - const char* aBuf, PRUint32 aLen, PRBool* oDontFeedMe) -{ - NS_ASSERTION(mObserver != nsnull , "have not init yet"); - - if((nsnull == aBuf) || (nsnull == oDontFeedMe)) - return NS_ERROR_ILLEGAL_VALUE; - - if (!PL_strcasecmp("ja", mLanguage) && - NS_SUCCEEDED(JA_AutoCharsetDetectBuffer(aBuf, (PRInt32) aLen, mCharset))) { - mObserver->Notify(mCharset, eBestAnswer); - } - else { - mObserver->Notify("", eNoAnswerMatch); - } - - *oDontFeedMe = PR_TRUE; - - return NS_OK; -} -//---------------------------------------------------------- -NS_IMETHODIMP nsClassicDetector::Done() -{ - NS_ASSERTION(mObserver != nsnull , "have not init yet"); - return NS_OK; -} - -//========================================================== - -NS_IMPL_ISUPPORTS1(nsClassicStringDetector, nsIStringCharsetDetector) - -//---------------------------------------------------------- -nsClassicStringDetector::nsClassicStringDetector(const char* language) -{ - PL_strcpy(mLanguage, language); -} -//---------------------------------------------------------- -nsClassicStringDetector::~nsClassicStringDetector() -{ -} - -//---------------------------------------------------------- -NS_IMETHODIMP nsClassicStringDetector::DoIt(const char* aBuf, PRUint32 aLen, - const char** oCharset, - nsDetectionConfident &oConfident) -{ - oConfident = eNoAnswerMatch; - *oCharset = ""; - - if (!PL_strcasecmp("ja", mLanguage) && - NS_SUCCEEDED(JA_AutoCharsetDetectBuffer(aBuf, (PRInt32) aLen, mCharset))) { - *oCharset = mCharset; - oConfident = eBestAnswer; - } - - return NS_OK; -} - diff --git a/intl/chardet/src/classic/nsClassicDetectors.h b/intl/chardet/src/classic/nsClassicDetectors.h deleted file mode 100644 index 9f46b3db38cf..000000000000 --- a/intl/chardet/src/classic/nsClassicDetectors.h +++ /dev/null @@ -1,123 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is Mozilla Communicator client code. - * - * The Initial Developer of the Original Code is - * Netscape Communications Corporation. - * Portions created by the Initial Developer are Copyright (C) 1998 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * - * Alternatively, the contents of this file may be used under the terms of - * either of the GNU General Public License Version 2 or later (the "GPL"), - * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#ifndef nsClassicDetectors_h__ -#define nsClassicDetectors_h__ - -#include "nsCOMPtr.h" -#include "nsIFactory.h" - -// {1D2394A0-542A-11d3-914D-006008A6EDF6} -#define NS_JA_CLASSIC_DETECTOR_CID \ -{ 0x1d2394a0, 0x542a, 0x11d3, { 0x91, 0x4d, 0x0, 0x60, 0x8, 0xa6, 0xed, 0xf6 } } - -// {1D2394A1-542A-11d3-914D-006008A6EDF6} -#define NS_JA_CLASSIC_STRING_DETECTOR_CID \ -{ 0x1d2394a1, 0x542a, 0x11d3, { 0x91, 0x4d, 0x0, 0x60, 0x8, 0xa6, 0xed, 0xf6 } } - -// {1D2394A2-542A-11d3-914D-006008A6EDF6} -#define NS_KO_CLASSIC_DETECTOR_CID \ -{ 0x1d2394a2, 0x542a, 0x11d3, { 0x91, 0x4d, 0x0, 0x60, 0x8, 0xa6, 0xed, 0xf6 } } - -// {1D2394A3-542A-11d3-914D-006008A6EDF6} -#define NS_KO_CLASSIC_STRING_DETECTOR_CID \ -{ 0x1d2394a3, 0x542a, 0x11d3, { 0x91, 0x4d, 0x0, 0x60, 0x8, 0xa6, 0xed, 0xf6 } } - -class nsClassicDetector : - public nsICharsetDetector // Implement the interface -{ -public: - NS_DECL_ISUPPORTS - - nsClassicDetector(const char* language); - virtual ~nsClassicDetector(); - NS_IMETHOD Init(nsICharsetDetectionObserver* aObserver); - NS_IMETHOD DoIt(const char* aBuf, PRUint32 aLen, PRBool* oDontFeedMe); - NS_IMETHOD Done(); - -private: - nsCOMPtr mObserver; - char mCharset[65]; - char mLanguage[32]; -}; - - -class nsClassicStringDetector : - public nsIStringCharsetDetector // Implement the interface -{ -public: - NS_DECL_ISUPPORTS - - nsClassicStringDetector(const char* language); - virtual ~nsClassicStringDetector(); - NS_IMETHOD DoIt(const char* aBuf, PRUint32 aLen, - const char** oCharset, - nsDetectionConfident &oConfident); -protected: - char mCharset[65]; - char mLanguage[32]; -}; - -class nsJACharsetClassicDetector : public nsClassicDetector -{ -public: - nsJACharsetClassicDetector() - : nsClassicDetector("ja") {}; -}; - -class nsJAStringCharsetClassicDetector : public nsClassicStringDetector -{ -public: - nsJAStringCharsetClassicDetector() - : nsClassicStringDetector("ja") {}; -}; - -class nsKOCharsetClassicDetector : public nsClassicDetector -{ -public: - nsKOCharsetClassicDetector() - : nsClassicDetector("ko") {}; -}; - -class nsKOStringCharsetClassicDetector : public nsClassicStringDetector -{ -public: - nsKOStringCharsetClassicDetector() - : nsClassicStringDetector("ko") {}; -}; - -#endif /* nsClassicDetectors_h__ */ diff --git a/intl/chardet/src/nsPSMDetectors.cpp b/intl/chardet/src/nsPSMDetectors.cpp index dc3d04e9f354..b784f1c340cc 100644 --- a/intl/chardet/src/nsPSMDetectors.cpp +++ b/intl/chardet/src/nsPSMDetectors.cpp @@ -354,20 +354,6 @@ PRBool nsPSMDetector::HandleData(const char* aBuf, PRUint32 aLen) Report( mVerifier[mItemIdx[j]]->charset); mDone = PR_TRUE; return mDone; - } else if (eError == st) - { -#ifdef DETECTOR_DEBUG - printf("It's NOT %s- byte %d(%x)\n", - mVerifier[mItemIdx[j]]->charset, - i+mDbgLen, - i+mDbgLen); -#endif - mItems--; - if(j < mItems ) - { - mItemIdx[j] = mItemIdx[mItems]; - mState[j] = mState[mItems]; - } } else { mState[j++] = st; } diff --git a/intl/chardet/src/windows/makefile.win b/intl/chardet/src/windows/makefile.win deleted file mode 100644 index 0f1df8a76e78..000000000000 --- a/intl/chardet/src/windows/makefile.win +++ /dev/null @@ -1,80 +0,0 @@ -#!nmake -# -# ***** 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) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# -# Alternatively, the contents of this file may be used under the terms of -# either of the GNU General Public License Version 2 or later (the "GPL"), -# or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -# in which case the provisions of the GPL or the LGPL are applicable instead -# of those above. If you wish to allow use of your version of this file only -# under the terms of either the GPL or the LGPL, and not to allow others to -# use your version of this file under the terms of the MPL, indicate your -# decision by deleting the provisions above and replace them with the notice -# and other provisions required by the GPL or the LGPL. If you do not delete -# the provisions above, a recipient may use your version of this file under -# the terms of any one of the MPL, the GPL or the LGPL. -# -# ***** END LICENSE BLOCK ***** -DEPTH=..\..\..\.. - -REQUIRES = xpcom \ - string \ - chardet \ - uconv \ - $(NULL) -LCFLAGS= $(LCFLAGS) -D__STDC__ - -DEFINES= -DWIN32_LEAN_AND_MEAN -LIBRARY_NAME= chardetnativeTest - -OBJS= \ - $(NULL) - -CSRCS= \ - $(NULL) - -CPP_OBJS= \ - .\$(OBJDIR)\nsNativeCharDetDll.obj \ - .\$(OBJDIR)\nsNativeDetectors.obj \ - $(NULL) - -MODULE=chardetnativeTest - -MAKE_OBJ_TYPE=DLL -DLLNAME=chardetnativeTest -DLL=.\$(OBJDIR)\$(DLLNAME).dll - -WIN_LIBS= ole32.lib - -LLIBS= \ - $(DIST)\lib\xpcom.lib \ - $(LIBNSPR) - -include <$(DEPTH)\config\rules.mak> - -libs:: $(DLL) - $(MAKE_INSTALL) .\$(OBJDIR)\$(DLLNAME).dll $(DIST)\bin\components - -clobber:: - rm -f $(DIST)\bin\components\$(DLLNAME).dll - diff --git a/intl/chardet/src/windows/nsNativeCharDetDll.cpp b/intl/chardet/src/windows/nsNativeCharDetDll.cpp deleted file mode 100644 index e94b95a0c7ff..000000000000 --- a/intl/chardet/src/windows/nsNativeCharDetDll.cpp +++ /dev/null @@ -1,150 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is - * Netscape Communications Corporation. - * Portions created by the Initial Developer are Copyright (C) 1998 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * Pierre Phaneuf - * - * Alternatively, the contents of this file may be used under the terms of - * either of the GNU General Public License Version 2 or later (the "GPL"), - * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#include "nsICharsetAlias.h" - -#include "pratom.h" -#include "nsNativeCharDetDll.h" -#include "nsISupports.h" -#include "nsIComponentManager.h" -#include "nsIFactory.h" -#include "nsIServiceManager.h" -#include "nsCOMPtr.h" -#include "nsICharsetDetector.h" -#include "nsIStringCharsetDetector.h" -#include "nsNativeDetectors.h" - - -static NS_DEFINE_CID(kJANativeDetectorCID, NS_JA_NATIVE_DETECTOR_CID); -static NS_DEFINE_CID(kJANativeStringDetectorCID, NS_JA_NATIVE_STRING_DETECTOR_CID); -static NS_DEFINE_CID(kKONativeDetectorCID, NS_KO_NATIVE_DETECTOR_CID); -static NS_DEFINE_CID(kKONativeStringDetectorCID, NS_KO_NATIVE_STRING_DETECTOR_CID); -static NS_DEFINE_CID(kComponentManagerCID, NS_COMPONENTMANAGER_CID); -static NS_DEFINE_IID(kFactoryIID, NS_IFACTORY_IID); - -extern "C" NS_EXPORT nsresult NSGetFactory(nsISupports* aServMgr, - const nsCID &aClass, - const char *aClassName, - const char *aContractID, - nsIFactory **aFactory) -{ - if (aFactory == NULL) { - return NS_ERROR_NULL_POINTER; - } - - nsIFactory *factory = nsnull; - if (aClass.Equals(kJANativeDetectorCID)) { - ; - //bug#13844 disable this until find out the reason of the freeze - //factory = NEW_JA_NATIVEDETECTOR_FACTORY(); - } else if (aClass.Equals(kJANativeStringDetectorCID)) { - factory = NEW_JA_STRING_NATIVEDETECTOR_FACTORY(); - } else if (aClass.Equals(kKONativeDetectorCID)) { - ;factory = NEW_KO_NATIVEDETECTOR_FACTORY(); - } else if (aClass.Equals(kKONativeStringDetectorCID)) { - factory = NEW_KO_STRING_NATIVEDETECTOR_FACTORY(); - } - - if(nsnull != factory) { - nsresult res = factory->QueryInterface(kFactoryIID, (void **) aFactory); - if (NS_FAILED(res)) { - *aFactory = NULL; - delete factory; - } - return res; - } - return NS_NOINTERFACE; -} - -extern "C" NS_EXPORT PRBool NSCanUnload(nsISupports* aServMgr) { - return PR_FALSE; -} -extern "C" NS_EXPORT nsresult NSRegisterSelf(nsISupports* aServMgr, const char *path) -{ - nsresult rv; - - nsCOMPtr servMgr(do_QueryInterface(aServMgr, &rv)); - if (NS_FAILED(rv)) return rv; - - nsCOMPtr compMgr = do_GetService(kComponentManagerCID, &rv); - if (NS_FAILED(rv)) return rv; - - rv = compMgr->RegisterComponent(kJANativeDetectorCID, - "Native JA Charset Detector", - NS_CHARSET_DETECTOR_CONTRACTID_BASE "jams", - path, - PR_TRUE, PR_TRUE); - - rv = compMgr->RegisterComponent(kJANativeStringDetectorCID, - "Native JA String Charset Detector", - NS_STRCDETECTOR_CONTRACTID_BASE "jams", - path, - PR_TRUE, PR_TRUE); - - rv = compMgr->RegisterComponent(kKONativeDetectorCID, - "Native KO Charset Detector", - NS_CHARSET_DETECTOR_CONTRACTID_BASE "koms", - path, - PR_TRUE, PR_TRUE); - - rv = compMgr->RegisterComponent(kKONativeStringDetectorCID, - "Native KO String Charset Detector", - NS_STRCDETECTOR_CONTRACTID_BASE "koms", - path, - PR_TRUE, PR_TRUE); - return rv; -} - -extern "C" NS_EXPORT nsresult NSUnregisterSelf(nsISupports* aServMgr, const char *path) -{ - nsresult rv; - - nsCOMPtr servMgr(do_QueryInterface(aServMgr, &rv)); - if (NS_FAILED(rv)) return rv; - - nsCOMPtr compMgr = do_GetService(kComponentManagerCID, &rv); - if (NS_FAILED(rv)) return rv; - - rv = compMgr->UnregisterComponent(kJANativeDetectorCID, path); - rv = compMgr->UnregisterComponent(kJANativeStringDetectorCID, path); - rv = compMgr->UnregisterComponent(kKONativeDetectorCID, path); - rv = compMgr->UnregisterComponent(kKONativeStringDetectorCID, path); - - return rv; -} - diff --git a/intl/chardet/src/windows/nsNativeCharDetDll.h b/intl/chardet/src/windows/nsNativeCharDetDll.h deleted file mode 100644 index a6af5b2acac1..000000000000 --- a/intl/chardet/src/windows/nsNativeCharDetDll.h +++ /dev/null @@ -1,43 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is Mozilla Communicator client code. - * - * The Initial Developer of the Original Code is - * Netscape Communications Corporation. - * Portions created by the Initial Developer are Copyright (C) 1998 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * - * Alternatively, the contents of this file may be used under the terms of - * either of the GNU General Public License Version 2 or later (the "GPL"), - * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#ifndef nsNativeCharDetDll_h__ -#define nsNativeCharDetDll_h__ - -#include "prtypes.h" - -#endif /* nsNativeCharDetDll_h__ */ diff --git a/intl/chardet/src/windows/nsNativeDetectors.cpp b/intl/chardet/src/windows/nsNativeDetectors.cpp deleted file mode 100644 index 37bb3a4de798..000000000000 --- a/intl/chardet/src/windows/nsNativeDetectors.cpp +++ /dev/null @@ -1,333 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is Mozilla Communicator client code. - * - * The Initial Developer of the Original Code is - * Netscape Communications Corporation. - * Portions created by the Initial Developer are Copyright (C) 1998 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * Pierre Phaneuf - * - * Alternatively, the contents of this file may be used under the terms of - * either of the GNU General Public License Version 2 or later (the "GPL"), - * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - - -#include -#include - -#include "nsIFactory.h" -#include "nsISupports.h" -#include "nsNativeCharDetDll.h" -#include "pratom.h" -#include "nsReadableUtils.h" - -#include "nsICharsetDetector.h" -#include "nsICharsetDetectionObserver.h" -#include "nsIStringCharsetDetector.h" - - -//========================================================== - -// By using DoConversion to unicode with from codepage set to auto detection, -// we can get input codepage then charset name. -// -static HRESULT DetectCharsetUsingMLang(IMultiLanguage *aMultiLanguage, IMLangConvertCharset *aMLangConvertCharset, - char* charset, nsDetectionConfident& aConfidence, BYTE* inBuf, UINT* inSize) -{ - if (NULL == charset) { - return E_FAIL; - } - if (*inSize > 4096) { - return E_FAIL; // Or we could allocate memory on heap - } - aConfidence = eNoAnswerYet; - - BYTE outBuf[4096]; - UINT outSize = 0; - - HRESULT hr = aMLangConvertCharset->DoConversion(inBuf, inSize, outBuf, &outSize); - if (SUCCEEDED(hr)) { - DWORD dwProperty = 0; - UINT sourceCP; - hr = aMLangConvertCharset->GetProperty(&dwProperty); - if (SUCCEEDED(hr)) { - if (dwProperty & MLCONVCHARF_AUTODETECT) { - hr = aMLangConvertCharset->GetSourceCodePage(&sourceCP); - if (SUCCEEDED(hr)) { - MIMECPINFO aCodePageInfo; - hr = aMultiLanguage->GetCodePageInfo(sourceCP, &aCodePageInfo); - if (SUCCEEDED(hr)) { - // convert WCHAR* to char* - nsString aCharset(aCodePageInfo.wszWebCharset); - char *cstr = ToNewCString(aCharset); - PL_strcpy(charset, cstr); - delete [] cstr; - aConfidence = eSureAnswer; - } - } - } - else { - charset[0] = '\0'; - aConfidence = eNoAnswerMatch; - } - } - } - return hr; -} - -//========================================================== - -class nsNativeDetector : - public nsICharsetDetector // Implement the interface -{ -public: - NS_DECL_ISUPPORTS - - nsNativeDetector(PRUint32 aCodePage); - virtual ~nsNativeDetector(); - NS_IMETHOD Init(nsICharsetDetectionObserver* aObserver); - NS_IMETHOD DoIt(const char* aBuf, PRUint32 aLen, PRBool* oDontFeedMe); - NS_IMETHOD Done(); - -private: - nsICharsetDetectionObserver* mObserver; - IMultiLanguage *mMultiLanguage; - IMLangConvertCharset *mMLangConvertCharset; - PRUint32 mCodePage; - char mCharset[65]; -}; - -NS_IMPL_ISUPPORTS1(nsNativeDetector, nsICharsetDetector) - -//---------------------------------------------------------- -nsNativeDetector::nsNativeDetector(PRUint32 aCodePage) -{ - HRESULT hr = CoInitialize(NULL); - mObserver = nsnull; - mCodePage = aCodePage; - mMultiLanguage = NULL; - mMLangConvertCharset = NULL; -} -//---------------------------------------------------------- -nsNativeDetector::~nsNativeDetector() -{ - NS_IF_RELEASE(mObserver); - if (NULL != mMultiLanguage) - mMultiLanguage->Release(); - if (NULL != mMLangConvertCharset) - mMLangConvertCharset->Release(); - CoUninitialize(); -} -//---------------------------------------------------------- -NS_IMETHODIMP nsNativeDetector::Init( - nsICharsetDetectionObserver* aObserver) -{ - NS_ASSERTION(mObserver == nsnull , "Init twice"); - if(nsnull == aObserver) - return NS_ERROR_ILLEGAL_VALUE; - - mObserver = aObserver; - - HRESULT hr = CoCreateInstance(CLSID_CMultiLanguage, NULL, CLSCTX_INPROC_SERVER, - IID_IMultiLanguage, (LPVOID *)&mMultiLanguage); - if (SUCCEEDED(hr)) { - DWORD dwProperty = 0; - hr = mMultiLanguage->CreateConvertCharset(mCodePage, 1200, dwProperty, &mMLangConvertCharset); - } - - return SUCCEEDED(hr) ? NS_OK : NS_ERROR_FAILURE; -} -//---------------------------------------------------------- -NS_IMETHODIMP nsNativeDetector::DoIt( - const char* aBuf, PRUint32 aLen, PRBool* oDontFeedMe) -{ - NS_ASSERTION(mObserver != nsnull , "have not init yet"); - - if((nsnull == aBuf) || (nsnull == oDontFeedMe)) - return NS_ERROR_ILLEGAL_VALUE; - - UINT theSize = (UINT) aLen; - nsDetectionConfident aConfidence; - if (SUCCEEDED(DetectCharsetUsingMLang(mMultiLanguage, mMLangConvertCharset, - mCharset, aConfidence, (BYTE *) aBuf, &theSize))) { - if (eNoAnswerMatch != aConfidence) { - mObserver->Notify(mCharset, aConfidence); - } - } - else { - mObserver->Notify("", eNoAnswerMatch); - } - - *oDontFeedMe = PR_TRUE; - - return NS_OK; -} -//---------------------------------------------------------- -NS_IMETHODIMP nsNativeDetector::Done() -{ - NS_ASSERTION(mObserver != nsnull , "have not init yet"); - return NS_OK; -} - -//========================================================== -class nsNativeStringDetector : - public nsIStringCharsetDetector // Implement the interface -{ -public: - NS_DECL_ISUPPORTS - - nsNativeStringDetector(PRUint32 aCodePage); - virtual ~nsNativeStringDetector(); - NS_IMETHOD DoIt(const char* aBuf, PRUint32 aLen, - const char** oCharset, - nsDetectionConfident &oConfident); -protected: - PRUint32 mCodePage; - IMultiLanguage *mMultiLanguage; - char mCharset[65]; -}; - -NS_IMPL_ISUPPORTS1(nsNativeStringDetector, nsIStringCharsetDetector) - -//---------------------------------------------------------- -nsNativeStringDetector::nsNativeStringDetector(PRUint32 aCodePage) -{ - HRESULT hr = CoInitialize(NULL); - mCodePage = aCodePage; - mMultiLanguage = NULL; -} -//---------------------------------------------------------- -nsNativeStringDetector::~nsNativeStringDetector() -{ - if (NULL != mMultiLanguage) - mMultiLanguage->Release(); - CoUninitialize(); -} - -//---------------------------------------------------------- -NS_IMETHODIMP nsNativeStringDetector::DoIt(const char* aBuf, PRUint32 aLen, - const char** oCharset, - nsDetectionConfident &oConfident) -{ - HRESULT hr = S_OK; - - oConfident = eNoAnswerMatch; - *oCharset = ""; - - if (NULL == mMultiLanguage) { - hr = CoCreateInstance(CLSID_CMultiLanguage, NULL, CLSCTX_INPROC_SERVER, - IID_IMultiLanguage, (LPVOID *)&mMultiLanguage); - } - - if (SUCCEEDED(hr)) { - IMLangConvertCharset *aMLangConvertCharset; - DWORD dwProperty = 0; - hr = mMultiLanguage->CreateConvertCharset(mCodePage, 1200, dwProperty, &aMLangConvertCharset); - if (SUCCEEDED(hr)) { - UINT theSize = (UINT) aLen; - nsDetectionConfident aConfidence; - - hr = DetectCharsetUsingMLang(mMultiLanguage, aMLangConvertCharset, - mCharset, aConfidence, (BYTE *) aBuf, &theSize); - if (SUCCEEDED(hr)) { - *oCharset = mCharset; - oConfident = aConfidence; - } - - aMLangConvertCharset->Release(); - } - } - - return SUCCEEDED(hr) ? NS_OK : NS_ERROR_FAILURE; -} - -//========================================================== -class nsNativeDetectorFactory : public nsIFactory { - NS_DECL_ISUPPORTS - -public: - nsNativeDetectorFactory(PRUint32 aCodePage, PRBool stringBase) { - mCodePage = aCodePage; - mStringBase = stringBase; - } - virtual ~nsNativeDetectorFactory() { - } - - NS_IMETHOD CreateInstance(nsISupports* aDelegate, const nsIID& aIID, void** aResult); - NS_IMETHOD LockFactory(PRBool aLock); -private: - PRUint32 mCodePage; - PRBool mStringBase; -}; - -//-------------------------------------------------------------- -NS_IMPL_ISUPPORTS1(nsNativeDetectorFactory, nsIFactory) - -NS_IMETHODIMP nsNativeDetectorFactory::CreateInstance( - nsISupports* aDelegate, const nsIID &aIID, void** aResult) -{ - if(NULL == aResult) - return NS_ERROR_NULL_POINTER; - if(NULL != aDelegate) - return NS_ERROR_NO_AGGREGATION; - - *aResult = NULL; - - nsISupports *inst = nsnull; - if (mStringBase) - inst = (nsISupports *) new nsNativeStringDetector(mCodePage); - else - inst = (nsISupports *) new nsNativeDetector(mCodePage); - if(NULL == inst) { - return NS_ERROR_OUT_OF_MEMORY; - } - NS_ADDREF(inst); // Stabilize - nsresult res =inst->QueryInterface(aIID, aResult); - NS_RELEASE(inst); // Destabilize and avoid leaks. Avoid calling delete - - return res; -} -//-------------------------------------------------------------- -NS_IMETHODIMP nsNativeDetectorFactory::LockFactory(PRBool aLock) -{ - return NS_OK; -} - -//========================================================== -nsIFactory* NEW_JA_NATIVEDETECTOR_FACTORY() { - return new nsNativeDetectorFactory(50932, PR_FALSE); -} -nsIFactory* NEW_JA_STRING_NATIVEDETECTOR_FACTORY() { - return new nsNativeDetectorFactory(50932, PR_TRUE); -} -nsIFactory* NEW_KO_NATIVEDETECTOR_FACTORY() { - return new nsNativeDetectorFactory(50949, PR_FALSE); -} -nsIFactory* NEW_KO_STRING_NATIVEDETECTOR_FACTORY() { - return new nsNativeDetectorFactory(50949, PR_TRUE); -} diff --git a/intl/chardet/src/windows/nsNativeDetectors.h b/intl/chardet/src/windows/nsNativeDetectors.h deleted file mode 100644 index 30f2f262b6b3..000000000000 --- a/intl/chardet/src/windows/nsNativeDetectors.h +++ /dev/null @@ -1,64 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is Mozilla Communicator client code. - * - * The Initial Developer of the Original Code is - * Netscape Communications Corporation. - * Portions created by the Initial Developer are Copyright (C) 1998 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * - * Alternatively, the contents of this file may be used under the terms of - * either of the GNU General Public License Version 2 or later (the "GPL"), - * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#ifndef nsNativeDetectors_h__ -#define nsNativeDetectors_h__ - -#include "nsIFactory.h" - -// {4FE25140-3944-11d3-9142-006008A6EDF6} -#define NS_JA_NATIVE_DETECTOR_CID \ -{ 0x4fe25140, 0x3944, 0x11d3, { 0x91, 0x42, 0x0, 0x60, 0x8, 0xa6, 0xed, 0xf6 } }; - -// {57296530-3644-11d3-9142-006008A6EDF6} -#define NS_JA_NATIVE_STRING_DETECTOR_CID \ -{ 0x57296530, 0x3644, 0x11d3, { 0x91, 0x42, 0x0, 0x60, 0x8, 0xa6, 0xed, 0xf6 } } - -// {4FE25141-3944-11d3-9142-006008A6EDF6} -#define NS_KO_NATIVE_DETECTOR_CID \ -{ 0x4fe25141, 0x3944, 0x11d3, { 0x91, 0x42, 0x0, 0x60, 0x8, 0xa6, 0xed, 0xf6 } }; - -// {4FE25142-3944-11d3-9142-006008A6EDF6} -#define NS_KO_NATIVE_STRING_DETECTOR_CID \ -{ 0x4fe25142, 0x3944, 0x11d3, { 0x91, 0x42, 0x0, 0x60, 0x8, 0xa6, 0xed, 0xf6 } }; - -nsIFactory* NEW_JA_NATIVEDETECTOR_FACTORY(); -nsIFactory* NEW_JA_STRING_NATIVEDETECTOR_FACTORY(); -nsIFactory* NEW_KO_NATIVEDETECTOR_FACTORY(); -nsIFactory* NEW_KO_STRING_NATIVEDETECTOR_FACTORY(); - -#endif /* nsNativeDetectors_h__ */ From 50564642b1cee4e0efba186eebb9aed4ff14c824 Mon Sep 17 00:00:00 2001 From: "masayuki@d-toybox.com" Date: Tue, 25 Mar 2008 13:44:06 -0700 Subject: [PATCH 005/129] Bug 425011 Crash @ConvertCocoaKeyEventToMacEvent with egbridge (Japanese IME) r=josh, sr=vlad, a1.9b5=beltzner --- widget/src/cocoa/nsChildView.mm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/widget/src/cocoa/nsChildView.mm b/widget/src/cocoa/nsChildView.mm index 1eec32174ba1..64a1e0d95b9f 100644 --- a/widget/src/cocoa/nsChildView.mm +++ b/widget/src/cocoa/nsChildView.mm @@ -3452,7 +3452,8 @@ static void ConvertCocoaKeyEventToMacEvent(NSEvent* cocoaEvent, EventRecord& mac if ([cocoaEvent type] == NSFlagsChanged) { macEvent.what = keyType == NS_KEY_DOWN ? keyDown : keyUp; } else { - charCode = [[cocoaEvent characters] characterAtIndex:0]; + if ([[cocoaEvent characters] length] > 0) + charCode = [[cocoaEvent characters] characterAtIndex:0]; if ([cocoaEvent type] == NSKeyDown) macEvent.what = [cocoaEvent isARepeat] ? autoKey : keyDown; else @@ -3989,6 +3990,10 @@ static PRBool IsSpecialGeckoKey(UInt32 macKeyCode) // create native EventRecord for use by plugins EventRecord macEvent; if (mCurKeyEvent) { + // XXX The ASCII characters inputting mode of egbridge (Japanese IME) + // might send the keyDown event with wrong keyboard layout if other + // keyboard layouts are already loaded. In that case, the native event + // doesn't match to this gecko event... ConvertCocoaKeyEventToMacEvent(mCurKeyEvent, macEvent); geckoEvent.nativeMsg = &macEvent; geckoEvent.isShift = ([mCurKeyEvent modifierFlags] & NSShiftKeyMask) != 0; From 54fb411973ab53e439d7f201dc74ae819cdf6672 Mon Sep 17 00:00:00 2001 From: "gavin@gavinsharp.com" Date: Tue, 25 Mar 2008 14:19:35 -0700 Subject: [PATCH 006/129] Bug 425062: add new fuel components to the installer manifests, r=mfinkle, a=beltzner --- browser/installer/unix/packages-static | 2 ++ browser/installer/windows/packages-static | 2 ++ 2 files changed, 4 insertions(+) diff --git a/browser/installer/unix/packages-static b/browser/installer/unix/packages-static index ab2e3a719ca8..3c3d332773d1 100644 --- a/browser/installer/unix/packages-static +++ b/browser/installer/unix/packages-static @@ -103,6 +103,7 @@ bin/components/downloads.xpt bin/components/editor.xpt bin/components/embed_base.xpt bin/components/exthandler.xpt +bin/components/exthelper.xpt bin/components/fastfind.xpt bin/components/feeds.xpt bin/components/filepicker.xpt @@ -193,6 +194,7 @@ bin/components/shellservice.xpt bin/components/FeedProcessor.js bin/components/FeedConverter.js bin/components/FeedWriter.js +bin/components/extApplication.js bin/components/fuelApplication.js bin/components/WebContentConverter.js bin/components/nsAddonRepository.js diff --git a/browser/installer/windows/packages-static b/browser/installer/windows/packages-static index c7973956ee24..7ea29a460199 100644 --- a/browser/installer/windows/packages-static +++ b/browser/installer/windows/packages-static @@ -114,6 +114,7 @@ bin\components\downloads.xpt bin\components\editor.xpt bin\components\embed_base.xpt bin\components\exthandler.xpt +bin\components\exthelper.xpt bin\components\fastfind.xpt bin\components\feeds.xpt bin\components\find.xpt @@ -201,6 +202,7 @@ bin\components\FeedProcessor.js bin\components\FeedConverter.js bin\components\FeedWriter.js bin\components\fuelApplication.js +bin\components\extApplication.js bin\components\WebContentConverter.js bin\components\nsAddonRepository.js bin\components\nsBrowserContentHandler.js From 4db276120590ee9e2837cf628313c3335c437ff2 Mon Sep 17 00:00:00 2001 From: "gavin@gavinsharp.com" Date: Tue, 25 Mar 2008 14:23:53 -0700 Subject: [PATCH 007/129] Bug 425062: undo part of the initial patch (extApplication.js doesn't need to be packaged) --- browser/installer/unix/packages-static | 1 - browser/installer/windows/packages-static | 1 - 2 files changed, 2 deletions(-) diff --git a/browser/installer/unix/packages-static b/browser/installer/unix/packages-static index 3c3d332773d1..5b48d4a18c5b 100644 --- a/browser/installer/unix/packages-static +++ b/browser/installer/unix/packages-static @@ -194,7 +194,6 @@ bin/components/shellservice.xpt bin/components/FeedProcessor.js bin/components/FeedConverter.js bin/components/FeedWriter.js -bin/components/extApplication.js bin/components/fuelApplication.js bin/components/WebContentConverter.js bin/components/nsAddonRepository.js diff --git a/browser/installer/windows/packages-static b/browser/installer/windows/packages-static index 7ea29a460199..eba4d64efdfe 100644 --- a/browser/installer/windows/packages-static +++ b/browser/installer/windows/packages-static @@ -202,7 +202,6 @@ bin\components\FeedProcessor.js bin\components\FeedConverter.js bin\components\FeedWriter.js bin\components\fuelApplication.js -bin\components\extApplication.js bin\components\WebContentConverter.js bin\components\nsAddonRepository.js bin\components\nsBrowserContentHandler.js From 796151f650d3ec45ac37f91097b950d47c6a16bf Mon Sep 17 00:00:00 2001 From: "kaie@kuix.de" Date: Tue, 25 Mar 2008 14:49:35 -0700 Subject: [PATCH 008/129] Bug 420187, hang in nsNSSHttpRequestSession::internal_send_receive_attempt Follow up patch to fix leak tinderbox bustage, r=rrelyea --- security/manager/ssl/src/nsNSSCallbacks.cpp | 106 +++++++++----------- security/manager/ssl/src/nsNSSCallbacks.h | 8 ++ 2 files changed, 54 insertions(+), 60 deletions(-) diff --git a/security/manager/ssl/src/nsNSSCallbacks.cpp b/security/manager/ssl/src/nsNSSCallbacks.cpp index a94e9bfae458..79aa5d932691 100644 --- a/security/manager/ssl/src/nsNSSCallbacks.cpp +++ b/security/manager/ssl/src/nsNSSCallbacks.cpp @@ -86,29 +86,15 @@ public: ~nsHTTPDownloadEvent(); NS_IMETHOD Run(); - void Cancel(); nsNSSHttpRequestSession *mRequestSession; // no ownership nsCOMPtr mListener; PRBool mResponsibleForDoneSignal; - -protected: - PRLock *mLock; - - // no nsCOMPtr. When I use it, I get assertions about - // loadgroup not being thread safe. - // So, let's use a raw pointer and ensure we only create and destroy - // it on the network thread ourselves. - nsILoadGroup *mLoadGroup; - PRThread *mLoadGroupOwnerThread; }; nsHTTPDownloadEvent::nsHTTPDownloadEvent() :mResponsibleForDoneSignal(PR_TRUE) -,mLock(nsnull) -,mLoadGroup(nsnull) -,mLoadGroupOwnerThread(nsnull) { } @@ -116,17 +102,11 @@ nsHTTPDownloadEvent::~nsHTTPDownloadEvent() { if (mResponsibleForDoneSignal && mListener) mListener->send_done_signal(); - if (mLock) - PR_DestroyLock(mLock); } NS_IMETHODIMP nsHTTPDownloadEvent::Run() { - mLock = PR_NewLock(); - if (!mLock) - return NS_ERROR_OUT_OF_MEMORY; - if (!mListener) return NS_OK; @@ -141,16 +121,8 @@ nsHTTPDownloadEvent::Run() // Create a loadgroup for this new channel. This way if the channel // is redirected, we'll have a way to cancel the resulting channel. - nsCOMPtr lg; - { - nsAutoLock locker(mLock); - lg = do_CreateInstance(NS_LOADGROUP_CONTRACTID); - mLoadGroup = lg.get(); - NS_ADDREF(mLoadGroup); - mLoadGroupOwnerThread = PR_GetCurrentThread(); - } + nsCOMPtr lg = do_CreateInstance(NS_LOADGROUP_CONTRACTID); chan->SetLoadGroup(lg); - lg = nsnull; if (mRequestSession->mHasPostData) { @@ -179,6 +151,10 @@ nsHTTPDownloadEvent::Run() mResponsibleForDoneSignal = PR_FALSE; mListener->mResponsibleForDoneSignal = PR_TRUE; + mListener->mLoadGroup = lg.get(); + NS_ADDREF(mListener->mLoadGroup); + mListener->mLoadGroupOwnerThread = PR_GetCurrentThread(); + rv = NS_NewStreamLoader(getter_AddRefs(mListener->mLoader), mListener); @@ -188,47 +164,25 @@ nsHTTPDownloadEvent::Run() if (NS_FAILED(rv)) { mListener->mResponsibleForDoneSignal = PR_FALSE; mResponsibleForDoneSignal = PR_TRUE; + + NS_RELEASE(mListener->mLoadGroup); + mListener->mLoadGroup = nsnull; + mListener->mLoadGroupOwnerThread = nsnull; } return NS_OK; } struct nsCancelHTTPDownloadEvent : nsRunnable { - nsRefPtr mEvent; + nsCOMPtr mListener; NS_IMETHOD Run() { - mEvent->Cancel(); - mEvent = nsnull; + mListener->FreeLoadGroup(PR_TRUE); + mListener = nsnull; return NS_OK; } }; -void -nsHTTPDownloadEvent::Cancel() -{ - nsILoadGroup *lg = nsnull; - - if (mLock) { - nsAutoLock locker(mLock); - - if (mLoadGroup) { - if (mLoadGroupOwnerThread != PR_GetCurrentThread()) { - NS_ASSERTION(PR_FALSE, - "attempt to access nsHTTPDownloadEvent::mLoadGroup on multiple threads"); - } - else { - lg = mLoadGroup; - mLoadGroup = nsnull; - } - } - } - - if (lg) { - lg->Cancel(NS_ERROR_ABORT); - NS_RELEASE(lg); - } -} - SECStatus nsNSSHttpServerSession::createSessionFcn(const char *host, PRUint16 portnum, SEC_HTTP_SERVER_SESSION *pSession) @@ -471,7 +425,7 @@ nsNSSHttpRequestSession::internal_send_receive_attempt(PRBool &retryable_error, request_canceled = PR_TRUE; nsRefPtr cancelevent = new nsCancelHTTPDownloadEvent; - cancelevent->mEvent = event; + cancelevent->mListener = mListener; rv = NS_DispatchToMainThread(cancelevent); if (NS_FAILED(rv)) { NS_WARNING("cannot post cancel event"); @@ -583,7 +537,9 @@ nsHTTPListener::nsHTTPListener() mLock(nsnull), mCondition(nsnull), mWaitFlag(PR_TRUE), - mResponsibleForDoneSignal(PR_FALSE) + mResponsibleForDoneSignal(PR_FALSE), + mLoadGroup(nsnull), + mLoadGroupOwnerThread(nsnull) { } @@ -623,6 +579,34 @@ nsHTTPListener::~nsHTTPListener() NS_IMPL_THREADSAFE_ISUPPORTS1(nsHTTPListener, nsIStreamLoaderObserver) +void +nsHTTPListener::FreeLoadGroup(PRBool aCancelLoad) +{ + nsILoadGroup *lg = nsnull; + + if (mLock) { + nsAutoLock locker(mLock); + + if (mLoadGroup) { + if (mLoadGroupOwnerThread != PR_GetCurrentThread()) { + NS_ASSERTION(PR_FALSE, + "attempt to access nsHTTPDownloadEvent::mLoadGroup on multiple threads, leaking it!"); + } + else { + lg = mLoadGroup; + mLoadGroup = nsnull; + } + } + } + + if (lg) { + if (aCancelLoad) { + lg->Cancel(NS_ERROR_ABORT); + } + NS_RELEASE(lg); + } +} + NS_IMETHODIMP nsHTTPListener::OnStreamComplete(nsIStreamLoader* aLoader, nsISupports* aContext, @@ -632,6 +616,8 @@ nsHTTPListener::OnStreamComplete(nsIStreamLoader* aLoader, { mResultCode = aStatus; + FreeLoadGroup(PR_FALSE); + nsCOMPtr req; nsCOMPtr hchan; diff --git a/security/manager/ssl/src/nsNSSCallbacks.h b/security/manager/ssl/src/nsNSSCallbacks.h index 68d5f358a0f6..abf314df902e 100644 --- a/security/manager/ssl/src/nsNSSCallbacks.h +++ b/security/manager/ssl/src/nsNSSCallbacks.h @@ -86,6 +86,14 @@ public: PRBool mResponsibleForDoneSignal; void send_done_signal(); + + // no nsCOMPtr. When I use it, I get assertions about + // loadgroup not being thread safe. + // So, let's use a raw pointer and ensure we only create and destroy + // it on the network thread ourselves. + nsILoadGroup *mLoadGroup; + PRThread *mLoadGroupOwnerThread; + void FreeLoadGroup(PRBool aCancelLoad); }; class nsNSSHttpServerSession From 388de4b8b8689faa10395e5e1a096f06079b9da4 Mon Sep 17 00:00:00 2001 From: "reed@reedloden.com" Date: Tue, 25 Mar 2008 16:16:21 -0700 Subject: [PATCH 009/129] Bug 422025 - [p=jst@mozilla.org (Johnny Stenback [jst]) r+sr=mrbkap a1.9b5=schrep] --- js/src/xpconnect/src/XPCWrapper.cpp | 2 +- js/src/xpconnect/src/xpcconvert.cpp | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/js/src/xpconnect/src/XPCWrapper.cpp b/js/src/xpconnect/src/XPCWrapper.cpp index d6bde79820f7..c823bc3a59e3 100644 --- a/js/src/xpconnect/src/XPCWrapper.cpp +++ b/js/src/xpconnect/src/XPCWrapper.cpp @@ -215,7 +215,7 @@ XPCWrapper::AddProperty(JSContext *cx, JSObject *wrapperObj, attrs = sprop->attrs; if (attrs & JSPROP_GETTER) { - getter = sprop->getter; + getter = sprop->getter; } if (attrs & JSPROP_SETTER) { setter = sprop->setter; diff --git a/js/src/xpconnect/src/xpcconvert.cpp b/js/src/xpconnect/src/xpcconvert.cpp index 381178c8cacf..35121aba279b 100644 --- a/js/src/xpconnect/src/xpcconvert.cpp +++ b/js/src/xpconnect/src/xpcconvert.cpp @@ -1219,6 +1219,24 @@ XPCConvert::NativeInterface2JSObject(XPCCallContext& ccx, *dest = objHolder; return JS_TRUE; } + + // Reaching across scopes from content code. Wrap + // the new object in a XOW. + jsval v = OBJECT_TO_JSVAL(flat); + XPCJSObjectHolder *objHolder = nsnull; + if (!XPC_XOW_WrapObject(ccx, scope, &v) || + !(objHolder = + XPCJSObjectHolder::newHolder(ccx, + JSVAL_TO_OBJECT(v)))) + { + NS_RELEASE(wrapper); + return JS_FALSE; + } + + NS_ADDREF(objHolder); + NS_RELEASE(wrapper); + *dest = objHolder; + return JS_TRUE; } } From 82ef7623ceec2b36bbc4ae5366664296eae73c8c Mon Sep 17 00:00:00 2001 From: "reed@reedloden.com" Date: Tue, 25 Mar 2008 16:18:26 -0700 Subject: [PATCH 010/129] Bug 424415 - "Revert languages icon (Replace UN icon)" [p=beltzner@mozilla.com (Mike Beltzner) a1.9b5=beltzner] --- .../mozapps/extensions/viewButtons-aero.png | Bin 33159 -> 11874 bytes .../mozapps/extensions/viewButtons.png | Bin 32407 -> 11494 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/toolkit/themes/winstripe/mozapps/extensions/viewButtons-aero.png b/toolkit/themes/winstripe/mozapps/extensions/viewButtons-aero.png index 1d31bec2a7830629a145661d7f73bab05c71e4dd..e51e102021abbcf23226b5639ce26bb543708552 100755 GIT binary patch literal 11874 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 literal 33159 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 diff --git a/toolkit/themes/winstripe/mozapps/extensions/viewButtons.png b/toolkit/themes/winstripe/mozapps/extensions/viewButtons.png index d68dc77377001d6c9b7f89a1b0360f5c917409f0..2fd043c658f0cac9a011b4d6b0b34a0237435df0 100755 GIT binary patch literal 11494 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 literal 32407 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 From 48d36e4da60a0f5d4ebbc98dbe836b8d421204c1 Mon Sep 17 00:00:00 2001 From: "reed@reedloden.com" Date: Tue, 25 Mar 2008 16:19:46 -0700 Subject: [PATCH 011/129] Bug 423385 - "floating parent does not size correctly with floating child using negative margin" [p=roc@ocallahan.org (Robert O'Callahan [roc]) r+sr=dbaron a1.9b5=beltzner] --- layout/generic/nsFrame.cpp | 9 ++++++--- layout/reftests/bugs/reftest.list | 1 + 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/layout/generic/nsFrame.cpp b/layout/generic/nsFrame.cpp index 472c1c60f531..5ccd43f5cf8f 100644 --- a/layout/generic/nsFrame.cpp +++ b/layout/generic/nsFrame.cpp @@ -2871,11 +2871,14 @@ nsIFrame::InlinePrefWidthData::ForceBreak(nsIRenderingContext *aRenderingContext nscoord &floats_cur = floatDisp->mFloats == NS_STYLE_FLOAT_LEFT ? floats_cur_left : floats_cur_right; - floats_cur = - NSCoordSaturatingAdd(floats_cur, + nscoord floatWidth = nsLayoutUtils::IntrinsicForContainer(aRenderingContext, floatFrame, - nsLayoutUtils::PREF_WIDTH)); + nsLayoutUtils::PREF_WIDTH); + // Negative-width floats don't change the available space so they + // shouldn't change our intrinsic line width either. + floats_cur = + NSCoordSaturatingAdd(floats_cur, PR_MAX(0, floatWidth)); } nscoord floats_cur = diff --git a/layout/reftests/bugs/reftest.list b/layout/reftests/bugs/reftest.list index 6acf04090de3..d9325d84533b 100644 --- a/layout/reftests/bugs/reftest.list +++ b/layout/reftests/bugs/reftest.list @@ -773,5 +773,6 @@ fails == 413027-3.html 413027-3-ref.html == 421419-1.html 421419-1-ref.html == 422394-1.html 422394-1-ref.html == 423130-1.html 423130-1-ref.html +== 423385-1.html 423385-1-ref.html == 423599-1.html 423599-1-ref.html == 423676-1.html 423676-1-ref.html From 3d8bc575ab63f2e8ab690623588cd058953614b9 Mon Sep 17 00:00:00 2001 From: "reed@reedloden.com" Date: Tue, 25 Mar 2008 16:29:18 -0700 Subject: [PATCH 012/129] Bug 424954 - "Crash [@ js_GetWrappedObject]" [p=mrbkap@gmail.com (Blake Kaplan) r=brendan a1.9b5=beltzner] --- js/src/jsarray.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/src/jsarray.c b/js/src/jsarray.c index 59eff2cfa4d4..e2b3f144f674 100644 --- a/js/src/jsarray.c +++ b/js/src/jsarray.c @@ -2375,12 +2375,12 @@ array_concat(JSContext *cx, uintN argc, jsval *vp) if (!ok) goto out; v = argv[i]; - if (JSVAL_IS_OBJECT(v)) { + if (!JSVAL_IS_PRIMITIVE(v)) { JSObject *wobj; aobj = JSVAL_TO_OBJECT(v); wobj = js_GetWrappedObject(cx, aobj); - if (aobj && OBJ_IS_ARRAY(cx, wobj)) { + if (OBJ_IS_ARRAY(cx, wobj)) { ok = OBJ_GET_PROPERTY(cx, aobj, ATOM_TO_JSID(cx->runtime->atomState .lengthAtom), From 7262f2d600a114881252436032bf9c04674581be Mon Sep 17 00:00:00 2001 From: "mozilla.mano@sent.com" Date: Tue, 25 Mar 2008 17:23:38 -0700 Subject: [PATCH 013/129] Bug 425010 - Feed subscription UI is broken. r=gavin, a=mconnor. --- browser/components/feeds/src/FeedWriter.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/browser/components/feeds/src/FeedWriter.js b/browser/components/feeds/src/FeedWriter.js index 087ed4530c13..424a25e16333 100755 --- a/browser/components/feeds/src/FeedWriter.js +++ b/browser/components/feeds/src/FeedWriter.js @@ -820,16 +820,16 @@ FeedWriter.prototype = { var stringLabel = "alwaysUseForFeeds"; switch (this._getFeedType()) { case Ci.nsIFeed.TYPE_VIDEO: - stringlabel = "alwaysUseForVideoPodcasts"; + stringLabel = "alwaysUseForVideoPodcasts"; break; case Ci.nsIFeed.TYPE_AUDIO: - stringlabel = "alwaysUseForAudioPodcasts"; + stringLabel = "alwaysUseForAudioPodcasts"; break; } this._contentSandbox.checkbox = checkbox; - this._contentSandbox.label = this._getFormattedString(stringlabel, [handlerName]); + this._contentSandbox.label = this._getFormattedString(stringLabel, [handlerName]); var codeStr = "checkbox.setAttribute('label', label);"; Cu.evalInSandbox(codeStr, this._contentSandbox); From df117726e1092d81dbce96ead9ddfc24fdef64ae Mon Sep 17 00:00:00 2001 From: "karlt+@karlt.net" Date: Tue, 25 Mar 2008 18:30:39 -0700 Subject: [PATCH 014/129] Bug 421955: combining mark at start of text run rendered as NUL hex box or garbage --- layout/reftests/bugs/421955-1-ref.html | 6 ++++++ layout/reftests/bugs/421955-1.html | 6 ++++++ layout/reftests/bugs/reftest.list | 1 + 3 files changed, 13 insertions(+) create mode 100644 layout/reftests/bugs/421955-1-ref.html create mode 100644 layout/reftests/bugs/421955-1.html diff --git a/layout/reftests/bugs/421955-1-ref.html b/layout/reftests/bugs/421955-1-ref.html new file mode 100644 index 000000000000..c42c5de5de16 --- /dev/null +++ b/layout/reftests/bugs/421955-1-ref.html @@ -0,0 +1,6 @@ + + + +

̅hidden

+ + diff --git a/layout/reftests/bugs/421955-1.html b/layout/reftests/bugs/421955-1.html new file mode 100644 index 000000000000..de13d218fb3b --- /dev/null +++ b/layout/reftests/bugs/421955-1.html @@ -0,0 +1,6 @@ + + + +

̅

+ + diff --git a/layout/reftests/bugs/reftest.list b/layout/reftests/bugs/reftest.list index d9325d84533b..bdad1e0dcc56 100644 --- a/layout/reftests/bugs/reftest.list +++ b/layout/reftests/bugs/reftest.list @@ -771,6 +771,7 @@ fails == 413027-3.html 413027-3-ref.html == 421069-ref.html 421069-ref2.html == 421234-1.html 421234-1-ref.html == 421419-1.html 421419-1-ref.html +== 421955-1.html 421955-1-ref.html == 422394-1.html 422394-1-ref.html == 423130-1.html 423130-1-ref.html == 423385-1.html 423385-1-ref.html From 5fcdbd429796ff3aceca15335217242b9cc8f1fd Mon Sep 17 00:00:00 2001 From: "jonas@sicking.cc" Date: Tue, 25 Mar 2008 19:46:08 -0700 Subject: [PATCH 015/129] Bug 424923: Remove support for cross-site XHR. r/sr=jst for code changes --- content/base/src/Makefile.in | 1 - content/base/src/nsCrossSiteListenerProxy.cpp | 969 ------------------ content/base/src/nsCrossSiteListenerProxy.h | 109 -- content/base/src/nsSyncLoadService.cpp | 23 +- content/base/src/nsXMLHttpRequest.cpp | 487 +-------- content/base/src/nsXMLHttpRequest.h | 86 -- content/base/test/Makefile.in | 32 +- .../file_CrossSiteXHR2_fail1.xml^headers^ | 2 - .../base/test/file_CrossSiteXHR2_fail2.xml | 2 - .../base/test/file_CrossSiteXHR2_inner.html | 104 -- .../base/test/file_CrossSiteXHR2_pass1.xml | 1 - .../file_CrossSiteXHR2_pass1.xml^headers^ | 2 - .../base/test/file_CrossSiteXHR2_pass2.xml | 2 - .../base/test/file_CrossSiteXHR2_pass3.xml | 1 - .../file_CrossSiteXHR2_pass3.xml^headers^ | 2 - .../file_CrossSiteXHR2_pass3_redirect.xml | 2 - .../base/test/file_CrossSiteXHR3_inner.html | 98 -- .../base/test/file_CrossSiteXHR3_pass1.xml | 1 - .../file_CrossSiteXHR3_pass1.xml^headers^ | 2 - content/base/test/file_CrossSiteXHR_fail1.xml | 1 - content/base/test/file_CrossSiteXHR_fail2.xml | 2 - .../test/file_CrossSiteXHR_fail2.xml^headers^ | 2 - content/base/test/file_CrossSiteXHR_fail3.xml | 4 - content/base/test/file_CrossSiteXHR_fail4.xml | 3 - content/base/test/file_CrossSiteXHR_pass1.xml | 1 - .../test/file_CrossSiteXHR_pass1.xml^headers^ | 2 - content/base/test/file_CrossSiteXHR_pass2.xml | 2 - content/base/test/file_CrossSiteXHR_pass3.xml | 5 - content/base/test/file_XHR_fail1.txt | 1 + content/base/test/file_XHR_fail1.txt^headers^ | 2 + content/base/test/file_XHR_fail1b.txt | 1 + ...sSiteXHR2_fail1.xml => file_XHR_pass1.xml} | 0 content/base/test/file_XHR_pass2.txt | 1 + content/base/test/file_XHR_pass3.txt | 1 + content/base/test/file_XHR_pass3.txt^headers^ | 2 + content/base/test/test_CrossSiteXHR2.html | 37 - content/base/test/test_CrossSiteXHR3.html | 37 - .../{test_CrossSiteXHR.html => test_XHR.html} | 29 +- content/html/document/src/nsHTMLDocument.cpp | 8 - content/html/document/src/nsHTMLDocument.h | 7 - content/html/document/src/nsIHTMLDocument.h | 5 - .../src/xslt/txMozillaStylesheetCompiler.cpp | 95 +- 42 files changed, 114 insertions(+), 2060 deletions(-) delete mode 100644 content/base/src/nsCrossSiteListenerProxy.cpp delete mode 100644 content/base/src/nsCrossSiteListenerProxy.h delete mode 100644 content/base/test/file_CrossSiteXHR2_fail1.xml^headers^ delete mode 100644 content/base/test/file_CrossSiteXHR2_fail2.xml delete mode 100644 content/base/test/file_CrossSiteXHR2_inner.html delete mode 100644 content/base/test/file_CrossSiteXHR2_pass1.xml delete mode 100644 content/base/test/file_CrossSiteXHR2_pass1.xml^headers^ delete mode 100644 content/base/test/file_CrossSiteXHR2_pass2.xml delete mode 100644 content/base/test/file_CrossSiteXHR2_pass3.xml delete mode 100644 content/base/test/file_CrossSiteXHR2_pass3.xml^headers^ delete mode 100644 content/base/test/file_CrossSiteXHR2_pass3_redirect.xml delete mode 100644 content/base/test/file_CrossSiteXHR3_inner.html delete mode 100644 content/base/test/file_CrossSiteXHR3_pass1.xml delete mode 100644 content/base/test/file_CrossSiteXHR3_pass1.xml^headers^ delete mode 100644 content/base/test/file_CrossSiteXHR_fail1.xml delete mode 100644 content/base/test/file_CrossSiteXHR_fail2.xml delete mode 100644 content/base/test/file_CrossSiteXHR_fail2.xml^headers^ delete mode 100644 content/base/test/file_CrossSiteXHR_fail3.xml delete mode 100644 content/base/test/file_CrossSiteXHR_fail4.xml delete mode 100644 content/base/test/file_CrossSiteXHR_pass1.xml delete mode 100644 content/base/test/file_CrossSiteXHR_pass1.xml^headers^ delete mode 100644 content/base/test/file_CrossSiteXHR_pass2.xml delete mode 100644 content/base/test/file_CrossSiteXHR_pass3.xml create mode 100644 content/base/test/file_XHR_fail1.txt create mode 100644 content/base/test/file_XHR_fail1.txt^headers^ create mode 100644 content/base/test/file_XHR_fail1b.txt rename content/base/test/{file_CrossSiteXHR2_fail1.xml => file_XHR_pass1.xml} (100%) create mode 100644 content/base/test/file_XHR_pass2.txt create mode 100644 content/base/test/file_XHR_pass3.txt create mode 100644 content/base/test/file_XHR_pass3.txt^headers^ delete mode 100644 content/base/test/test_CrossSiteXHR2.html delete mode 100644 content/base/test/test_CrossSiteXHR3.html rename content/base/test/{test_CrossSiteXHR.html => test_XHR.html} (62%) diff --git a/content/base/src/Makefile.in b/content/base/src/Makefile.in index 43a5dab73453..43360033e3f1 100644 --- a/content/base/src/Makefile.in +++ b/content/base/src/Makefile.in @@ -117,7 +117,6 @@ CPPSRCS = \ nsContentSink.cpp \ nsContentUtils.cpp \ nsCopySupport.cpp \ - nsCrossSiteListenerProxy.cpp \ nsDataDocumentContentPolicy.cpp \ nsDOMAttribute.cpp \ nsDOMAttributeMap.cpp \ diff --git a/content/base/src/nsCrossSiteListenerProxy.cpp b/content/base/src/nsCrossSiteListenerProxy.cpp deleted file mode 100644 index 7110626d539c..000000000000 --- a/content/base/src/nsCrossSiteListenerProxy.cpp +++ /dev/null @@ -1,969 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mozilla Foundation. - * Portions created by the Initial Developer are Copyright (C) 2007 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * Jonas Sicking (Original Author) - * - * Alternatively, the contents of this file may be used under the terms of - * either of the GNU General Public License Version 2 or later (the "GPL"), - * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#include "nsCrossSiteListenerProxy.h" -#include "nsIChannel.h" -#include "nsIHttpChannel.h" -#include "nsDOMError.h" -#include "nsContentUtils.h" -#include "nsIScriptSecurityManager.h" -#include "nsNetUtil.h" -#include "nsIParser.h" -#include "nsParserCIID.h" -#include "nsICharsetAlias.h" -#include "nsMimeTypes.h" -#include "nsIStreamConverterService.h" -#include "nsStringStream.h" -#include "nsParserUtils.h" -#include "nsGkAtoms.h" -#include "nsWhitespaceTokenizer.h" -#include "nsIChannelEventSink.h" - -static NS_DEFINE_CID(kCParserCID, NS_PARSER_CID); - -NS_IMPL_ISUPPORTS7(nsCrossSiteListenerProxy, nsIStreamListener, - nsIRequestObserver, nsIContentSink, nsIXMLContentSink, - nsIExpatSink, nsIChannelEventSink, nsIInterfaceRequestor) - -nsCrossSiteListenerProxy::nsCrossSiteListenerProxy(nsIStreamListener* aOuter, - nsIPrincipal* aRequestingPrincipal, - nsIChannel* aChannel, - nsresult* aResult) - : mOuterListener(aOuter), - mRequestingPrincipal(aRequestingPrincipal), - mAcceptState(eNotSet), - mHasForwardedRequest(PR_FALSE), - mHasBeenCrossSite(PR_FALSE) -{ - aRequestingPrincipal->GetURI(getter_AddRefs(mRequestingURI)); - aChannel->GetNotificationCallbacks(getter_AddRefs(mOuterNotificationCallbacks)); - aChannel->SetNotificationCallbacks(this); - - *aResult = UpdateChannel(aChannel); -} - -nsresult -nsCrossSiteListenerProxy::ForwardRequest(PRBool aFromStop) -{ - if (mHasForwardedRequest) { - return NS_OK; - } - - mHasForwardedRequest = PR_TRUE; - - if (mParser) { - mParser->Terminate(); - mParser = nsnull; - mParserListener = nsnull; - } - - if (mAcceptState != eAccept) { - mAcceptState = eDeny; - mOuterRequest->Cancel(NS_ERROR_DOM_BAD_URI); - mOuterListener->OnStartRequest(mOuterRequest, mOuterContext); - - // Only call OnStopRequest here if we were called from OnStopRequest. - // Otherwise the call to Cancel will make us get an OnStopRequest later - // so we'll forward OnStopRequest then. - if (aFromStop) { - mOuterListener->OnStopRequest(mOuterRequest, mOuterContext, - NS_ERROR_DOM_BAD_URI); - } - - // Clear this data just in case since it should never be forwarded. - mStoredData.Truncate(); - - return NS_ERROR_DOM_BAD_URI; - } - - nsresult rv = mOuterListener->OnStartRequest(mOuterRequest, mOuterContext); - NS_ENSURE_SUCCESS(rv, rv); - - if (!mStoredData.IsEmpty()) { - nsCOMPtr stream; - rv = NS_NewCStringInputStream(getter_AddRefs(stream), mStoredData); - NS_ENSURE_SUCCESS(rv, rv); - - rv = mOuterListener->OnDataAvailable(mOuterRequest, mOuterContext, stream, - 0, mStoredData.Length()); - NS_ENSURE_SUCCESS(rv, rv); - } - - return NS_OK; -} - -NS_IMETHODIMP -nsCrossSiteListenerProxy::OnStartRequest(nsIRequest* aRequest, - nsISupports* aContext) -{ - mOuterRequest = aRequest; - mOuterContext = aContext; - - // Check if the request failed - nsresult status; - nsresult rv = aRequest->GetStatus(&status); - NS_ENSURE_SUCCESS(rv, rv); - if (NS_FAILED(status)) { - mAcceptState = eDeny; - return ForwardRequest(PR_FALSE); - } - - // Check if this was actually a cross domain request - nsCOMPtr channel = do_QueryInterface(aRequest); - if (!channel) { - return NS_ERROR_DOM_BAD_URI; - } - nsCOMPtr finalURI; - channel->GetURI(getter_AddRefs(finalURI)); - - if (!mHasBeenCrossSite) { - mAcceptState = eAccept; - return ForwardRequest(PR_FALSE); - } - - nsCOMPtr http = do_QueryInterface(channel); - if (http) { - PRBool succeeded; - rv = http->GetRequestSucceeded(&succeeded); - NS_ENSURE_SUCCESS(rv, rv); - - if (!succeeded) { - mAcceptState = eDeny; - return ForwardRequest(PR_FALSE); - } - } - - // Get the list of subdomains out of mRequestingURI - nsCString host; - rv = mRequestingURI->GetAsciiHost(host); - NS_ENSURE_SUCCESS(rv, rv); - - PRInt32 nextDot, currDot = 0; - while ((nextDot = host.FindChar('.', currDot)) != -1) { - mReqSubdomains.AppendElement(Substring(host, currDot, nextDot - currDot)); - currDot = nextDot + 1; - } - mReqSubdomains.AppendElement(Substring(host, currDot)); - - // Check the Access-Control header - if (http) { - nsCAutoString ac; - rv = http->GetResponseHeader(NS_LITERAL_CSTRING("Access-Control"), ac); - - if (NS_SUCCEEDED(rv)) { - CheckHeader(ac); - } - } - - if (mAcceptState == eDeny) { - return ForwardRequest(PR_FALSE); - } - - // Set up a parser with us as a sink to look for PIs - mParser = do_CreateInstance(kCParserCID, &rv); - NS_ENSURE_SUCCESS(rv, rv); - - mParserListener = do_QueryInterface(mParser); - - mParser->SetCommand(kLoadAsData); - mParser->SetContentSink(this); - mParser->Parse(finalURI); - - // check channel's charset... - nsCAutoString charset(NS_LITERAL_CSTRING("UTF-8")); - PRInt32 charsetSource = kCharsetFromDocTypeDefault; - nsCAutoString charsetVal; - rv = channel->GetContentCharset(charsetVal); - if (NS_SUCCEEDED(rv)) { - nsCOMPtr calias = - do_GetService(NS_CHARSETALIAS_CONTRACTID); - - if (calias) { - nsCAutoString preferred; - rv = calias->GetPreferred(charsetVal, preferred); - if (NS_SUCCEEDED(rv)) { - charset = preferred; - charsetSource = kCharsetFromChannel; - } - } - } - - mParser->SetDocumentCharset(charset, charsetSource); - - nsCAutoString contentType; - channel->GetContentType(contentType); - - // Time to sniff! Note: this should go away once file channels do - // sniffing themselves. - PRBool sniff; - if (NS_SUCCEEDED(finalURI->SchemeIs("file", &sniff)) && sniff && - contentType.Equals(UNKNOWN_CONTENT_TYPE)) { - nsCOMPtr serv = - do_GetService("@mozilla.org/streamConverters;1", &rv); - if (NS_SUCCEEDED(rv)) { - nsCOMPtr converter; - rv = serv->AsyncConvertData(UNKNOWN_CONTENT_TYPE, - "*/*", - mParserListener, - aContext, - getter_AddRefs(converter)); - if (NS_SUCCEEDED(rv)) { - mParserListener = converter; - } - } - } - - // Hold a local reference to make sure the parser doesn't go away - nsCOMPtr stackedListener = mParserListener; - return stackedListener->OnStartRequest(aRequest, aContext); -} - -NS_IMETHODIMP -nsCrossSiteListenerProxy::OnStopRequest(nsIRequest* aRequest, - nsISupports* aContext, - nsresult aStatusCode) -{ - if (mHasForwardedRequest) { - return mOuterListener->OnStopRequest(aRequest, aContext, aStatusCode); - } - - mAcceptState = eDeny; - return ForwardRequest(PR_TRUE); -} - -NS_METHOD -StringSegmentWriter(nsIInputStream *aInStream, - void *aClosure, - const char *aFromSegment, - PRUint32 aToOffset, - PRUint32 aCount, - PRUint32 *aWriteCount) -{ - nsCString* dest = static_cast(aClosure); - - dest->Append(aFromSegment, aCount); - *aWriteCount = aCount; - - return NS_OK; -} - -NS_IMETHODIMP -nsCrossSiteListenerProxy::OnDataAvailable(nsIRequest* aRequest, - nsISupports* aContext, - nsIInputStream* aInputStream, - PRUint32 aOffset, - PRUint32 aCount) -{ - if (mHasForwardedRequest) { - if (mAcceptState != eAccept) { - return NS_ERROR_DOM_BAD_URI; - } - return mOuterListener->OnDataAvailable(aRequest, aContext, aInputStream, - aOffset, aCount); - } - - NS_ASSERTION(mStoredData.Length() == aOffset, - "Stored wrong amount of data"); - - PRUint32 read; - nsresult rv = aInputStream->ReadSegments(StringSegmentWriter, &mStoredData, - aCount, &read); - NS_ENSURE_SUCCESS(rv, rv); - NS_ASSERTION(read == aCount, "didn't store all of the stream"); - - nsCOMPtr stream; - rv = NS_NewCStringInputStream(getter_AddRefs(stream), - Substring(mStoredData, aOffset)); - NS_ENSURE_SUCCESS(rv, rv); - - // Hold a local reference to make sure the parser doesn't go away - nsCOMPtr stackedListener = mParserListener; - rv = stackedListener->OnDataAvailable(aRequest, aContext, stream, aOffset, - aCount); - // When we forward the request we also terminate the parsing which will - // result in an error bubbling up to here. We want to ignore the error - // in that case. - if (mHasForwardedRequest) { - rv = mAcceptState == eAccept ? NS_OK : NS_ERROR_DOM_BAD_URI; - } - return rv; -} - -NS_IMETHODIMP -nsCrossSiteListenerProxy::HandleStartElement(const PRUnichar *aName, - const PRUnichar **aAtts, - PRUint32 aAttsCount, - PRInt32 aIndex, - PRUint32 aLineNumber) -{ - // We're done processing the prolog. - ForwardRequest(PR_FALSE); - - // Stop the parser since we don't want to spend more cycles on parsing - // stuff. - return NS_ERROR_HTMLPARSER_STOPPARSING; -} - -NS_IMETHODIMP -nsCrossSiteListenerProxy::HandleEndElement(const PRUnichar *aName) -{ - NS_ASSERTION(mHasForwardedRequest, "Should have forwarded request"); - - return NS_OK; -} - -NS_IMETHODIMP -nsCrossSiteListenerProxy::HandleComment(const PRUnichar *aName) -{ - return NS_OK; -} - -NS_IMETHODIMP -nsCrossSiteListenerProxy::HandleCDataSection(const PRUnichar *aData, - PRUint32 aLength) -{ - NS_ASSERTION(mHasForwardedRequest, "Should have forwarded request"); - - return NS_OK; -} - -NS_IMETHODIMP -nsCrossSiteListenerProxy::HandleDoctypeDecl(const nsAString & aSubset, - const nsAString & aName, - const nsAString & aSystemId, - const nsAString & aPublicId, - nsISupports *aCatalogData) -{ - return NS_OK; -} - -NS_IMETHODIMP -nsCrossSiteListenerProxy::HandleCharacterData(const PRUnichar *aData, - PRUint32 aLength) -{ - return NS_OK; -} - -NS_IMETHODIMP -nsCrossSiteListenerProxy::HandleProcessingInstruction(const PRUnichar *aTarget, - const PRUnichar *aData) -{ - if (mHasForwardedRequest || - !NS_LITERAL_STRING("access-control").Equals(aTarget)) { - return NS_OK; - } - - nsDependentString data(aData); - - PRBool seenType = PR_FALSE, seenExclude = PR_FALSE; - PRBool ruleIsAllow = PR_FALSE; - nsAutoString itemList, excludeList; - - PRUint32 i; - for (i = 0;; ++i) { - nsAutoString attrName; - if (nsParserUtils::GetQuotedAttrNameAt(data, i, attrName) && - attrName.IsEmpty()) { - break; - } - - nsCOMPtr attr = do_GetAtom(attrName); - - PRBool res; - if (!seenType && attrName.EqualsLiteral("allow")) { - seenType = PR_TRUE; - ruleIsAllow = PR_TRUE; - - res = nsParserUtils::GetQuotedAttributeValue(data, attr, itemList); - } - else if (!seenType && attrName.EqualsLiteral("deny")) { - seenType = PR_TRUE; - ruleIsAllow = PR_FALSE; - - res = nsParserUtils::GetQuotedAttributeValue(data, attr, itemList); - } - else if (!seenExclude && attrName.EqualsLiteral("exclude")) { - seenExclude = PR_TRUE; - - res = nsParserUtils::GetQuotedAttributeValue(data, attr, excludeList); - } - else { - res = PR_FALSE; - } - - if (!res) { - // parsing attribute value failed or unknown/duplicated attribute - mAcceptState = eDeny; - return ForwardRequest(PR_FALSE); - } - } - - PRBool matchesRule = PR_FALSE; - - nsWhitespaceTokenizer itemTok(itemList); - - if (!itemTok.hasMoreTokens()) { - mAcceptState = eDeny; - - return ForwardRequest(PR_FALSE); - } - - while (itemTok.hasMoreTokens()) { - // Order is important here since we always want to call the function - matchesRule = VerifyAndMatchDomainPattern( - NS_ConvertUTF16toUTF8(itemTok.nextToken())) || matchesRule; - } - - nsWhitespaceTokenizer excludeTok(excludeList); - while (excludeTok.hasMoreTokens()) { - // Order is important here since we always want to call the function - matchesRule = !VerifyAndMatchDomainPattern( - NS_ConvertUTF16toUTF8(excludeTok.nextToken())) && matchesRule; - } - - if (matchesRule && mAcceptState != eDeny) { - mAcceptState = ruleIsAllow ? eAccept : eDeny; - } - - if (mAcceptState == eDeny) { - return ForwardRequest(PR_FALSE); - } - - return NS_OK; -} - -NS_IMETHODIMP -nsCrossSiteListenerProxy::HandleXMLDeclaration(const PRUnichar *aVersion, - const PRUnichar *aEncoding, - PRInt32 aStandalone) -{ - return NS_OK; -} - -NS_IMETHODIMP -nsCrossSiteListenerProxy::ReportError(const PRUnichar *aErrorText, - const PRUnichar *aSourceText, - nsIScriptError *aError, - PRBool *_retval) -{ - if (!mHasForwardedRequest) { - mAcceptState = eDeny; - - return ForwardRequest(PR_FALSE); - } - - return NS_OK; -} - -NS_IMETHODIMP -nsCrossSiteListenerProxy::WillBuildModel() -{ - nsCOMPtr dtd; - mParser->GetDTD(getter_AddRefs(dtd)); - NS_ASSERTION(dtd, "missing dtd in WillBuildModel"); - if (dtd && !(dtd->GetType() & NS_IPARSER_FLAG_XML)) { - ForwardRequest(PR_FALSE); - - // Stop the parser since we don't want to spend more cycles on parsing - // stuff. - return NS_ERROR_HTMLPARSER_STOPPARSING; - } - - return NS_OK; -} - -// Moves aIter past the LWS (RFC2616) directly following it. -// Returns PR_TRUE and updates aIter if there was an LWS there, -// PR_FALSE otherwise -static PRBool -EatLWS(const char*& aIter, const char* aEnd) -{ - if (aIter + 1 < aEnd && *aIter == '\r' && *(aIter + 1) == '\n') { - aIter += 2; - } - - PRBool res = PR_FALSE; - while (aIter < aEnd && (*aIter == '\t' || *aIter == ' ')) { - ++aIter; - res = PR_TRUE; - } - - return res; -} - -// Moves aIter past the string, given by aString, directly following it. -// Returns PR_TRUE and updates aIter if the string was there, -// PR_FALSE otherwise -static PRBool -EatString(const char*& aIter, const char* aEnd, const char* aString) -{ - const char* local = aIter; - while (*aString && local < aEnd && *local == *aString) { - ++local; - ++aString; - } - if (*aString) { - return PR_FALSE; - } - - aIter = local; - - return PR_TRUE; -} - -// Moves aIter to the first aChar following it. -// Returns The string between the aIters initial position and the -// found character if one was found. -// Returns an empty string otherwise. -static nsDependentCSubstring -EatToChar(const char*& aIter, const char* aEnd, char aChar) -{ - const char* start = aIter; - while (aIter < aEnd) { - if (*aIter == aChar) { - return Substring(start, aIter); - } - ++aIter; - } - - static char emptyStatic[] = { '\0' }; - - aIter = start; - return Substring(emptyStatic, emptyStatic); -} - -PRBool -nsCrossSiteListenerProxy::MatchPatternList(const char*& aIter, const char* aEnd) -{ - PRBool matchesList = PR_FALSE; - PRBool hasItems = PR_FALSE; - - for (;;) { - const char* start = aIter; - if (!EatLWS(aIter, aEnd)) { - break; - } - - if (!EatString(aIter, aEnd, "<")) { - // restore iterator to before LWS since it wasn't part of the list - aIter = start; - break; - } - - const nsACString& accessItem = EatToChar(aIter, aEnd, '>'); - if (!EatString(aIter, aEnd, ">")) { - mAcceptState = eDeny; - break; - } - - hasItems = PR_TRUE; - - // Order is important here since we always want to call the function - matchesList = VerifyAndMatchDomainPattern(accessItem) || matchesList; - } - - if (!hasItems) { - mAcceptState = eDeny; - } - - return matchesList; -} - -#define DENY_AND_RETURN \ - mAcceptState = eDeny; \ - return - -void -nsCrossSiteListenerProxy::CheckHeader(const nsCString& aHeader) -{ - const char* iter = aHeader.BeginReading(); - const char* end = aHeader.EndReading(); - - // ruleset ::= LWS? rule LWS? ("," LWS? rule LWS?)* - while (iter < end) { - // eat LWS? - EatLWS(iter, end); - - // rule ::= rule-type (LWS pattern)+ (LWS "exclude" (LWS pattern)+)? - // eat rule-type - PRBool ruleIsAllow; - if (EatString(iter, end, "deny")) { - ruleIsAllow = PR_FALSE; - } - else if (EatString(iter, end, "allow")) { - ruleIsAllow = PR_TRUE; - } - else { - DENY_AND_RETURN; - } - - // eat (LWS pattern)+ - PRBool matchesRule = MatchPatternList(iter, end); - - PRBool ateLWS = EatLWS(iter, end); - - // eat (LWS "exclude" (LWS pattern)+)? - if (ateLWS && EatString(iter, end, "exclude")) { - ateLWS = PR_FALSE; - - // Order is important here since we always want to call the function - matchesRule = !MatchPatternList(iter, end) && matchesRule; - } - - if (matchesRule && mAcceptState != eDeny) { - mAcceptState = ruleIsAllow ? eAccept : eDeny; - } - - // eat LWS? - if (!ateLWS) { - EatLWS(iter, end); - } - - if (iter != end) { - if (!EatString(iter, end, ",")) { - DENY_AND_RETURN; - } - } - } -} - -// Moves aIter forward one character if the character at aIter is in [a-zA-Z] -// Returns PR_TRUE and updates aIter if such a character was found. -// PR_FALSE otherwise. -static PRBool -EatAlpha(nsACString::const_iterator& aIter, nsACString::const_iterator& aEnd) -{ - if (aIter != aEnd && ((*aIter >= 'A' && *aIter <= 'Z') || - (*aIter >= 'a' && *aIter <= 'z'))) { - ++aIter; - - return PR_TRUE; - } - - return PR_FALSE; -} - -// Moves aIter forward one character if the character at aIter is in [0-9] -// Returns PR_TRUE and updates aIter if such a character was found. -// PR_FALSE otherwise. -static PRBool -EatDigit(nsACString::const_iterator& aIter, nsACString::const_iterator& aEnd) -{ - if (aIter != aEnd && *aIter >= '0' && *aIter <= '9') { - ++aIter; - - return PR_TRUE; - } - - return PR_FALSE; -} - -// Moves aIter forward one character if the character at aIter is aChar -// Returns PR_TRUE and updates aIter if aChar was found. -// PR_FALSE otherwise. -static PRBool -EatChar(nsACString::const_iterator& aIter, nsACString::const_iterator& aEnd, - char aChar) -{ - if (aIter != aEnd && *aIter == aChar) { - ++aIter; - - return PR_TRUE; - } - - return PR_FALSE; -} - -// Moves aIter forward until it hits a subdomain terminator (* : or whitespace) -// or reaches the end -// access-item ::= (scheme "://")? domain-pattern (":" port)? | "*" -// domain-pattern ::= subdomain | "*." subdomain -// Returns PR_TRUE and updates aIter if a terminator is found. -// PR_FALSE otherwise. -static void -EatSubdomainChars(nsACString::const_iterator& aIter, - nsACString::const_iterator& aEnd) -{ - NS_ASSERTION(aIter.get() <= aEnd.get(), "EatSubdomainChars failed"); - - // Make sure to not allow initial hyphens - if (*aIter == '-') { - return; - } - - while (aIter != aEnd) { - unsigned char c = *aIter; - if (c <= 0x2c || - 0x2e <= c && c <= 0x2f || - 0x3a <= c && c <= 0x40 || - 0x5b <= c && c <= 0x60 || - 0x7b <= c && c <= 0x7f) { - return; - } - ++aIter; - } -} - -static PRBool -ACEEquals(const nsACString &aPattern, const nsCString &domain) -{ - if (aPattern.LowerCaseEqualsASCII(domain.get(), domain.Length())) - return PR_TRUE; - - // Convert subdomain patern to ACE - nsCString acePattern; - if (!NS_StringToACE(aPattern, acePattern)) - return PR_FALSE; - return acePattern.LowerCaseEqualsASCII(domain.get(), domain.Length()); -} - -PRBool -nsCrossSiteListenerProxy::VerifyAndMatchDomainPattern(const nsACString& aPattern) -{ - if (aPattern.EqualsLiteral("*")) { - return PR_TRUE; - } - - // access-item ::= (scheme "://")? domain-pattern (":" port)? | "*" - - nsACString::const_iterator start, iter, end; - aPattern.BeginReading(start); - aPattern.EndReading(end); - - // (scheme "://")? - nsCString patternScheme; - nsACString::const_iterator schemeStart = start, schemeEnd = end; - if (FindInReadable(NS_LITERAL_CSTRING("://"), schemeStart, schemeEnd)) { - // There is a '://' in the string which means that it must start with - // a scheme. - - iter = start; - - if (!EatAlpha(iter, end)) { - DENY_AND_RETURN PR_FALSE; - } - - while(EatAlpha(iter, end) || - EatDigit(iter, end) || - EatChar(iter, end, '+') || - EatChar(iter, end, '-') || - EatChar(iter, end, '.')) {} - - if (iter != schemeStart) { - DENY_AND_RETURN PR_FALSE; - } - - // Set the scheme - patternScheme = Substring(start, iter); - - start = iter.advance(3); - } - - // domain-pattern ::= subdomain | "*." subdomain - PRBool patternHasWild = PR_FALSE; - if (EatChar(start, end, '*')) { - if (!EatChar(start, end, '.')) { - DENY_AND_RETURN PR_FALSE; - } - patternHasWild = PR_TRUE; - } - - nsTArray patternSubdomains; - - // subdomain ::= label | subdomain "." label - do { - iter = start; - - EatSubdomainChars(iter, end); - - const nsDependentCSubstring& label = Substring(start, iter); - if (label.Last() == '-') { - DENY_AND_RETURN PR_FALSE; - } - - start = iter; - - // Save the label - patternSubdomains.AppendElement(label); - } while (EatChar(start, end, '.')); - - // (":" port)? - PRInt32 patternPort = -1; - if (EatChar(start, end, ':')) { - iter = start; - while (EatDigit(iter, end)) {} - - if (iter != start) { - PRInt32 ec; - patternPort = PromiseFlatCString(Substring(start, iter)).ToInteger(&ec); - NS_ASSERTION(NS_SUCCEEDED(ec), "ToInteger failed"); - } - - start = iter; - } - - // Did we consume the whole pattern? - if (start != end) { - DENY_AND_RETURN PR_FALSE; - } - - // Do checks at the end so that we make sure that the whole pattern is - // checked for syntax correctness first. - - // Check scheme - PRBool res; - if (!patternScheme.IsEmpty() && - (NS_FAILED(mRequestingURI->SchemeIs(patternScheme.get(), &res)) || - !res)) { - return PR_FALSE; - } - - // Check port - if (patternPort == -1 && !patternScheme.IsEmpty()) - patternPort = NS_GetDefaultPort(patternScheme.get()); - if (patternPort != -1 && patternPort != NS_GetRealPort(mRequestingURI)) { - return PR_FALSE; - } - - // Check subdomain - PRUint32 patternPos = patternSubdomains.Length(); - PRUint32 reqPos = mReqSubdomains.Length(); - do { - --patternPos; - --reqPos; - if (!ACEEquals(patternSubdomains[patternPos], mReqSubdomains[reqPos])) { - return PR_FALSE; - } - } while (patternPos > 0 && reqPos > 0); - - // Only matches if we've matched all of pattern and, if there is a wildcard, there - // is at least one more entry in mReqSubdomains. - - return patternPos == 0 && - (!patternHasWild || reqPos >= 1); -} - -NS_IMETHODIMP -nsCrossSiteListenerProxy::GetInterface(const nsIID & aIID, void **aResult) -{ - if (aIID.Equals(NS_GET_IID(nsIChannelEventSink))) { - *aResult = static_cast(this); - NS_ADDREF_THIS(); - - return NS_OK; - } - - return mOuterNotificationCallbacks ? - mOuterNotificationCallbacks->GetInterface(aIID, aResult) : - NS_ERROR_NO_INTERFACE; -} - -NS_IMETHODIMP -nsCrossSiteListenerProxy::OnChannelRedirect(nsIChannel *aOldChannel, - nsIChannel *aNewChannel, - PRUint32 aFlags) -{ - nsresult rv; - nsCOMPtr outer = - do_GetInterface(mOuterNotificationCallbacks); - if (outer) { - rv = outer->OnChannelRedirect(aOldChannel, aNewChannel, aFlags); - NS_ENSURE_SUCCESS(rv, rv); - } - - return UpdateChannel(aNewChannel); -} - -nsresult -nsCrossSiteListenerProxy::UpdateChannel(nsIChannel* aChannel) -{ - nsCOMPtr uri; - nsresult rv = aChannel->GetURI(getter_AddRefs(uri)); - NS_ENSURE_SUCCESS(rv, rv); - - // Check that the uri is ok to load - rv = nsContentUtils::GetSecurityManager()-> - CheckLoadURIWithPrincipal(mRequestingPrincipal, uri, - nsIScriptSecurityManager::STANDARD); - NS_ENSURE_SUCCESS(rv, rv); - - if (!mHasBeenCrossSite && - NS_SUCCEEDED(mRequestingPrincipal->CheckMayLoad(uri, PR_FALSE))) { - return NS_OK; - } - - nsCString userpass; - uri->GetUserPass(userpass); - NS_ENSURE_TRUE(userpass.IsEmpty(), NS_ERROR_DOM_BAD_URI); - - // It's a cross site load - mHasBeenCrossSite = PR_TRUE; - - // Work out the Referer-Root header - nsCString root, host; - rv = mRequestingURI->GetAsciiHost(host); - NS_ENSURE_SUCCESS(rv, rv); - - if (!host.IsEmpty()) { - nsCString scheme; - rv = mRequestingURI->GetScheme(scheme); - NS_ENSURE_SUCCESS(rv, rv); - - root = scheme + NS_LITERAL_CSTRING("://") + host; - - // If needed, append the port - PRInt32 port; - mRequestingURI->GetPort(&port); - if (port != -1) { - PRInt32 defaultPort = NS_GetDefaultPort(scheme.get()); - if (port != defaultPort) { - root.Append(":"); - root.AppendInt(port); - } - } - } - else { - root.AssignLiteral("null"); - } - - // Now add the access-control-origin header - nsCOMPtr http = do_QueryInterface(aChannel); - NS_ENSURE_TRUE(http, NS_ERROR_FAILURE); - - return http->SetRequestHeader(NS_LITERAL_CSTRING("Access-Control-Origin"), - root, PR_FALSE); -} diff --git a/content/base/src/nsCrossSiteListenerProxy.h b/content/base/src/nsCrossSiteListenerProxy.h deleted file mode 100644 index 1d26167d799d..000000000000 --- a/content/base/src/nsCrossSiteListenerProxy.h +++ /dev/null @@ -1,109 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mozilla Foundation. - * Portions created by the Initial Developer are Copyright (C) 2007 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * Jonas Sicking (Original Author) - * - * Alternatively, the contents of this file may be used under the terms of - * either of the GNU General Public License Version 2 or later (the "GPL"), - * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#include "nsIStreamListener.h" -#include "nsIInterfaceRequestor.h" -#include "nsCOMPtr.h" -#include "nsString.h" -#include "nsIURI.h" -#include "nsTArray.h" -#include "nsIContentSink.h" -#include "nsIXMLContentSink.h" -#include "nsIExpatSink.h" -#include "nsIInterfaceRequestor.h" -#include "nsIChannelEventSink.h" - -class nsIURI; -class nsIParser; -class nsIPrincipal; - -class nsCrossSiteListenerProxy : public nsIStreamListener, - public nsIXMLContentSink, - public nsIExpatSink, - public nsIInterfaceRequestor, - public nsIChannelEventSink -{ -public: - nsCrossSiteListenerProxy(nsIStreamListener* aOuter, - nsIPrincipal* aRequestingPrincipal, - nsIChannel* aChannel, - nsresult* aResult); - - NS_DECL_ISUPPORTS - NS_DECL_NSIREQUESTOBSERVER - NS_DECL_NSISTREAMLISTENER - NS_DECL_NSIEXPATSINK - NS_DECL_NSIINTERFACEREQUESTOR - NS_DECL_NSICHANNELEVENTSINK - - // nsIContentSink - NS_IMETHOD WillTokenize(void) { return NS_OK; } - NS_IMETHOD WillBuildModel(void); - NS_IMETHOD DidBuildModel() { return NS_OK; } - NS_IMETHOD WillInterrupt(void) { return NS_OK; } - NS_IMETHOD WillResume(void) { return NS_OK; } - NS_IMETHOD SetParser(nsIParser* aParser) { return NS_OK; } - virtual void FlushPendingNotifications(mozFlushType aType) { } - NS_IMETHOD SetDocumentCharset(nsACString& aCharset) { return NS_OK; } - virtual nsISupports *GetTarget() { return nsnull; } - -private: - nsresult UpdateChannel(nsIChannel* aChannel); - - nsresult ForwardRequest(PRBool aCallStop); - PRBool MatchPatternList(const char*& aIter, const char* aEnd); - void CheckHeader(const nsCString& aHeader); - PRBool VerifyAndMatchDomainPattern(const nsACString& aDomainPattern); - - nsCOMPtr mOuterListener; - nsCOMPtr mOuterRequest; - nsCOMPtr mOuterContext; - nsCOMPtr mParserListener; - nsCOMPtr mParser; - nsCOMPtr mRequestingURI; - nsCOMPtr mRequestingPrincipal; - nsCOMPtr mOuterNotificationCallbacks; - nsTArray mReqSubdomains; - nsCString mStoredData; - enum { - eAccept, - eDeny, - eNotSet - } mAcceptState; - PRBool mHasForwardedRequest; - PRBool mHasBeenCrossSite; -}; diff --git a/content/base/src/nsSyncLoadService.cpp b/content/base/src/nsSyncLoadService.cpp index 5a5172f7392a..936bbeccd0f0 100644 --- a/content/base/src/nsSyncLoadService.cpp +++ b/content/base/src/nsSyncLoadService.cpp @@ -59,7 +59,6 @@ #include "nsAutoPtr.h" #include "nsLoadListenerProxy.h" #include "nsStreamUtils.h" -#include "nsCrossSiteListenerProxy.h" /** * This class manages loading a single XML document @@ -219,10 +218,12 @@ nsSyncLoader::LoadDocument(nsIChannel* aChannel, } if (aLoaderPrincipal) { - listener = new nsCrossSiteListenerProxy(listener, aLoaderPrincipal, - mChannel, &rv); - NS_ENSURE_TRUE(listener, NS_ERROR_OUT_OF_MEMORY); - NS_ENSURE_SUCCESS(rv, rv); + nsCOMPtr docURI; + rv = aChannel->GetOriginalURI(getter_AddRefs(docURI)); + NS_ENSURE_SUCCESS(rv, rv); + + rv = aLoaderPrincipal->CheckMayLoad(docURI, PR_TRUE); + NS_ENSURE_SUCCESS(rv, rv); } // Register as a load listener on the document @@ -368,6 +369,18 @@ nsSyncLoader::OnChannelRedirect(nsIChannel *aOldChannel, mChannel = aNewChannel; + nsCOMPtr oldURI; + nsresult rv = aOldChannel->GetURI(getter_AddRefs(oldURI)); + NS_ENSURE_SUCCESS(rv, rv); + + nsCOMPtr newURI; + rv = aNewChannel->GetURI(getter_AddRefs(newURI)); + NS_ENSURE_SUCCESS(rv, rv); + + rv = nsContentUtils::GetSecurityManager()-> + CheckSameOriginURI(oldURI, newURI, PR_TRUE); + NS_ENSURE_SUCCESS(rv, rv); + return NS_OK; } diff --git a/content/base/src/nsXMLHttpRequest.cpp b/content/base/src/nsXMLHttpRequest.cpp index 42a6f684d899..62c9c5e97bdb 100644 --- a/content/base/src/nsXMLHttpRequest.cpp +++ b/content/base/src/nsXMLHttpRequest.cpp @@ -82,7 +82,6 @@ #include "nsContentPolicyUtils.h" #include "nsContentErrors.h" #include "nsLayoutStatics.h" -#include "nsCrossSiteListenerProxy.h" #include "nsDOMError.h" #include "nsIHTMLDocument.h" #include "nsWhitespaceTokenizer.h" @@ -116,10 +115,8 @@ // access-control spec is supported #define XML_HTTP_REQUEST_SYNCLOOPING (1 << 11) // Internal #define XML_HTTP_REQUEST_MULTIPART (1 << 12) // Internal -#define XML_HTTP_REQUEST_USE_XSITE_AC (1 << 13) // Internal -#define XML_HTTP_REQUEST_NON_GET (1 << 14) // Internal -#define XML_HTTP_REQUEST_GOT_FINAL_STOP (1 << 15) // Internal -#define XML_HTTP_REQUEST_BACKGROUND (1 << 16) // Internal +#define XML_HTTP_REQUEST_GOT_FINAL_STOP (1 << 13) // Internal +#define XML_HTTP_REQUEST_BACKGROUND (1 << 14) // Internal #define XML_HTTP_REQUEST_LOADSTATES \ (XML_HTTP_REQUEST_UNINITIALIZED | \ @@ -130,8 +127,6 @@ XML_HTTP_REQUEST_SENT | \ XML_HTTP_REQUEST_STOPPED) -#define ACCESS_CONTROL_CACHE_SIZE 100 - #define NS_BADCERTHANDLER_CONTRACTID \ "@mozilla.org/content/xmlhttprequest-bad-cert-handler;1" @@ -245,134 +240,6 @@ nsMultipartProxyListener::OnDataAvailable(nsIRequest *aRequest, count); } -// Class used as streamlistener and notification callback when -// doing the initial GET request for an access-control check -class nsACProxyListener : public nsIStreamListener, - public nsIInterfaceRequestor, - public nsIChannelEventSink -{ -public: - nsACProxyListener(nsIChannel* aOuterChannel, - nsIStreamListener* aOuterListener, - nsISupports* aOuterContext, - nsIPrincipal* aReferrerPrincipal, - const nsACString& aRequestMethod) - : mOuterChannel(aOuterChannel), mOuterListener(aOuterListener), - mOuterContext(aOuterContext), mReferrerPrincipal(aReferrerPrincipal), - mRequestMethod(aRequestMethod) - { } - - NS_DECL_ISUPPORTS - NS_DECL_NSISTREAMLISTENER - NS_DECL_NSIREQUESTOBSERVER - NS_DECL_NSIINTERFACEREQUESTOR - NS_DECL_NSICHANNELEVENTSINK - -private: - nsCOMPtr mOuterChannel; - nsCOMPtr mOuterListener; - nsCOMPtr mOuterContext; - nsCOMPtr mReferrerPrincipal; - nsCString mRequestMethod; -}; - -NS_IMPL_ISUPPORTS4(nsACProxyListener, nsIStreamListener, nsIRequestObserver, - nsIInterfaceRequestor, nsIChannelEventSink) - -NS_IMETHODIMP -nsACProxyListener::OnStartRequest(nsIRequest *aRequest, nsISupports *aContext) -{ - nsresult status; - nsresult rv = aRequest->GetStatus(&status); - - if (NS_SUCCEEDED(rv)) { - rv = status; - } - - if (NS_SUCCEEDED(rv)) { - // Everything worked, check to see if there is an expiration time set on - // this access control list. If so go ahead and cache it. - - nsCOMPtr http = do_QueryInterface(aRequest, &rv); - - // The "Access-Control-Max-Age" header should return an age in seconds. - nsCAutoString ageString; - http->GetResponseHeader(NS_LITERAL_CSTRING("Access-Control-Max-Age"), - ageString); - - // Sanitize the string. We only allow 'delta-seconds' as specified by - // http://dev.w3.org/2006/waf/access-control (digits 0-9 with no leading or - // trailing non-whitespace characters). We don't allow a + or - character - // but PR_sscanf does so we ensure that the first character is actually a - // digit. - ageString.StripWhitespace(); - if (ageString.CharAt(0) >= '0' || ageString.CharAt(0) <= '9') { - PRUint64 age; - PRInt32 convertedChars = PR_sscanf(ageString.get(), "%llu", &age); - if ((PRInt32)ageString.Length() == convertedChars && - nsXMLHttpRequest::EnsureACCache()) { - - // String seems fine, go ahead and cache. - nsCOMPtr uri; - http->GetURI(getter_AddRefs(uri)); - - // PR_Now gives microseconds - PRTime expirationTime = PR_Now() + age * PR_USEC_PER_SEC; - nsXMLHttpRequest::sAccessControlCache->PutEntry(uri, mReferrerPrincipal, - expirationTime); - } - } - } - - if (NS_SUCCEEDED(rv)) { - rv = mOuterChannel->AsyncOpen(mOuterListener, mOuterContext); - } - - if (NS_FAILED(rv)) { - mOuterChannel->Cancel(rv); - mOuterListener->OnStartRequest(mOuterChannel, mOuterContext); - mOuterListener->OnStopRequest(mOuterChannel, mOuterContext, rv); - - return rv; - } - - return NS_OK; -} - -NS_IMETHODIMP -nsACProxyListener::OnStopRequest(nsIRequest *aRequest, nsISupports *aContext, - nsresult aStatus) -{ - return NS_OK; -} - -/** nsIStreamListener methods **/ - -NS_IMETHODIMP -nsACProxyListener::OnDataAvailable(nsIRequest *aRequest, - nsISupports *ctxt, - nsIInputStream *inStr, - PRUint32 sourceOffset, - PRUint32 count) -{ - return NS_OK; -} - -NS_IMETHODIMP -nsACProxyListener::OnChannelRedirect(nsIChannel *aOldChannel, - nsIChannel *aNewChannel, - PRUint32 aFlags) -{ - // No redirects allowed for now. - return NS_ERROR_DOM_BAD_URI; -} - -NS_IMETHODIMP -nsACProxyListener::GetInterface(const nsIID & aIID, void **aResult) -{ - return QueryInterface(aIID, aResult); -} - /** * Gets the nsIDocument given the script context. Will return nsnull on failure. * @@ -399,155 +266,11 @@ GetDocumentFromScriptContext(nsIScriptContext *aScriptContext) return doc; } -void -nsAccessControlLRUCache::GetEntry(nsIURI* aURI, - nsIPrincipal* aPrincipal, - PRTime* _retval) -{ - nsCAutoString key; - if (GetCacheKey(aURI, aPrincipal, key)) { - CacheEntry* entry; - if (GetEntryInternal(key, &entry)) { - *_retval = entry->value; - return; - } - } - *_retval = 0; -} - -void -nsAccessControlLRUCache::PutEntry(nsIURI* aURI, - nsIPrincipal* aPrincipal, - PRTime aValue) -{ - nsCString key; - if (!GetCacheKey(aURI, aPrincipal, key)) { - NS_WARNING("Invalid cache key!"); - return; - } - - CacheEntry* entry; - if (GetEntryInternal(key, &entry)) { - // Entry already existed, just update the expiration time and bail. The LRU - // list is updated as a result of the call to GetEntryInternal. - entry->value = aValue; - return; - } - - // This is a new entry, allocate and insert into the table now so that any - // failures don't cause items to be removed from a full cache. - entry = new CacheEntry(key, aValue); - if (!entry) { - NS_WARNING("Failed to allocate new cache entry!"); - return; - } - - if (!mTable.Put(key, entry)) { - // Failed, clean up the new entry. - delete entry; - - NS_WARNING("Failed to add entry to the access control cache!"); - return; - } - - PR_INSERT_LINK(entry, &mList); - - NS_ASSERTION(mTable.Count() <= ACCESS_CONTROL_CACHE_SIZE + 1, - "Something is borked, too many entries in the cache!"); - - // Now enforce the max count. - if (mTable.Count() > ACCESS_CONTROL_CACHE_SIZE) { - // Try to kick out all the expired entries. - PRTime now = PR_Now(); - mTable.Enumerate(RemoveExpiredEntries, &now); - - // If that didn't remove anything then kick out the least recently used - // entry. - if (mTable.Count() > ACCESS_CONTROL_CACHE_SIZE) { - CacheEntry* lruEntry = static_cast(PR_LIST_TAIL(&mList)); - PR_REMOVE_LINK(lruEntry); - - // This will delete 'lruEntry'. - mTable.Remove(lruEntry->key); - - NS_ASSERTION(mTable.Count() >= ACCESS_CONTROL_CACHE_SIZE, - "Somehow tried to remove an entry that was never added!"); - } - } -} - -void -nsAccessControlLRUCache::Clear() -{ - PR_INIT_CLIST(&mList); - mTable.Clear(); -} - -PRBool -nsAccessControlLRUCache::GetEntryInternal(const nsACString& aKey, - CacheEntry** _retval) -{ - if (!mTable.Get(aKey, _retval)) - return PR_FALSE; - - // Move to the head of the list. - PR_REMOVE_LINK(*_retval); - PR_INSERT_LINK(*_retval, &mList); - - return PR_TRUE; -} - -/* static */ PR_CALLBACK PLDHashOperator -nsAccessControlLRUCache::RemoveExpiredEntries(const nsACString& aKey, - nsAutoPtr& aValue, - void* aUserData) -{ - PRTime* now = static_cast(aUserData); - if (*now >= aValue->value) { - // Expired, remove from the list as well as the hash table. - PR_REMOVE_LINK(aValue); - return PL_DHASH_REMOVE; - } - // Keep going. - return PL_DHASH_NEXT; -} - -/* static */ PRBool -nsAccessControlLRUCache::GetCacheKey(nsIURI* aURI, - nsIPrincipal* aPrincipal, - nsACString& _retval) -{ - NS_ASSERTION(aURI, "Null uri!"); - NS_ASSERTION(aPrincipal, "Null principal!"); - - NS_NAMED_LITERAL_CSTRING(space, " "); - - nsCOMPtr uri; - nsresult rv = aPrincipal->GetURI(getter_AddRefs(uri)); - NS_ENSURE_SUCCESS(rv, PR_FALSE); - - nsCAutoString host; - if (uri) { - uri->GetHost(host); - } - - nsCAutoString spec; - rv = aURI->GetSpec(spec); - NS_ENSURE_SUCCESS(rv, PR_FALSE); - - _retval.Assign(host + space + spec); - - return PR_TRUE; -} - ///////////////////////////////////////////// // // ///////////////////////////////////////////// -// Will be initialized in nsXMLHttpRequest::EnsureACCache. -nsAccessControlLRUCache* nsXMLHttpRequest::sAccessControlCache = nsnull; - nsXMLHttpRequest::nsXMLHttpRequest() : mState(XML_HTTP_REQUEST_UNINITIALIZED) { @@ -1122,9 +845,6 @@ nsXMLHttpRequest::Abort() if (mChannel) { mChannel->Cancel(NS_BINDING_ABORTED); } - if (mACGetChannel) { - mACGetChannel->Cancel(NS_BINDING_ABORTED); - } mDocument = nsnull; mResponseBody.Truncate(); mState |= XML_HTTP_REQUEST_ABORTED; @@ -1152,10 +872,6 @@ nsXMLHttpRequest::GetAllResponseHeaders(char **_retval) NS_ENSURE_ARG_POINTER(_retval); *_retval = nsnull; - if (mState & XML_HTTP_REQUEST_USE_XSITE_AC) { - return NS_OK; - } - nsCOMPtr httpChannel = GetCurrentHttpChannel(); if (httpChannel) { @@ -1184,37 +900,6 @@ nsXMLHttpRequest::GetResponseHeader(const nsACString& header, nsresult rv = NS_OK; _retval.Truncate(); - // Check for dangerous headers - if (mState & XML_HTTP_REQUEST_USE_XSITE_AC) { - - // Make sure we don't leak header information from denied cross-site - // requests. - if (mChannel) { - nsresult status; - mChannel->GetStatus(&status); - if (NS_FAILED(status)) { - return NS_OK; - } - } - - const char *kCrossOriginSafeHeaders[] = { - "cache-control", "content-language", "content-type", "expires", - "last-modified", "pragma" - }; - PRBool safeHeader = PR_FALSE; - PRUint32 i; - for (i = 0; i < NS_ARRAY_LENGTH(kCrossOriginSafeHeaders); ++i) { - if (header.LowerCaseEqualsASCII(kCrossOriginSafeHeaders[i])) { - safeHeader = PR_TRUE; - break; - } - } - - if (!safeHeader) { - return NS_OK; - } - } - nsCOMPtr httpChannel = GetCurrentHttpChannel(); if (httpChannel) { @@ -1416,34 +1101,6 @@ IsSameOrigin(nsIPrincipal* aPrincipal, nsIChannel* aChannel) return NS_SUCCEEDED(rv); } -nsresult -nsXMLHttpRequest::CheckChannelForCrossSiteRequest() -{ - // First check if this is a same-origin request, or if cross-site requests - // are enabled. - if ((mState & XML_HTTP_REQUEST_XSITEENABLED) || - IsSameOrigin(mPrincipal, mChannel)) { - return NS_OK; - } - - // This is a cross-site request - - // The request is now cross-site, so update flag. - mState |= XML_HTTP_REQUEST_USE_XSITE_AC; - - // Remove dangerous headers - nsCOMPtr http = do_QueryInterface(mChannel); - if (http) { - PRUint32 i; - for (i = 0; i < mExtraRequestHeaders.Length(); ++i) { - http->SetRequestHeader(mExtraRequestHeaders[i], EmptyCString(), PR_FALSE); - } - mExtraRequestHeaders.Clear(); - } - - return NS_OK; -} - /* noscript void openRequest (in AUTF8String method, in AUTF8String url, in boolean async, in AString user, in AString password); */ NS_IMETHODIMP nsXMLHttpRequest::OpenRequest(const nsACString& method, @@ -1561,46 +1218,11 @@ nsXMLHttpRequest::OpenRequest(const nsACString& method, // Chrome callers are always allowed to read from different origins. mState |= XML_HTTP_REQUEST_XSITEENABLED; } - else if (!(mState & XML_HTTP_REQUEST_XSITEENABLED) && - !IsSameOrigin(mPrincipal, mChannel)) { - mState |= XML_HTTP_REQUEST_USE_XSITE_AC; - } nsCOMPtr httpChannel(do_QueryInterface(mChannel)); if (httpChannel) { rv = httpChannel->SetRequestMethod(method); NS_ENSURE_SUCCESS(rv, rv); - - if (!method.LowerCaseEqualsLiteral("get")) { - mState |= XML_HTTP_REQUEST_NON_GET; - } - } - - // Do we need to set up an initial OPTIONS request to make sure that it is - // safe to make the request? - if ((mState & XML_HTTP_REQUEST_USE_XSITE_AC) && - (mState & XML_HTTP_REQUEST_NON_GET)) { - - // Check to see if this initial OPTIONS request has already been cached in - // our special Access Control Cache. - PRTime expiration = 0; - if (sAccessControlCache) { - sAccessControlCache->GetEntry(uri, mPrincipal, &expiration); - } - - if (expiration <= PR_Now()) { - // Either it wasn't cached or the cached result has expired. Build a - // channel for the OPTIONS request. - rv = NS_NewChannel(getter_AddRefs(mACGetChannel), uri, nsnull, loadGroup, - nsnull, loadFlags); - NS_ENSURE_SUCCESS(rv, rv); - - nsCOMPtr acHttp = do_QueryInterface(mACGetChannel); - NS_ASSERTION(acHttp, "Failed to QI to nsIHttpChannel!"); - - rv = acHttp->SetRequestMethod(NS_LITERAL_CSTRING("OPTIONS")); - NS_ENSURE_SUCCESS(rv, rv); - } } ChangeState(XML_HTTP_REQUEST_OPENED); @@ -1644,7 +1266,7 @@ nsXMLHttpRequest::Open(const nsACString& method, const nsACString& url) return NS_ERROR_FAILURE; } - rv = secMan->CheckConnect(cx, targetURI, "XMLHttpRequest", "open-uri"); + rv = secMan->CheckConnect(cx, targetURI, "XMLHttpRequest", "open"); if (NS_FAILED(rv)) { // Security check failed. @@ -1816,13 +1438,6 @@ nsXMLHttpRequest::OnStartRequest(nsIRequest *request, nsISupports *ctxt) getter_AddRefs(mDocument)); NS_ENSURE_SUCCESS(rv, rv); - if (mState & XML_HTTP_REQUEST_USE_XSITE_AC) { - nsCOMPtr htmlDoc = do_QueryInterface(mDocument); - if (htmlDoc) { - htmlDoc->DisableCookieAccess(); - } - } - // Reset responseBody mResponseBody.Truncate(); @@ -2275,9 +1890,6 @@ nsXMLHttpRequest::Send(nsIVariant *aBody) mState |= XML_HTTP_REQUEST_SYNCLOOPING; } - rv = CheckChannelForCrossSiteRequest(); - NS_ENSURE_SUCCESS(rv, rv); - // Hook us up to listen to redirects and the like mChannel->GetNotificationCallbacks(getter_AddRefs(mNotificationCallbacks)); mChannel->SetNotificationCallbacks(this); @@ -2291,15 +1903,6 @@ nsXMLHttpRequest::Send(nsIVariant *aBody) } } - if (!(mState & XML_HTTP_REQUEST_XSITEENABLED)) { - // Always create a nsCrossSiteListenerProxy here even if it's - // a same-origin request right now, since it could be redirected. - listener = new nsCrossSiteListenerProxy(listener, mPrincipal, mChannel, - &rv); - NS_ENSURE_TRUE(listener, NS_ERROR_OUT_OF_MEMORY); - NS_ENSURE_SUCCESS(rv, rv); - } - // Bypass the network cache in cases where it makes no sense: // 1) Multipart responses are very large and would likely be doomed by the // cache once they grow too large, so they are not worth caching. @@ -2316,10 +1919,6 @@ nsXMLHttpRequest::Send(nsIVariant *aBody) else if (mState & XML_HTTP_REQUEST_SYNCLOOPING) { AddLoadFlags(mChannel, nsICachingChannel::LOAD_BYPASS_LOCAL_CACHE_IF_BUSY); - if (mACGetChannel) { - AddLoadFlags(mACGetChannel, - nsICachingChannel::LOAD_BYPASS_LOCAL_CACHE_IF_BUSY); - } } // Since we expect XML data, set the type hint accordingly @@ -2327,24 +1926,8 @@ nsXMLHttpRequest::Send(nsIVariant *aBody) // ignoring return value, as this is not critical mChannel->SetContentType(NS_LITERAL_CSTRING("application/xml")); - // If we're doing a cross-site non-GET request we need to first do - // a GET request to the same URI. Set that up if needed - if (mACGetChannel) { - nsCOMPtr acListener = - new nsACProxyListener(mChannel, listener, nsnull, mPrincipal, method); - NS_ENSURE_TRUE(acListener, NS_ERROR_OUT_OF_MEMORY); - - listener = new nsCrossSiteListenerProxy(acListener, mPrincipal, - mACGetChannel, &rv); - NS_ENSURE_TRUE(listener, NS_ERROR_OUT_OF_MEMORY); - NS_ENSURE_SUCCESS(rv, rv); - - rv = mACGetChannel->AsyncOpen(listener, nsnull); - } - else { - // Start reading from the channel - rv = mChannel->AsyncOpen(listener, nsnull); - } + // Start reading from the channel + rv = mChannel->AsyncOpen(listener, nsnull); if (NS_FAILED(rv)) { // Drop our ref to the channel to avoid cycles @@ -2383,19 +1966,6 @@ nsXMLHttpRequest::SetRequestHeader(const nsACString& header, { nsresult rv; - // Check that we haven't already opened the channel. We can't rely on - // the channel throwing from mChannel->SetRequestHeader since we might - // still be waiting for mACGetChannel to actually open mChannel - if (mACGetChannel) { - PRBool pending; - rv = mACGetChannel->IsPending(&pending); - NS_ENSURE_SUCCESS(rv, rv); - - if (pending) { - return NS_ERROR_IN_PROGRESS; - } - } - if (!mChannel) // open() initializes mChannel, and open() return NS_ERROR_FAILURE; // must be called before first setRequestHeader() @@ -2427,32 +1997,6 @@ nsXMLHttpRequest::SetRequestHeader(const nsACString& header, return NS_OK; } } - - // Check for dangerous cross-site headers - PRBool safeHeader = !!(mState & XML_HTTP_REQUEST_XSITEENABLED); - if (!safeHeader) { - const char *kCrossOriginSafeHeaders[] = { - "accept", "accept-language" - }; - for (i = 0; i < NS_ARRAY_LENGTH(kCrossOriginSafeHeaders); ++i) { - if (header.LowerCaseEqualsASCII(kCrossOriginSafeHeaders[i])) { - safeHeader = PR_TRUE; - break; - } - } - } - - if (!safeHeader) { - // The header is unsafe for cross-site requests. If this is a cross-site - // request throw an exception... - if (mState & XML_HTTP_REQUEST_USE_XSITE_AC) { - return NS_ERROR_FAILURE; - } - - // ...otherwise just add it to mExtraRequestHeaders so that we can - // remove it in case we're redirected to another site - mExtraRequestHeaders.AppendElement(header); - } } // We need to set, not add to, the header. @@ -2693,18 +2237,19 @@ nsXMLHttpRequest::OnChannelRedirect(nsIChannel *aOldChannel, NS_ENSURE_SUCCESS(rv, rv); } - mChannel = aNewChannel; - - rv = CheckChannelForCrossSiteRequest(); + nsCOMPtr oldURI; + rv = aOldChannel->GetURI(getter_AddRefs(oldURI)); NS_ENSURE_SUCCESS(rv, rv); - // Disable redirects for non-get cross-site requests entirely for now - // Note, do this after the call to CheckChannelForCrossSiteRequest - // to make sure that XML_HTTP_REQUEST_USE_XSITE_AC is up-to-date - if ((mState & XML_HTTP_REQUEST_NON_GET) && - (mState & XML_HTTP_REQUEST_USE_XSITE_AC)) { - return NS_ERROR_DOM_BAD_URI; - } + nsCOMPtr newURI; + rv = aNewChannel->GetURI(getter_AddRefs(newURI)); + NS_ENSURE_SUCCESS(rv, rv); + + rv = nsContentUtils::GetSecurityManager()-> + CheckSameOriginURI(oldURI, newURI, PR_TRUE); + NS_ENSURE_SUCCESS(rv, rv); + + mChannel = aNewChannel; return NS_OK; } diff --git a/content/base/src/nsXMLHttpRequest.h b/content/base/src/nsXMLHttpRequest.h index 20367a38a6d6..84b48b9326cd 100644 --- a/content/base/src/nsXMLHttpRequest.h +++ b/content/base/src/nsXMLHttpRequest.h @@ -70,65 +70,6 @@ class nsILoadGroup; -class nsAccessControlLRUCache -{ - struct CacheEntry : public PRCList - { - CacheEntry(const nsACString& aKey, PRTime aValue) - : key(aKey), value(aValue) - { - MOZ_COUNT_CTOR(nsAccessControlLRUCache::CacheEntry); - } - - ~CacheEntry() - { - MOZ_COUNT_DTOR(nsAccessControlLRUCache::CacheEntry); - } - - nsCString key; - PRTime value; - }; - -public: - nsAccessControlLRUCache() - { - MOZ_COUNT_CTOR(nsAccessControlLRUCache); - PR_INIT_CLIST(&mList); - } - - ~nsAccessControlLRUCache() - { - Clear(); - MOZ_COUNT_DTOR(nsAccessControlLRUCache); - } - - PRBool Initialize() - { - return mTable.Init(); - } - - void GetEntry(nsIURI* aURI, nsIPrincipal* aPrincipal, - PRTime* _retval); - - void PutEntry(nsIURI* aURI, nsIPrincipal* aPrincipal, - PRTime aValue); - - void Clear(); - -private: - PRBool GetEntryInternal(const nsACString& aKey, CacheEntry** _retval); - - PR_STATIC_CALLBACK(PLDHashOperator) - RemoveExpiredEntries(const nsACString& aKey, nsAutoPtr& aValue, - void* aUserData); - - static PRBool GetCacheKey(nsIURI* aURI, nsIPrincipal* aPrincipal, - nsACString& _retval); - - nsClassHashtable mTable; - PRCList mList; -}; - class nsXMLHttpRequest : public nsIXMLHttpRequest, public nsIJSXMLHttpRequest, public nsIDOMLoadListener, @@ -189,32 +130,6 @@ public: NS_DECL_CYCLE_COLLECTION_CLASS_AMBIGUOUS(nsXMLHttpRequest, nsIXMLHttpRequest) - static PRBool EnsureACCache() - { - if (sAccessControlCache) - return PR_TRUE; - - nsAutoPtr newCache(new nsAccessControlLRUCache()); - NS_ENSURE_TRUE(newCache, PR_FALSE); - - if (newCache->Initialize()) { - sAccessControlCache = newCache.forget(); - return PR_TRUE; - } - - return PR_FALSE; - } - - static void ShutdownACCache() - { - if (sAccessControlCache) { - delete sAccessControlCache; - sAccessControlCache = nsnull; - } - } - - static nsAccessControlLRUCache* sAccessControlCache; - protected: nsresult DetectCharset(nsACString& aCharset); @@ -281,7 +196,6 @@ protected: // mReadRequest is different from mChannel for multipart requests nsCOMPtr mReadRequest; nsCOMPtr mDocument; - nsCOMPtr mACGetChannel; nsCOMArray mLoadEventListeners; nsCOMArray mErrorEventListeners; diff --git a/content/base/test/Makefile.in b/content/base/test/Makefile.in index 8192f9dfdc4a..a8ffceb9fe71 100644 --- a/content/base/test/Makefile.in +++ b/content/base/test/Makefile.in @@ -131,31 +131,6 @@ _TEST_FILES = test_bug5141.html \ test_bug398243.html \ formReset.html \ bug382113_object.html \ - test_CrossSiteXHR.html \ - file_CrossSiteXHR_fail1.xml \ - file_CrossSiteXHR_fail2.xml \ - file_CrossSiteXHR_fail2.xml^headers^ \ - file_CrossSiteXHR_fail3.xml \ - file_CrossSiteXHR_fail4.xml \ - file_CrossSiteXHR_pass1.xml \ - file_CrossSiteXHR_pass1.xml^headers^ \ - file_CrossSiteXHR_pass2.xml \ - file_CrossSiteXHR_pass3.xml \ - test_CrossSiteXHR2.html \ - file_CrossSiteXHR2_inner.html \ - file_CrossSiteXHR2_fail1.xml \ - file_CrossSiteXHR2_fail1.xml^headers^ \ - file_CrossSiteXHR2_fail2.xml \ - file_CrossSiteXHR2_pass1.xml \ - file_CrossSiteXHR2_pass1.xml^headers^ \ - file_CrossSiteXHR2_pass2.xml \ - file_CrossSiteXHR2_pass3.xml \ - file_CrossSiteXHR2_pass3.xml^headers^ \ - file_CrossSiteXHR2_pass3_redirect.xml \ - test_CrossSiteXHR3.html \ - file_CrossSiteXHR3_inner.html \ - file_CrossSiteXHR3_pass1.xml^headers^ \ - file_CrossSiteXHR3_pass1.xml \ test_bug326337.html \ file_bug326337_inner.html \ file_bug326337_outer.html \ @@ -185,6 +160,13 @@ _TEST_FILES = test_bug5141.html \ test_bug421602.html \ test_bug422537.html \ test_bug424212.html \ + test_XHR.html \ + file_XHR_pass1.xml \ + file_XHR_pass2.txt \ + file_XHR_pass3.txt \ + file_XHR_pass3.txt^headers^ \ + file_XHR_fail1.txt \ + file_XHR_fail1.txt^headers^ \ $(NULL) libs:: $(_TEST_FILES) diff --git a/content/base/test/file_CrossSiteXHR2_fail1.xml^headers^ b/content/base/test/file_CrossSiteXHR2_fail1.xml^headers^ deleted file mode 100644 index 4041b985700e..000000000000 --- a/content/base/test/file_CrossSiteXHR2_fail1.xml^headers^ +++ /dev/null @@ -1,2 +0,0 @@ -HTTP 200 OK -Access-Control: allow diff --git a/content/base/test/file_CrossSiteXHR2_fail2.xml b/content/base/test/file_CrossSiteXHR2_fail2.xml deleted file mode 100644 index ef3f5a75bb1d..000000000000 --- a/content/base/test/file_CrossSiteXHR2_fail2.xml +++ /dev/null @@ -1,2 +0,0 @@ - -hello diff --git a/content/base/test/file_CrossSiteXHR2_inner.html b/content/base/test/file_CrossSiteXHR2_inner.html deleted file mode 100644 index b650b0733473..000000000000 --- a/content/base/test/file_CrossSiteXHR2_inner.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - - - - diff --git a/content/base/test/file_CrossSiteXHR2_pass1.xml b/content/base/test/file_CrossSiteXHR2_pass1.xml deleted file mode 100644 index 06826d6c6755..000000000000 --- a/content/base/test/file_CrossSiteXHR2_pass1.xml +++ /dev/null @@ -1 +0,0 @@ -hello diff --git a/content/base/test/file_CrossSiteXHR2_pass1.xml^headers^ b/content/base/test/file_CrossSiteXHR2_pass1.xml^headers^ deleted file mode 100644 index 56d5a2e22b05..000000000000 --- a/content/base/test/file_CrossSiteXHR2_pass1.xml^headers^ +++ /dev/null @@ -1,2 +0,0 @@ -HTTP 200 OK -Access-Control: allow diff --git a/content/base/test/file_CrossSiteXHR2_pass2.xml b/content/base/test/file_CrossSiteXHR2_pass2.xml deleted file mode 100644 index 2c1cef2a6a8e..000000000000 --- a/content/base/test/file_CrossSiteXHR2_pass2.xml +++ /dev/null @@ -1,2 +0,0 @@ - -hello diff --git a/content/base/test/file_CrossSiteXHR2_pass3.xml b/content/base/test/file_CrossSiteXHR2_pass3.xml deleted file mode 100644 index e3c4ae65adaa..000000000000 --- a/content/base/test/file_CrossSiteXHR2_pass3.xml +++ /dev/null @@ -1 +0,0 @@ -wrong, should redirect diff --git a/content/base/test/file_CrossSiteXHR2_pass3.xml^headers^ b/content/base/test/file_CrossSiteXHR2_pass3.xml^headers^ deleted file mode 100644 index 8da0b49d64d6..000000000000 --- a/content/base/test/file_CrossSiteXHR2_pass3.xml^headers^ +++ /dev/null @@ -1,2 +0,0 @@ -HTTP 301 Moved Permanently -Location: http://test1.example.org/tests/content/base/test/file_CrossSiteXHR2_pass3_redirect.xml diff --git a/content/base/test/file_CrossSiteXHR2_pass3_redirect.xml b/content/base/test/file_CrossSiteXHR2_pass3_redirect.xml deleted file mode 100644 index 2c1cef2a6a8e..000000000000 --- a/content/base/test/file_CrossSiteXHR2_pass3_redirect.xml +++ /dev/null @@ -1,2 +0,0 @@ - -hello diff --git a/content/base/test/file_CrossSiteXHR3_inner.html b/content/base/test/file_CrossSiteXHR3_inner.html deleted file mode 100644 index 2ceedcdbc464..000000000000 --- a/content/base/test/file_CrossSiteXHR3_inner.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - - - - diff --git a/content/base/test/file_CrossSiteXHR3_pass1.xml b/content/base/test/file_CrossSiteXHR3_pass1.xml deleted file mode 100644 index 06826d6c6755..000000000000 --- a/content/base/test/file_CrossSiteXHR3_pass1.xml +++ /dev/null @@ -1 +0,0 @@ -hello diff --git a/content/base/test/file_CrossSiteXHR3_pass1.xml^headers^ b/content/base/test/file_CrossSiteXHR3_pass1.xml^headers^ deleted file mode 100644 index c4aec3e1d30e..000000000000 --- a/content/base/test/file_CrossSiteXHR3_pass1.xml^headers^ +++ /dev/null @@ -1,2 +0,0 @@ -HTTP 200 OK -Access-Control: allow diff --git a/content/base/test/file_CrossSiteXHR_fail1.xml b/content/base/test/file_CrossSiteXHR_fail1.xml deleted file mode 100644 index a26de53a26de..000000000000 --- a/content/base/test/file_CrossSiteXHR_fail1.xml +++ /dev/null @@ -1 +0,0 @@ -hello diff --git a/content/base/test/file_CrossSiteXHR_fail2.xml b/content/base/test/file_CrossSiteXHR_fail2.xml deleted file mode 100644 index f35f8b1cd4e9..000000000000 --- a/content/base/test/file_CrossSiteXHR_fail2.xml +++ /dev/null @@ -1,2 +0,0 @@ - -hello diff --git a/content/base/test/file_CrossSiteXHR_fail2.xml^headers^ b/content/base/test/file_CrossSiteXHR_fail2.xml^headers^ deleted file mode 100644 index 646a36924d77..000000000000 --- a/content/base/test/file_CrossSiteXHR_fail2.xml^headers^ +++ /dev/null @@ -1,2 +0,0 @@ -HTTP 200 OK -Access-Control: allow <*>, deny <*> diff --git a/content/base/test/file_CrossSiteXHR_fail3.xml b/content/base/test/file_CrossSiteXHR_fail3.xml deleted file mode 100644 index 9d0b2e17e38d..000000000000 --- a/content/base/test/file_CrossSiteXHR_fail3.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - -hello diff --git a/content/base/test/file_CrossSiteXHR_fail4.xml b/content/base/test/file_CrossSiteXHR_fail4.xml deleted file mode 100644 index a5d3b03d34a3..000000000000 --- a/content/base/test/file_CrossSiteXHR_fail4.xml +++ /dev/null @@ -1,3 +0,0 @@ - -> -hello diff --git a/content/base/test/file_CrossSiteXHR_pass1.xml b/content/base/test/file_CrossSiteXHR_pass1.xml deleted file mode 100644 index a26de53a26de..000000000000 --- a/content/base/test/file_CrossSiteXHR_pass1.xml +++ /dev/null @@ -1 +0,0 @@ -hello diff --git a/content/base/test/file_CrossSiteXHR_pass1.xml^headers^ b/content/base/test/file_CrossSiteXHR_pass1.xml^headers^ deleted file mode 100644 index 4c535d9a12ba..000000000000 --- a/content/base/test/file_CrossSiteXHR_pass1.xml^headers^ +++ /dev/null @@ -1,2 +0,0 @@ -HTTP 200 OK -Access-Control: allow exclude , deny <*> exclude diff --git a/content/base/test/file_CrossSiteXHR_pass2.xml b/content/base/test/file_CrossSiteXHR_pass2.xml deleted file mode 100644 index f35f8b1cd4e9..000000000000 --- a/content/base/test/file_CrossSiteXHR_pass2.xml +++ /dev/null @@ -1,2 +0,0 @@ - -hello diff --git a/content/base/test/file_CrossSiteXHR_pass3.xml b/content/base/test/file_CrossSiteXHR_pass3.xml deleted file mode 100644 index a75a35d45ce6..000000000000 --- a/content/base/test/file_CrossSiteXHR_pass3.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - -hello diff --git a/content/base/test/file_XHR_fail1.txt b/content/base/test/file_XHR_fail1.txt new file mode 100644 index 000000000000..462209d8da48 --- /dev/null +++ b/content/base/test/file_XHR_fail1.txt @@ -0,0 +1 @@ +redirect file diff --git a/content/base/test/file_XHR_fail1.txt^headers^ b/content/base/test/file_XHR_fail1.txt^headers^ new file mode 100644 index 000000000000..74d6d705997c --- /dev/null +++ b/content/base/test/file_XHR_fail1.txt^headers^ @@ -0,0 +1,2 @@ +HTTP 301 Moved Permanently +Location: http://example.com/tests/content/base/test/file_XHR_pass2.txt diff --git a/content/base/test/file_XHR_fail1b.txt b/content/base/test/file_XHR_fail1b.txt new file mode 100644 index 000000000000..8944657af127 --- /dev/null +++ b/content/base/test/file_XHR_fail1b.txt @@ -0,0 +1 @@ +hello pass diff --git a/content/base/test/file_CrossSiteXHR2_fail1.xml b/content/base/test/file_XHR_pass1.xml similarity index 100% rename from content/base/test/file_CrossSiteXHR2_fail1.xml rename to content/base/test/file_XHR_pass1.xml diff --git a/content/base/test/file_XHR_pass2.txt b/content/base/test/file_XHR_pass2.txt new file mode 100644 index 000000000000..0d7f879f95e7 --- /dev/null +++ b/content/base/test/file_XHR_pass2.txt @@ -0,0 +1 @@ +hello pass diff --git a/content/base/test/file_XHR_pass3.txt b/content/base/test/file_XHR_pass3.txt new file mode 100644 index 000000000000..462209d8da48 --- /dev/null +++ b/content/base/test/file_XHR_pass3.txt @@ -0,0 +1 @@ +redirect file diff --git a/content/base/test/file_XHR_pass3.txt^headers^ b/content/base/test/file_XHR_pass3.txt^headers^ new file mode 100644 index 000000000000..fb5056c38217 --- /dev/null +++ b/content/base/test/file_XHR_pass3.txt^headers^ @@ -0,0 +1,2 @@ +HTTP 301 Moved Permanently +Location: file_XHR_pass2.txt diff --git a/content/base/test/test_CrossSiteXHR2.html b/content/base/test/test_CrossSiteXHR2.html deleted file mode 100644 index f7093f2afbb9..000000000000 --- a/content/base/test/test_CrossSiteXHR2.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - Test for Cross Site XMLHttpRequest with IDN - - - - - -

- - - - -
-
-
- - diff --git a/content/base/test/test_CrossSiteXHR3.html b/content/base/test/test_CrossSiteXHR3.html deleted file mode 100644 index 46d6ed620d5f..000000000000 --- a/content/base/test/test_CrossSiteXHR3.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - Test for Cross Site XMLHttpRequest with Referer-Root - - - - - -

- - - - -
-
-
- - diff --git a/content/base/test/test_CrossSiteXHR.html b/content/base/test/test_XHR.html similarity index 62% rename from content/base/test/test_CrossSiteXHR.html rename to content/base/test/test_XHR.html index e7f671912ed0..17d3eedab106 100644 --- a/content/base/test/test_CrossSiteXHR.html +++ b/content/base/test/test_XHR.html @@ -1,7 +1,7 @@ - Test for Cross Site XMLHttpRequest + Test for XMLHttpRequest @@ -14,17 +14,16 @@
 
 
diff --git a/content/html/document/src/nsHTMLDocument.cpp b/content/html/document/src/nsHTMLDocument.cpp index 7778a9d77ac3..18068c29cb8c 100644 --- a/content/html/document/src/nsHTMLDocument.cpp +++ b/content/html/document/src/nsHTMLDocument.cpp @@ -1987,10 +1987,6 @@ nsHTMLDocument::GetCookie(nsAString& aCookie) aCookie.Truncate(); // clear current cookie in case service fails; // no cookie isn't an error condition. - if (mDisableCookieAccess) { - return NS_OK; - } - // not having a cookie service isn't an error nsCOMPtr service = do_GetService(NS_COOKIESERVICE_CONTRACTID); if (service) { @@ -2017,10 +2013,6 @@ nsHTMLDocument::GetCookie(nsAString& aCookie) NS_IMETHODIMP nsHTMLDocument::SetCookie(const nsAString& aCookie) { - if (mDisableCookieAccess) { - return NS_OK; - } - // not having a cookie service isn't an error nsCOMPtr service = do_GetService(NS_COOKIESERVICE_CONTRACTID); if (service && mDocumentURI) { diff --git a/content/html/document/src/nsHTMLDocument.h b/content/html/document/src/nsHTMLDocument.h index 3cdffd89bcb3..a25da1cb7747 100644 --- a/content/html/document/src/nsHTMLDocument.h +++ b/content/html/document/src/nsHTMLDocument.h @@ -208,11 +208,6 @@ public: return mEditingState; } - virtual void DisableCookieAccess() - { - mDisableCookieAccess = PR_TRUE; - } - virtual nsIContent* GetBodyContentExternal(); void EndUpdate(nsUpdateType aUpdateType); @@ -391,8 +386,6 @@ protected: // SetContentType() on this document? PRInt32 mDefaultNamespaceID; - PRBool mDisableCookieAccess; - // Parser used for constructing document fragments. nsCOMPtr mFragmentParser; }; diff --git a/content/html/document/src/nsIHTMLDocument.h b/content/html/document/src/nsIHTMLDocument.h index 736d66b48868..1c15f4616e23 100644 --- a/content/html/document/src/nsIHTMLDocument.h +++ b/content/html/document/src/nsIHTMLDocument.h @@ -173,11 +173,6 @@ public: virtual nsresult GetDocumentAllResult(const nsAString& aID, nsISupports** aResult) = 0; - /** - * Disables getting and setting cookies - */ - virtual void DisableCookieAccess() = 0; - /** * Get the first child of the root , but don't do * anything -related (like nsIDOMHTMLDocument::GetBody). diff --git a/content/xslt/src/xslt/txMozillaStylesheetCompiler.cpp b/content/xslt/src/xslt/txMozillaStylesheetCompiler.cpp index adffb4a286c5..4c551635ee2d 100644 --- a/content/xslt/src/xslt/txMozillaStylesheetCompiler.cpp +++ b/content/xslt/src/xslt/txMozillaStylesheetCompiler.cpp @@ -70,7 +70,6 @@ #include "nsAttrName.h" #include "nsIScriptError.h" #include "nsIURL.h" -#include "nsCrossSiteListenerProxy.h" #include "nsDOMError.h" static NS_DEFINE_CID(kCParserCID, NS_PARSER_CID); @@ -96,6 +95,7 @@ getSpec(nsIChannel* aChannel, nsAString& aSpec) class txStylesheetSink : public nsIXMLContentSink, public nsIExpatSink, public nsIStreamListener, + public nsIChannelEventSink, public nsIInterfaceRequestor { public: @@ -105,6 +105,7 @@ public: NS_DECL_NSIEXPATSINK NS_DECL_NSISTREAMLISTENER NS_DECL_NSIREQUESTOBSERVER + NS_DECL_NSICHANNELEVENTSINK NS_DECL_NSIINTERFACEREQUESTOR // nsIContentSink @@ -136,12 +137,13 @@ txStylesheetSink::txStylesheetSink(txStylesheetCompiler* aCompiler, mListener = do_QueryInterface(aParser); } -NS_IMPL_ISUPPORTS6(txStylesheetSink, +NS_IMPL_ISUPPORTS7(txStylesheetSink, nsIXMLContentSink, nsIContentSink, nsIExpatSink, nsIStreamListener, nsIRequestObserver, + nsIChannelEventSink, nsIInterfaceRequestor) NS_IMETHODIMP @@ -373,6 +375,29 @@ txStylesheetSink::OnStopRequest(nsIRequest *aRequest, nsISupports *aContext, return rv; } +NS_IMETHODIMP +txStylesheetSink::OnChannelRedirect(nsIChannel *aOldChannel, + nsIChannel *aNewChannel, + PRUint32 aFlags) +{ + NS_PRECONDITION(aNewChannel, "Redirecting to null channel?"); + + nsCOMPtr oldURI; + nsresult rv = aOldChannel->GetURI(getter_AddRefs(oldURI)); + NS_ENSURE_SUCCESS(rv, rv); + + nsCOMPtr newURI; + rv = aNewChannel->GetURI(getter_AddRefs(newURI)); + NS_ENSURE_SUCCESS(rv, rv); + + rv = nsContentUtils::GetSecurityManager()-> + CheckSameOriginURI(oldURI, newURI, PR_TRUE); + NS_ENSURE_SUCCESS(rv, rv); + + return NS_OK; +} + + NS_IMETHODIMP txStylesheetSink::GetInterface(const nsIID& aIID, void** aResult) { @@ -396,7 +421,7 @@ txStylesheetSink::GetInterface(const nsIID& aIID, void** aResult) return NS_OK; } - return NS_ERROR_NO_INTERFACE; + return QueryInterface(aIID, aResult); } class txCompileObserver : public txACompileObserver @@ -469,19 +494,13 @@ txCompileObserver::loadURI(const nsAString& aUri, GetCodebasePrincipal(referrerUri, getter_AddRefs(referrerPrincipal)); NS_ENSURE_SUCCESS(rv, rv); - // Content Policy - PRInt16 shouldLoad = nsIContentPolicy::ACCEPT; - rv = NS_CheckContentLoadPolicy(nsIContentPolicy::TYPE_STYLESHEET, - uri, - referrerPrincipal, - nsnull, - NS_LITERAL_CSTRING("application/xml"), - nsnull, - &shouldLoad); + // Do security check + rv = nsContentUtils:: + CheckSecurityBeforeLoad(uri, referrerPrincipal, + nsIScriptSecurityManager::STANDARD, PR_FALSE, + nsIContentPolicy::TYPE_STYLESHEET, + nsnull, NS_LITERAL_CSTRING("application/xml")); NS_ENSURE_SUCCESS(rv, rv); - if (NS_CP_REJECTED(shouldLoad)) { - return NS_ERROR_DOM_BAD_URI; - } return startLoad(uri, aCompiler, referrerPrincipal); } @@ -537,13 +556,7 @@ txCompileObserver::startLoad(nsIURI* aUri, txStylesheetCompiler* aCompiler, parser->SetContentSink(sink); parser->Parse(aUri); - // Always install in case of redirects - nsCOMPtr listener = - new nsCrossSiteListenerProxy(sink, aReferrerPrincipal, channel, &rv); - NS_ENSURE_TRUE(listener, NS_ERROR_OUT_OF_MEMORY); - NS_ENSURE_SUCCESS(rv, rv); - - return channel->AsyncOpen(listener, parser); + return channel->AsyncOpen(sink, parser); } nsresult @@ -554,20 +567,14 @@ TX_LoadSheet(nsIURI* aUri, txMozillaXSLTProcessor* aProcessor, aUri->GetSpec(spec); PR_LOG(txLog::xslt, PR_LOG_ALWAYS, ("TX_LoadSheet: %s\n", spec.get())); - // Content Policy - PRInt16 shouldLoad = nsIContentPolicy::ACCEPT; - nsresult rv = - NS_CheckContentLoadPolicy(nsIContentPolicy::TYPE_STYLESHEET, - aUri, - aCallerPrincipal, - aProcessor->GetSourceContentModel(), - NS_LITERAL_CSTRING("application/xml"), - nsnull, - &shouldLoad); + // Pass source document as the context + nsresult rv = nsContentUtils:: + CheckSecurityBeforeLoad(aUri, aCallerPrincipal, + nsIScriptSecurityManager::STANDARD, PR_FALSE, + nsIContentPolicy::TYPE_STYLESHEET, + aProcessor->GetSourceContentModel(), + NS_LITERAL_CSTRING("application/xml")); NS_ENSURE_SUCCESS(rv, rv); - if (NS_CP_REJECTED(shouldLoad)) { - return NS_ERROR_DOM_BAD_URI; - } nsRefPtr observer = new txCompileObserver(aProcessor, aLoadGroup); @@ -709,19 +716,13 @@ txSyncCompileObserver::loadURI(const nsAString& aUri, GetCodebasePrincipal(referrerUri, getter_AddRefs(referrerPrincipal)); NS_ENSURE_SUCCESS(rv, rv); - // Content Policy - PRInt16 shouldLoad = nsIContentPolicy::ACCEPT; - rv = NS_CheckContentLoadPolicy(nsIContentPolicy::TYPE_STYLESHEET, - uri, - referrerPrincipal, - nsnull, - NS_LITERAL_CSTRING("application/xml"), - nsnull, - &shouldLoad); + // Security checks + rv = nsContentUtils:: + CheckSecurityBeforeLoad(uri, referrerPrincipal, + nsIScriptSecurityManager::STANDARD, + PR_FALSE, nsIContentPolicy::TYPE_STYLESHEET, + nsnull, NS_LITERAL_CSTRING("application/xml")); NS_ENSURE_SUCCESS(rv, rv); - if (NS_CP_REJECTED(shouldLoad)) { - return NS_ERROR_DOM_BAD_URI; - } // This is probably called by js, a loadGroup for the channel doesn't // make sense. From a6b9d2c84a18ee9bb0a5e4cda430c6dd9203be65 Mon Sep 17 00:00:00 2001 From: "karlt+@karlt.net" Date: Tue, 25 Mar 2008 19:51:45 -0700 Subject: [PATCH 016/129] Need some space between the overline and "h" for Mac's fonts and antialiasing. --- layout/reftests/bugs/421955-1-ref.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layout/reftests/bugs/421955-1-ref.html b/layout/reftests/bugs/421955-1-ref.html index c42c5de5de16..c56dbda4b17b 100644 --- a/layout/reftests/bugs/421955-1-ref.html +++ b/layout/reftests/bugs/421955-1-ref.html @@ -1,6 +1,6 @@ -

̅hidden

+

̅-hidden

From 0dd3face77e43e47ea75a5951a18fa1c269d7dbb Mon Sep 17 00:00:00 2001 From: "jonas@sicking.cc" Date: Tue, 25 Mar 2008 19:59:16 -0700 Subject: [PATCH 017/129] fix redness, forgot this part --- layout/build/nsLayoutStatics.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/layout/build/nsLayoutStatics.cpp b/layout/build/nsLayoutStatics.cpp index 9a48f2b54c6f..dededd6a07bc 100644 --- a/layout/build/nsLayoutStatics.cpp +++ b/layout/build/nsLayoutStatics.cpp @@ -310,7 +310,6 @@ nsLayoutStatics::Shutdown() nsTextServicesDocument::Shutdown(); #endif - nsXMLHttpRequest::ShutdownACCache(); NS_ShutdownFocusSuppressor(); } From 893656978c3f5b7a387c6e4ea727809f16392892 Mon Sep 17 00:00:00 2001 From: "kaie@kuix.de" Date: Tue, 25 Mar 2008 20:06:52 -0700 Subject: [PATCH 018/129] Bug 420187. Backing out all 3 patches from today, because of regressions. a=shaver --- .../boot/src/nsSecureBrowserUIImpl.cpp | 56 +++--------- .../manager/boot/src/nsSecureBrowserUIImpl.h | 5 +- security/manager/ssl/src/nsNSSCallbacks.cpp | 88 ++++++------------- security/manager/ssl/src/nsNSSCallbacks.h | 8 -- security/manager/ssl/src/nsNSSComponent.cpp | 13 --- security/manager/ssl/src/nsNSSIOLayer.cpp | 77 +++------------- security/manager/ssl/src/nsNSSIOLayer.h | 7 +- security/manager/ssl/src/nsSSLThread.cpp | 22 ++++- security/manager/ssl/src/nsSSLThread.h | 4 +- 9 files changed, 76 insertions(+), 204 deletions(-) diff --git a/security/manager/boot/src/nsSecureBrowserUIImpl.cpp b/security/manager/boot/src/nsSecureBrowserUIImpl.cpp index 971b81985fc9..98049c5c4681 100644 --- a/security/manager/boot/src/nsSecureBrowserUIImpl.cpp +++ b/security/manager/boot/src/nsSecureBrowserUIImpl.cpp @@ -162,7 +162,6 @@ nsSecureBrowserUIImpl::nsSecureBrowserUIImpl() mMonitor = PR_NewMonitor(); mOnStateLocationChangeReentranceDetection = 0; mTransferringRequests.ops = nsnull; - mInconsistency = PR_FALSE; mNewToplevelSecurityState = STATE_IS_INSECURE; mNewToplevelIsEV = PR_FALSE; mNewToplevelSecurityStateKnown = PR_TRUE; @@ -597,6 +596,10 @@ nsSecureBrowserUIImpl::OnStateChange(nsIWebProgress* aWebProgress, PRUint32 aProgressStateFlags, nsresult aStatus) { + nsAutoAtomic atomic(mOnStateLocationChangeReentranceDetection); + NS_ASSERTION(mOnStateLocationChangeReentranceDetection == 1, + "unexpected parallel nsIWebProgress OnStateChange and/or OnLocationChange notification"); + /* All discussion, unless otherwise mentioned, only refers to http, https, file or wyciwig requests. @@ -687,43 +690,19 @@ nsSecureBrowserUIImpl::OnStateChange(nsIWebProgress* aWebProgress, regardless of whether the load flags indicate a top level document. */ - nsAutoAtomic atomic(mOnStateLocationChangeReentranceDetection); - if (mOnStateLocationChangeReentranceDetection > 1) - { - nsAutoMonitor lock(mMonitor); - mInconsistency = PR_TRUE; - // we ignore all events until the reentrance is gone - return NS_ERROR_FAILURE; - } - - PRBool mustResetAfterInconsistency = PR_FALSE; - nsCOMPtr windowForProgress; + aWebProgress->GetDOMWindow(getter_AddRefs(windowForProgress)); + nsCOMPtr window; PRBool isViewSource; { nsAutoMonitor lock(mMonitor); - - if (mInconsistency) { - mInconsistency = PR_FALSE; - mustResetAfterInconsistency = PR_TRUE; - } - window = do_QueryReferent(mWindow); NS_ASSERTION(window, "Window has gone away?!"); isViewSource = mIsViewSource; } - if (mustResetAfterInconsistency) { - mNewToplevelSecurityState = STATE_IS_INSECURE; - mNewToplevelIsEV = PR_FALSE; - mNewToplevelSecurityStateKnown = PR_TRUE; - mSSLStatus = nsnull; - ResetStateTracking(); - } - - aWebProgress->GetDOMWindow(getter_AddRefs(windowForProgress)); const PRBool isToplevelProgress = (windowForProgress.get() == window.get()); #ifdef PR_LOGGING @@ -1272,8 +1251,8 @@ void nsSecureBrowserUIImpl::UpdateMyFlags(PRBool &showWarning, lockIconState &wa mNotifiedToplevelIsEV = mNewToplevelIsEV; } -nsresult nsSecureBrowserUIImpl::TellTheWorld(PRBool showWarning, - lockIconState warnSecurityState, +nsresult nsSecureBrowserUIImpl::TellTheWorld(PRBool &showWarning, + lockIconState &warnSecurityState, nsIRequest* aRequest) { nsCOMPtr temp_ToplevelEventSink; @@ -1340,20 +1319,8 @@ nsSecureBrowserUIImpl::OnLocationChange(nsIWebProgress* aWebProgress, nsIURI* aLocation) { nsAutoAtomic atomic(mOnStateLocationChangeReentranceDetection); - if (mOnStateLocationChangeReentranceDetection > 1) - { - nsAutoMonitor lock(mMonitor); - mInconsistency = PR_TRUE; - // We ignore all events until the reentrance is gone - // and has been reset by ::OnStateChange. - return NS_ERROR_FAILURE; - } - - // We could test for mInconsistency right here and exit, - // but let's avoid another lock to mMonitor. - // We'll do the preparation work based on the parameters, - // and once we are ready to lock the monitor, we'll do - // the inconsistency check. + NS_ASSERTION(mOnStateLocationChangeReentranceDetection == 1, + "unexpected parallel nsIWebProgress OnStateChange and/or OnLocationChange notification"); PRBool updateIsViewSource = PR_FALSE; PRBool temp_IsViewSource = PR_FALSE; @@ -1377,9 +1344,6 @@ nsSecureBrowserUIImpl::OnLocationChange(nsIWebProgress* aWebProgress, { nsAutoMonitor lock(mMonitor); - if (mInconsistency) { - return NS_ERROR_FAILURE; - } if (updateIsViewSource) { mIsViewSource = temp_IsViewSource; } diff --git a/security/manager/boot/src/nsSecureBrowserUIImpl.h b/security/manager/boot/src/nsSecureBrowserUIImpl.h index 93779619b729..7e7baf510b25 100644 --- a/security/manager/boot/src/nsSecureBrowserUIImpl.h +++ b/security/manager/boot/src/nsSecureBrowserUIImpl.h @@ -114,7 +114,6 @@ protected: void ResetStateTracking(); PRUint32 mNewToplevelSecurityState; - PRPackedBool mInconsistency; PRPackedBool mNewToplevelIsEV; PRPackedBool mNewToplevelSecurityStateKnown; PRPackedBool mIsViewSource; @@ -130,8 +129,8 @@ protected: static nsresult MapInternalToExternalState(PRUint32* aState, lockIconState lock, PRBool ev); nsresult UpdateSecurityState(nsIRequest* aRequest); void UpdateMyFlags(PRBool &showWarning, lockIconState &warnSecurityState); - nsresult TellTheWorld(PRBool showWarning, - lockIconState warnSecurityState, + nsresult TellTheWorld(PRBool &showWarning, + lockIconState &warnSecurityState, nsIRequest* aRequest); nsresult EvaluateAndUpdateSecurityState(nsIRequest *aRequest); diff --git a/security/manager/ssl/src/nsNSSCallbacks.cpp b/security/manager/ssl/src/nsNSSCallbacks.cpp index 79aa5d932691..30db376147f2 100644 --- a/security/manager/ssl/src/nsNSSCallbacks.cpp +++ b/security/manager/ssl/src/nsNSSCallbacks.cpp @@ -80,13 +80,12 @@ NSSCleanupAutoPtrClass(CERTCertificate, CERT_DestroyCertificate) extern PRLogModuleInfo* gPIPNSSLog; #endif -class nsHTTPDownloadEvent : public nsRunnable { -public: +struct nsHTTPDownloadEvent : nsRunnable { nsHTTPDownloadEvent(); ~nsHTTPDownloadEvent(); NS_IMETHOD Run(); - + nsNSSHttpRequestSession *mRequestSession; // no ownership nsCOMPtr mListener; @@ -121,8 +120,9 @@ nsHTTPDownloadEvent::Run() // Create a loadgroup for this new channel. This way if the channel // is redirected, we'll have a way to cancel the resulting channel. - nsCOMPtr lg = do_CreateInstance(NS_LOADGROUP_CONTRACTID); - chan->SetLoadGroup(lg); + nsCOMPtr loadGroup = + do_CreateInstance(NS_LOADGROUP_CONTRACTID); + chan->SetLoadGroup(loadGroup); if (mRequestSession->mHasPostData) { @@ -148,13 +148,11 @@ nsHTTPDownloadEvent::Run() rv = hchan->SetRequestMethod(mRequestSession->mRequestMethod); NS_ENSURE_SUCCESS(rv, rv); + nsSSLThread::rememberPendingHTTPRequest(loadGroup); + mResponsibleForDoneSignal = PR_FALSE; mListener->mResponsibleForDoneSignal = PR_TRUE; - mListener->mLoadGroup = lg.get(); - NS_ADDREF(mListener->mLoadGroup); - mListener->mLoadGroupOwnerThread = PR_GetCurrentThread(); - rv = NS_NewStreamLoader(getter_AddRefs(mListener->mLoader), mListener); @@ -164,21 +162,16 @@ nsHTTPDownloadEvent::Run() if (NS_FAILED(rv)) { mListener->mResponsibleForDoneSignal = PR_FALSE; mResponsibleForDoneSignal = PR_TRUE; - - NS_RELEASE(mListener->mLoadGroup); - mListener->mLoadGroup = nsnull; - mListener->mLoadGroupOwnerThread = nsnull; + + nsSSLThread::rememberPendingHTTPRequest(nsnull); } return NS_OK; } struct nsCancelHTTPDownloadEvent : nsRunnable { - nsCOMPtr mListener; - NS_IMETHOD Run() { - mListener->FreeLoadGroup(PR_TRUE); - mListener = nsnull; + nsSSLThread::cancelPendingHTTPRequest(); return NS_OK; } }; @@ -374,6 +367,7 @@ nsNSSHttpRequestSession::internal_send_receive_attempt(PRBool &retryable_error, } PRBool request_canceled = PR_FALSE; + PRBool aborted_wait = PR_FALSE; { nsAutoLock locker(waitLock); @@ -416,26 +410,30 @@ nsNSSHttpRequestSession::internal_send_receive_attempt(PRBool &retryable_error, if (!request_canceled) { - PRBool wantExit = nsSSLThread::exitRequested(); - PRBool timeout = - (PRIntervalTime)(PR_IntervalNow() - start_time) > mTimeoutInterval; - - if (wantExit || timeout) + if ((PRIntervalTime)(PR_IntervalNow() - start_time) > mTimeoutInterval) { request_canceled = PR_TRUE; - - nsRefPtr cancelevent = new nsCancelHTTPDownloadEvent; - cancelevent->mListener = mListener; + // but we'll to continue to wait for waitFlag + + nsCOMPtr cancelevent = new nsCancelHTTPDownloadEvent; rv = NS_DispatchToMainThread(cancelevent); - if (NS_FAILED(rv)) { + if (NS_FAILED(rv)) + { NS_WARNING("cannot post cancel event"); + aborted_wait = PR_TRUE; + break; } - break; } } } } + if (aborted_wait) + { + // we couldn't cancel it, let's no longer reference it + nsSSLThread::rememberPendingHTTPRequest(nsnull); + } + if (request_canceled) return SECFailure; @@ -537,9 +535,7 @@ nsHTTPListener::nsHTTPListener() mLock(nsnull), mCondition(nsnull), mWaitFlag(PR_TRUE), - mResponsibleForDoneSignal(PR_FALSE), - mLoadGroup(nsnull), - mLoadGroupOwnerThread(nsnull) + mResponsibleForDoneSignal(PR_FALSE) { } @@ -579,34 +575,6 @@ nsHTTPListener::~nsHTTPListener() NS_IMPL_THREADSAFE_ISUPPORTS1(nsHTTPListener, nsIStreamLoaderObserver) -void -nsHTTPListener::FreeLoadGroup(PRBool aCancelLoad) -{ - nsILoadGroup *lg = nsnull; - - if (mLock) { - nsAutoLock locker(mLock); - - if (mLoadGroup) { - if (mLoadGroupOwnerThread != PR_GetCurrentThread()) { - NS_ASSERTION(PR_FALSE, - "attempt to access nsHTTPDownloadEvent::mLoadGroup on multiple threads, leaking it!"); - } - else { - lg = mLoadGroup; - mLoadGroup = nsnull; - } - } - } - - if (lg) { - if (aCancelLoad) { - lg->Cancel(NS_ERROR_ABORT); - } - NS_RELEASE(lg); - } -} - NS_IMETHODIMP nsHTTPListener::OnStreamComplete(nsIStreamLoader* aLoader, nsISupports* aContext, @@ -616,8 +584,6 @@ nsHTTPListener::OnStreamComplete(nsIStreamLoader* aLoader, { mResultCode = aStatus; - FreeLoadGroup(PR_FALSE); - nsCOMPtr req; nsCOMPtr hchan; @@ -662,6 +628,8 @@ nsHTTPListener::OnStreamComplete(nsIStreamLoader* aLoader, void nsHTTPListener::send_done_signal() { + nsSSLThread::rememberPendingHTTPRequest(nsnull); + mResponsibleForDoneSignal = PR_FALSE; { diff --git a/security/manager/ssl/src/nsNSSCallbacks.h b/security/manager/ssl/src/nsNSSCallbacks.h index abf314df902e..68d5f358a0f6 100644 --- a/security/manager/ssl/src/nsNSSCallbacks.h +++ b/security/manager/ssl/src/nsNSSCallbacks.h @@ -86,14 +86,6 @@ public: PRBool mResponsibleForDoneSignal; void send_done_signal(); - - // no nsCOMPtr. When I use it, I get assertions about - // loadgroup not being thread safe. - // So, let's use a raw pointer and ensure we only create and destroy - // it on the network thread ourselves. - nsILoadGroup *mLoadGroup; - PRThread *mLoadGroupOwnerThread; - void FreeLoadGroup(PRBool aCancelLoad); }; class nsNSSHttpServerSession diff --git a/security/manager/ssl/src/nsNSSComponent.cpp b/security/manager/ssl/src/nsNSSComponent.cpp index a48faada70e3..38d4813e79f7 100644 --- a/security/manager/ssl/src/nsNSSComponent.cpp +++ b/security/manager/ssl/src/nsNSSComponent.cpp @@ -1722,19 +1722,6 @@ nsNSSComponent::Init() return rv; } - // Access our string bundles now, this prevents assertions from I/O - // - nsStandardURL not thread-safe - // - wrong thread: 'NS_IsMainThread()' in nsIOService.cpp - // when loading error strings on the SSL threads. - { - NS_NAMED_LITERAL_STRING(dummy_name, "dummy"); - nsXPIDLString result; - mPIPNSSBundle->GetStringFromName(dummy_name.get(), - getter_Copies(result)); - mNSSErrorsBundle->GetStringFromName(dummy_name.get(), - getter_Copies(result)); - } - if (!mPrefBranch) { mPrefBranch = do_GetService(NS_PREFSERVICE_CONTRACTID); NS_ASSERTION(mPrefBranch, "Unable to get pref service"); diff --git a/security/manager/ssl/src/nsNSSIOLayer.cpp b/security/manager/ssl/src/nsNSSIOLayer.cpp index e7558b3ca89c..91a63a94404d 100644 --- a/security/manager/ssl/src/nsNSSIOLayer.cpp +++ b/security/manager/ssl/src/nsNSSIOLayer.cpp @@ -204,7 +204,6 @@ nsNSSSocketInfo::nsNSSSocketInfo() : mFd(nsnull), mBlockingState(blocking_state_unknown), mSecurityState(nsIWebProgressListener::STATE_IS_INSECURE), - mDocShellDependentStuffKnown(PR_FALSE), mExternalErrorReporting(PR_FALSE), mForSTARTTLS(PR_FALSE), mHandshakePending(PR_TRUE), @@ -320,30 +319,15 @@ nsNSSSocketInfo::SetNotificationCallbacks(nsIInterfaceRequestor* aCallbacks) return NS_OK; } - mCallbacks = aCallbacks; - mDocShellDependentStuffKnown = PR_FALSE; - - return NS_OK; -} - -nsresult -nsNSSSocketInfo::EnsureDocShellDependentStuffKnown() -{ - if (mDocShellDependentStuffKnown) - return NS_OK; - - if (!mCallbacks || nsSSLThread::exitRequested()) - return NS_ERROR_FAILURE; - - mDocShellDependentStuffKnown = PR_TRUE; - nsCOMPtr proxiedCallbacks; NS_GetProxyForObject(NS_PROXY_TO_MAIN_THREAD, NS_GET_IID(nsIInterfaceRequestor), - static_cast(mCallbacks), + static_cast(aCallbacks), NS_PROXY_SYNC, getter_AddRefs(proxiedCallbacks)); + mCallbacks = proxiedCallbacks; + // Are we running within a context that wants external SSL error reporting? // We'll look at the presence of a security UI object inside docshell. // If the docshell wants the lock icon, you'll get the ssl error pages, too. @@ -355,7 +339,7 @@ nsNSSSocketInfo::EnsureDocShellDependentStuffKnown() nsCOMPtr docshell; - nsCOMPtr item(do_GetInterface(proxiedCallbacks)); + nsCOMPtr item(do_GetInterface(mCallbacks)); if (item) { nsCOMPtr proxiedItem; @@ -411,8 +395,6 @@ nsNSSSocketInfo::EnsureDocShellDependentStuffKnown() nsresult nsNSSSocketInfo::GetExternalErrorReporting(PRBool* state) { - nsresult rv = EnsureDocShellDependentStuffKnown(); - NS_ENSURE_SUCCESS(rv, rv); *state = mExternalErrorReporting; return NS_OK; } @@ -483,17 +465,10 @@ NS_IMETHODIMP nsNSSSocketInfo::GetInterface(const nsIID & uuid, void * *result) rv = ir->GetInterface(uuid, result); } else { - if (nsSSLThread::exitRequested()) - return NS_ERROR_FAILURE; + // Proxy of the channel callbacks should probably go here, rather + // than in the password callback code - nsCOMPtr proxiedCallbacks; - NS_GetProxyForObject(NS_PROXY_TO_MAIN_THREAD, - NS_GET_IID(nsIInterfaceRequestor), - mCallbacks, - NS_PROXY_SYNC, - getter_AddRefs(proxiedCallbacks)); - - rv = proxiedCallbacks->GetInterface(uuid, result); + rv = mCallbacks->GetInterface(uuid, result); } return rv; } @@ -644,8 +619,6 @@ nsresult nsNSSSocketInfo::SetFileDescPtr(PRFileDesc* aFilePtr) nsresult nsNSSSocketInfo::GetPreviousCert(nsIX509Cert** _result) { NS_ENSURE_ARG_POINTER(_result); - nsresult rv = EnsureDocShellDependentStuffKnown(); - NS_ENSURE_SUCCESS(rv, rv); *_result = mPreviousCert; NS_IF_ADDREF(*_result); @@ -1166,9 +1139,6 @@ displayAlert(nsAFlatString &formattedString, nsNSSSocketInfo *infoObject) // The interface requestor object may not be safe, so proxy the call to get // the nsIPrompt. - if (nsSSLThread::exitRequested()) - return NS_ERROR_FAILURE; - nsCOMPtr proxiedCallbacks; NS_GetProxyForObject(NS_PROXY_TO_MAIN_THREAD, NS_GET_IID(nsIInterfaceRequestor), @@ -1203,10 +1173,6 @@ nsHandleSSLError(nsNSSSocketInfo *socketInfo, PRInt32 err) return NS_OK; } - if (nsSSLThread::exitRequested()) { - return NS_ERROR_FAILURE; - } - nsresult rv; NS_DEFINE_CID(nssComponentCID, NS_NSSCOMPONENT_CID); nsCOMPtr nssComponent(do_GetService(nssComponentCID, &rv)); @@ -1221,16 +1187,9 @@ nsHandleSSLError(nsNSSSocketInfo *socketInfo, PRInt32 err) socketInfo->GetPort(&port); // Try to get a nsISSLErrorListener implementation from the socket consumer. - nsCOMPtr cb; - socketInfo->GetNotificationCallbacks(getter_AddRefs(cb)); - if (cb) { - nsCOMPtr callbacks; - NS_GetProxyForObject(NS_PROXY_TO_MAIN_THREAD, - NS_GET_IID(nsIInterfaceRequestor), - cb, - NS_PROXY_SYNC, - getter_AddRefs(callbacks)); - + nsCOMPtr callbacks; + socketInfo->GetNotificationCallbacks(getter_AddRefs(callbacks)); + if (callbacks) { nsCOMPtr sel = do_GetInterface(callbacks); if (sel) { nsISSLErrorListener *proxy_sel = nsnull; @@ -2784,9 +2743,6 @@ nsNSSBadCertHandler(void *arg, PRFileDesc *sslSocket) if (!infoObject) return SECFailure; - if (nsSSLThread::exitRequested()) - return cancel_and_failure(infoObject); - CERTCertificate *peerCert = nsnull; CERTCertificateCleaner peerCertCleaner(peerCert); peerCert = SSL_PeerCertificate(sslSocket); @@ -2955,16 +2911,9 @@ nsNSSBadCertHandler(void *arg, PRFileDesc *sslSocket) nsresult rv; // Try to get a nsIBadCertListener2 implementation from the socket consumer. - nsCOMPtr cb; - infoObject->GetNotificationCallbacks(getter_AddRefs(cb)); - if (cb) { - nsCOMPtr callbacks; - NS_GetProxyForObject(NS_PROXY_TO_MAIN_THREAD, - NS_GET_IID(nsIInterfaceRequestor), - cb, - NS_PROXY_SYNC, - getter_AddRefs(callbacks)); - + nsCOMPtr callbacks; + infoObject->GetNotificationCallbacks(getter_AddRefs(callbacks)); + if (callbacks) { nsCOMPtr bcl = do_GetInterface(callbacks); if (bcl) { nsIBadCertListener2 *proxy_bcl = nsnull; diff --git a/security/manager/ssl/src/nsNSSIOLayer.h b/security/manager/ssl/src/nsNSSIOLayer.h index b5fddb03a270..54ea1be056d9 100644 --- a/security/manager/ssl/src/nsNSSIOLayer.h +++ b/security/manager/ssl/src/nsNSSIOLayer.h @@ -198,15 +198,14 @@ protected: nsCOMPtr mCallbacks; PRFileDesc* mFd; nsCOMPtr mCert; - nsCOMPtr mPreviousCert; // DocShellDependent + nsCOMPtr mPreviousCert; enum { blocking_state_unknown, is_nonblocking_socket, is_blocking_socket } mBlockingState; PRUint32 mSecurityState; nsString mShortDesc; nsString mErrorMessage; - PRPackedBool mDocShellDependentStuffKnown; - PRPackedBool mExternalErrorReporting; // DocShellDependent + PRPackedBool mExternalErrorReporting; PRPackedBool mForSTARTTLS; PRPackedBool mHandshakePending; PRPackedBool mCanceled; @@ -224,8 +223,6 @@ protected: nsSSLSocketThreadData *mThreadData; - nsresult EnsureDocShellDependentStuffKnown(); - private: virtual void virtualDestroyNSSReference(); void destructorSafeDestroyNSSReference(); diff --git a/security/manager/ssl/src/nsSSLThread.cpp b/security/manager/ssl/src/nsSSLThread.cpp index 8c5ccc3aa890..1304f695f664 100644 --- a/security/manager/ssl/src/nsSSLThread.cpp +++ b/security/manager/ssl/src/nsSSLThread.cpp @@ -1120,14 +1120,28 @@ void nsSSLThread::Run(void) } } -PRBool nsSSLThread::exitRequested() +void nsSSLThread::rememberPendingHTTPRequest(nsIRequest *aRequest) { if (!ssl_thread_singleton) - return PR_FALSE; + return; - // no lock + nsAutoLock threadLock(ssl_thread_singleton->mMutex); - return ssl_thread_singleton->mExitRequested; + ssl_thread_singleton->mPendingHTTPRequest = aRequest; +} + +void nsSSLThread::cancelPendingHTTPRequest() +{ + if (!ssl_thread_singleton) + return; + + nsAutoLock threadLock(ssl_thread_singleton->mMutex); + + if (ssl_thread_singleton->mPendingHTTPRequest) + { + ssl_thread_singleton->mPendingHTTPRequest->Cancel(NS_ERROR_ABORT); + ssl_thread_singleton->mPendingHTTPRequest = nsnull; + } } nsSSLThread *nsSSLThread::ssl_thread_singleton = nsnull; diff --git a/security/manager/ssl/src/nsSSLThread.h b/security/manager/ssl/src/nsSSLThread.h index d91b2ee77278..5e60f11a52a3 100644 --- a/security/manager/ssl/src/nsSSLThread.h +++ b/security/manager/ssl/src/nsSSLThread.h @@ -152,7 +152,9 @@ public: static nsresult requestActivateSSL(nsNSSSocketInfo *si); - static PRBool exitRequested(); + // Called from either Necko or SSL thread. + static void rememberPendingHTTPRequest(nsIRequest *aRequest); + static void cancelPendingHTTPRequest(); }; #endif //_NSSSLTHREAD_H_ From 27dbec10625b2b4500f9e466e61234ea026186ec Mon Sep 17 00:00:00 2001 From: "karlt+@karlt.net" Date: Tue, 25 Mar 2008 20:39:36 -0700 Subject: [PATCH 019/129] Bug 363240 - incorrect MathML width and position (nsMathMLContainerFrames have zero preferred width Test widths of table cells with msqrt, mfenced, and stretchy mo, and mo with l/rspace. --- layout/reftests/mathml/reftest.list | 1 + .../reftests/mathml/table-width-1-ref.xhtml | 72 +++++++++++++++++++ layout/reftests/mathml/table-width-1.xhtml | 67 +++++++++++++++++ 3 files changed, 140 insertions(+) create mode 100644 layout/reftests/mathml/table-width-1-ref.xhtml create mode 100644 layout/reftests/mathml/table-width-1.xhtml diff --git a/layout/reftests/mathml/reftest.list b/layout/reftests/mathml/reftest.list index dd1b0690b22b..18c8a1333b59 100644 --- a/layout/reftests/mathml/reftest.list +++ b/layout/reftests/mathml/reftest.list @@ -1,2 +1,3 @@ == mi-mathvariant-1.xhtml mi-mathvariant-1-ref.xhtml == mi-mathvariant-2.xhtml mi-mathvariant-2-ref.xhtml +== table-width-1.xhtml table-width-1-ref.xhtml diff --git a/layout/reftests/mathml/table-width-1-ref.xhtml b/layout/reftests/mathml/table-width-1-ref.xhtml new file mode 100644 index 000000000000..315ca358bf21 --- /dev/null +++ b/layout/reftests/mathml/table-width-1-ref.xhtml @@ -0,0 +1,72 @@ + + + + + + + +
+ + + + 2 + + + 3 + = + 5 + + + +
+ + + +
+ + + + + 0 + 90 + + + + +
+ + +
+ + + { + + 0 + 5 + 9 + + } + + +
+ + diff --git a/layout/reftests/mathml/table-width-1.xhtml b/layout/reftests/mathml/table-width-1.xhtml new file mode 100644 index 000000000000..9779270349a1 --- /dev/null +++ b/layout/reftests/mathml/table-width-1.xhtml @@ -0,0 +1,67 @@ + + + Check that the content box is large enough + + + + + +
+ + + 2 + + + 3 + = + 5 + + +
+ + + +
+ + + + 0 + 90 + + + +
+ + +
+ + + { + + 0 + 5 + 9 + + } + + +
+ + From b5301660f897715794baafdf0c2bb1189c853a76 Mon Sep 17 00:00:00 2001 From: "karlt+@karlt.net" Date: Tue, 25 Mar 2008 21:47:17 -0700 Subject: [PATCH 020/129] Prefix msqrt with a multiplier as Mac's font and antialiasing causes the radical symbol to affect two pixels to the left of content by up to 8/256. --- layout/reftests/mathml/table-width-1-ref.xhtml | 4 +++- layout/reftests/mathml/table-width-1.xhtml | 18 +++++++++++------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/layout/reftests/mathml/table-width-1-ref.xhtml b/layout/reftests/mathml/table-width-1-ref.xhtml index 315ca358bf21..1a204ec3cd90 100644 --- a/layout/reftests/mathml/table-width-1-ref.xhtml +++ b/layout/reftests/mathml/table-width-1-ref.xhtml @@ -13,11 +13,13 @@ + 60 + 2 + 3 - = + - 5 diff --git a/layout/reftests/mathml/table-width-1.xhtml b/layout/reftests/mathml/table-width-1.xhtml index 9779270349a1..13219815c957 100644 --- a/layout/reftests/mathml/table-width-1.xhtml +++ b/layout/reftests/mathml/table-width-1.xhtml @@ -13,13 +13,17 @@
- - 2 - + - 3 - = - 5 - + + 60 + + + 2 + + + 3 + - + 5 + +
From ee98756eae0e7510370b35e7711cc138594926d9 Mon Sep 17 00:00:00 2001 From: "reed@reedloden.com" Date: Tue, 25 Mar 2008 21:49:05 -0700 Subject: [PATCH 021/129] Bug 424996 - "close.png should use close box with red background for active state" [p=faaborg@mozilla.com (Alex Faaborg) a1.9b5=beltzner] --- .../themes/winstripe/global/icons/close.png | Bin 1950 -> 1909 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/toolkit/themes/winstripe/global/icons/close.png b/toolkit/themes/winstripe/global/icons/close.png index 4cd8d1e860aca26e9bf566b185e68e9e3f34f377..c97d7bcfbbed63be8b734fa6755a2d564fbd740c 100755 GIT binary patch delta 1802 zcmV+l2le=#5A_a^V1Lp{L_t(o!`+xqOcPlg$G^ow0ZSEiYFk=5NP}yEC>vYQ7!*UY zY$P$pn4sR+P1tzo#kldP7o$?SG=atqobVo*wGEx;||G z`n=n>W3iVnbH{T!J34;)>D4RxzqXe8nwsqLhKH#i8Zr_>2qC+6tzW-x-M8Nc0u>da z=yX~v*+RW|AxY6_AaMKkojbq%#@lnn(=<)fG+@&vzrU_75b${1?ric#N5kQ0G!W?P z8yNWgcYuy(Z+~xNV`F1OLw$W^Wo4x(noQZ^jg5_sNm6}%Fc=Kpy$cvsl@LPO+CV|lM%*ECIQYa@gZ zRZS!+Dk>_<%S|Raq1ofHynTIref|A4HUCT?K*;Ru?0+m54h=;jkq8hDClZMSuzdNV zMT-^zZnq!^0@tzY@%Z%g^fbR-TkCSUTwKRE%yPveMAHZX^b6&WKVq?142Z?1rlzKV zB}>d^vl&>vytK5ml<{Irs;a6g_sl|} zCr?5lAb%2xM50kZ5a@loT;=6XC)Y(H(9E-TreksXe2kN89@~M0q|@m%_Y)J7 zlarIc_U(rcA3h9x^Ubzx+qMCdlks>w&OK{qI)4_Y&&N25q9}^;v6rN9I2;Ck_~FMN z+uMQFtJkbqy&8}tNeYL#XYEYK;y#tv$U3U3wByX2&Z45CBH+oBGiT160leP!_V#ul znQUokY2iAXt)Zczf$LbDJ|E-o6_gtuD`9M)nOUtSlgR`O4_~=*7hf14goVWuV24@4fy^0_U+rpbpr!Oj~+b=M58B9 zo;(S--E=@lM#jd*#<)(FRkg5?|IZbVm48x6die0+!w*ZIrU9YQxpU{v0q@??lDu~9 z?%lh0bKU*>=g*%%54?DB@#4jcfFRHbWIJD9vK2*9WSN%ANQ7T6C@`4{3V=tC9z7Zw z0@7*v2-&!CXN+(Kh=`>xqvixN{rekq>W1LTwy6Neusp)B8cJ|%7bef)y|BcJqnU2MM zwuBlCd3kwxJW)JOPiqYgr%s(Z1&CsEb8|B=FmUYHv144vc8JwlS65dD+`HG&(a`}c zSwdH8=745)JXbtc+6)GR!C>ImQ-3L0mSteWhW-2Z?+4s&pU>w5?%(g~%6wa8J5ms; zs;a7hTeprJIdTNBSn~7p^SO?3WLcK!!uhbj6B82?u^7znG1??-j`6LF+abkhzq8s=zk5dfgBt> ze*E}xAQn4)`t)h88yutqcOps8u|=B6f~ySuBayMO!Re2nvc2j=G&6ciM2fy+gY)t#LlkH-Tz9Q0Y^@z7&5 zGf6so_Uu`pv-8A>6DN3_KA)nfYUUv$S3LHt(@(G<6c-m41D%~acI?;zEL}=>u-#r# zQc}Wok;v7nSFZvO9$dI^;R27-=hL4;^(F{bs~`Xe4<0yh@F4$RR)1DjR#wJ!Y(j&< zU@#cuI=y{VLiGdS^)6esY#HG7;y=ynEi5c7{Jc(ILUYAq?`Qe}7e%@-MDf4#h$6ku z&*?JX0~O`tk}Zm&D2m*Fn)hWo#xbfYA*$Nb6OUUgrKN#DZEbmZSy}czH4P1okH38R z=8dWnGCt0}83MWD5r0C6rU4TZ#l>cGAW&WHaM*0w<2`=-=by3In>Uox)1xSgqN>Bg zi9{liOxD-0T)A?k$CJHJX(J;eBcr2pbBts7`Dd$D6#u^;v!6Yio8#|mU!S*dVQcG_ sExG%c{WtC{ZEJo1@uC0#03v!+SaefwW^{L9a%BJjc-nJJ$&-5rBRmzNGXMYp delta 1821 zcmV+&2jckk4xSH?V1N5bL_t(o!@XEvOjB1F{}l@bELEHr`@fgb;4Bcu*n-P~Vob&| zlEo}0Ri4Bp7$5G7G4XM}7>xShlhL5j2Z1LeQL`Bni&fNt*`_cn8_Zi;rKQ>eV@0_C z_Hc4Mc;~-|+VADdJ?Hm*zk7b)J>Na|8ag{WJ5Qcmw+;Y+-G94@4+fD_>+L1JyW8#V z>$`G=j(>W-yLS_bXV3D-=X7>-?A!O^1-Y)PBfhpaw|pZb#19V}RaI40b@%S3rlzLG zMnR~ms;c67izQc7#u;OX@8og0b92Q0`>KR;PrYux#Sxgi$>#dLFn%v9Q^G!y1r0|=-JRf^fZ}r zt7k(4)zhe|s;Vf#U}a@xrQ2<>P=Rx0G;e=@fB(QhFsLXbKhN829A~j;+QP!ZLhkrz z-rKiTRaJvQRV4+isQhKt1}CgO1*l}e>jDZu4&xtva5 z-8!F-HfDh3rv+5i`T6;IHa|QZi^XCP0agkH>-UzU%Aj>wg1ye*gac`vFlTg{7X3Qyh)c=VLr% z2dZi|o6RymIXN{oH3fYCeP?H9C-B7=J9g~Y0ZdILlgT9Wbe!U7oIW4r$+w6%{6v$pnmyT)lerDo|V7+S=L* zq|<>wAi!`oTTM+(4a3nmeLl*QZ#|8&EX$HawstJW07XS6Q&AD{=+UD`!^1!}OIqHR zEnBuUH8I?+Teoh7!@$_sUw@5_v6i6EM}K)Fi3mG7IxsLWz~&7G@&rG5a^%R7Bf#9; z%a<=-0)fE6g9i^X+~DA`W58U*EFxt$*h` zTjN}kK$;Y-Y8GL^)yP7B$0)_d1I54laq-A(9-hFH(!4ZR99D5S62g}P$<;j z&v4Dn&COf40(QIIZnpzJ|NPTW*MF}AW^-AY*}PN$!b4k|!B9|8P{8JsNpd=DY&>)3 z%o%{^w{PFR9T*%ue*E}xhNC;OqN2XOz8?7HmyV8(4q(+PvNM(zaA^xQ7z_r3fz4+! zk|asMS6>}Ebm$P^@%a6IKk(o|cXxL;!_ghdab*2>?i@XO^eAAl6c!d1GJhQ9$+w=b zTd4lHo5^G{>GV>fn>RxtAQE} z@Q*(pKFqEi4u`|xU^sdM;cz${4l|tI^oN+j!lI(0A~x@Gkz;&Um)Gm{0(Lujw|Twf z*iKCp&!0bk9_Z>ib?Ve97N^fA%Zfryr9=>YfjO?Uw6qlH>e{(;=YLM%v(Ly5w%N+c z%E}ln7Q1%s+BM+!-!EOdbcx03^XX5a`O?#Rq^!Zk= zUcDOd`S4!z`HG8+i$9E8`Wf-I9m@0M!Fb<26CAnE58;-62j){xqb$p^qV)ErQmIrr zEeLDZu3hW(=I&S1=zr+w=-AloEag!YRaF!qnY38S%LSpX&h2(Ma>qA3JTdX?+3c*M zsOrQ-Z?CGVs-^*xlcl9*vmn&e*zHzp?)d)rJ~F From 29c47ce39a546ade0d327803a85bb72e9a7233ba Mon Sep 17 00:00:00 2001 From: "reed@reedloden.com" Date: Tue, 25 Mar 2008 21:52:30 -0700 Subject: [PATCH 022/129] Bug 424304 - "Create Mochitest for bug 417760" [p=marco.zehe@googlemail.com (Marco Zehe) r+sr=mats.palmgren] --- content/html/content/test/Makefile.in | 2 + content/html/content/test/file_bug417760.png | Bin 0 -> 2220 bytes content/html/content/test/test_bug417760.html | 72 ++++++++++++++++++ 3 files changed, 74 insertions(+) create mode 100644 content/html/content/test/file_bug417760.png create mode 100644 content/html/content/test/test_bug417760.html diff --git a/content/html/content/test/Makefile.in b/content/html/content/test/Makefile.in index 757e7c710634..fea1aae1ae09 100644 --- a/content/html/content/test/Makefile.in +++ b/content/html/content/test/Makefile.in @@ -107,6 +107,8 @@ _TEST_FILES = test_bug589.html \ test_bug395107.html \ test_bug401160.xhtml \ test_bug408231.html \ + test_bug417760.html \ + file_bug417760.png \ $(NULL) libs:: $(_TEST_FILES) diff --git a/content/html/content/test/file_bug417760.png b/content/html/content/test/file_bug417760.png new file mode 100644 index 0000000000000000000000000000000000000000..cb0ba06dc10ec2d7adeb38c53b174a66781930f9 GIT binary patch literal 2220 zcmd^B{WsKG7e6y*h8RpzV+h}2ki5>+m6vK}7+o?Vl8}rc5;sJRXQG*DB1wp8#YjwV z>ee;hmAaQH@)AYTEqZ7@QRu}>dM>5sJm1^>{r&^@thLWx`|P#%XMgtE=d5$mf7_4R znueMH0BvtCP5`PyP_fidL-%4u$4OKzOY#ay0YGcTpMnAM^9JZ4E|%@f2B0P{{pW8t~`t@I+%EgiA|Hi;Ii% z^Yhcw(^FGZV`F0@BO}kBKOYzvP*cORSnhm&bX8UL?Cjjk%wX=*-KlyfweW#FYJ(i*rDCAqL3(IaHL@O zUg4hD^nC}jd2vVg#2(?rW$Zm5jfhPP;Uyh7d?NW@Ig*p5+jmBavrCR1KO;FI%abX5 zwgr`x|00uD);8U%zuneyzvrg1vGI0mP5qs&o`K%J-+LZEGom@^>YETr25LBh1>M`! zdJ~08H@D}QShnl}_%V zOl}Nkd&1_ek;Z1Wz9Grmcc+9zAK@oRBICs&{6l*ak4MIfVv;iX3F4@PqY<%!l=S?= zqQYchuHa~H{<%uILWxk#mG!?}uew#+q$*QfFDb z`j&g0<8R;1efs=lV6d&d!`RBzg5hoB5@_wT&CV^z(2TxR3cMs0g`;V{3#xGvJGC4UpK0ZD?Jlx;k-`Cgo`0?Z3-rm;M z)|Qr*=H}+6rlz{OI;B#1<;s=v^768>GPztXlgSDT3-j~yb8>PrGc%=9sYoPBPfr&L zg#v*fB_$;(DJecaJ}N4T$KyprM1+Tj2L}iH`uh6#_^?9F z#D8YY>!Kn>mce?CC|alH+sWLUN`ti;#Y7TofqUTP%NN<<4~|g>B>v7Q=6(2RVgi=c zT%V0(?b)^QI6*Sc`qlIyc9=;T?2eVy=pt=S^*uqUpYlmWS(OEcUcggG7!H~_v%uQ zKW_;~b$6t%;LEy1Vt_4OI?s+X-bI!kT9dsB_0;C6rl2SUkv3shXMH{;et(4MdCT{| zq_p+|>&650VlA}&T-HqTAcTnFwHtUY99>3Bw8pIT!_endmR4#dWJ)UZ800IUl6h4* zG}xfqgGZ~6K^Ar`L1s3gyU~5ZgEd!U;Qzr1d7bkd&OsO@zB#}=E4D2TC4Lcg*v72k zE$E^+wyc@1c_<=j%RWo`>Lg=D4XlPRN$!n7R+g#Pf7J zmjpyJPzWJ=0?(SePVo<<6(no#tL^qiUK2cYoOf63@89PULCW~38c5;UvjDvsql$e9 zA$z_5S*znC7~1qP?#Qy}jq4W@(|}j`w?J$c2ZgA|6*NCW5(K#KR1PBxwQs(c^>3U) zDj8epSz+mdy#6o+hgIEq>^iF*cCKX_moHFkA@eWtI>!d{1=& zCN)6z69Kj&^|8pe;MUGIz3QtFVA@*oxY1e&)%%em#k|PQeob0y^+zTdd-u$V8{bTI z_%oCDCxq1F45}5Hzc_h%r}??j{%|1-9q)vd7=Lgj|VuYZgZ)dyG!Kj9pY9aQZ% z{7nQqs)?wt{K2QW@!?UTrDB?L5MVVD%L+@+ReDqiyF%sX@K-+}sq(5Sioc(H79Gfo g;XZ`Fx!VT7Z$86YUh^pk{Urcz&uyG4ciyr80~_#Hga7~l literal 0 HcmV?d00001 diff --git a/content/html/content/test/test_bug417760.html b/content/html/content/test/test_bug417760.html new file mode 100644 index 000000000000..2222886ba692 --- /dev/null +++ b/content/html/content/test/test_bug417760.html @@ -0,0 +1,72 @@ + + + + + cannot focus() img with tabindex="-1" + + + + + + + + + + + + +
Mozilla Bug 417760 +

+ +
+  
+
img tabindex="0": + MoCo logo +
img tabindex="-1": + MoCo logo +
img without tabindex: + MoCo logo + + From 96c0763ac5cd2b9e5ac1ebd5f17c2e2eb2e3633c Mon Sep 17 00:00:00 2001 From: "reed@reedloden.com" Date: Tue, 25 Mar 2008 22:27:40 -0700 Subject: [PATCH 023/129] Bug 424489 - "Change name of Firefox 3 M13 to "Firefox 3 Beta 5" for official branding (for beta build tagging only)" [p=reed r=mconnor a1.9b5=beltzner] --- browser/base/content/browser.xul | 4 ++-- other-licenses/branding/firefox/branding.nsi | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/browser/base/content/browser.xul b/browser/base/content/browser.xul index e01ae3ca503e..dee8b6e972cc 100644 --- a/browser/base/content/browser.xul +++ b/browser/base/content/browser.xul @@ -64,8 +64,8 @@ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" onload="BrowserStartup()" onunload="BrowserShutdown()" onclose="return WindowIsClosing();" contenttitlesetting="true" - title="&mainWindow.title;" - titlemodifier="&mainWindow.title;" + title="&mainWindow.title; 3 Beta 5" + titlemodifier="&mainWindow.title; 3 Beta 5" titlemenuseparator="&mainWindow.titlemodifiermenuseparator;" windowtype="navigator:browser" screenX="4" screenY="4" diff --git a/other-licenses/branding/firefox/branding.nsi b/other-licenses/branding/firefox/branding.nsi index f0065cdcc75e..e0f28e7a4403 100755 --- a/other-licenses/branding/firefox/branding.nsi +++ b/other-licenses/branding/firefox/branding.nsi @@ -47,9 +47,10 @@ !define SurveyURL "https://survey.mozilla.com/1/Mozilla%20Firefox/${AppVersion}/${AB_CD}/exit.html" # Everything below this line may be modified for Alpha / Beta releases. -!define BrandFullName "Mozilla Firefox" +!define BrandFullName "Mozilla Firefox 3 Beta 5" # Add !define NO_INSTDIR_FROM_REG to prevent finding a non-default installation # directory in the registry and using that as the default. This prevents # Beta releases built with official branding from finding an existing install # of an official release and defaulting to its installation directory. +!define NO_INSTDIR_FROM_REG From d0413a0fc836e000bbad8ff06b7de0a6e10da117 Mon Sep 17 00:00:00 2001 From: "reed@reedloden.com" Date: Tue, 25 Mar 2008 22:37:23 -0700 Subject: [PATCH 024/129] Bug 424066 - "CheckSameOriginURI reports spurious error during routine internal comparison" (make NS_ScriptErrorReporter not whine about inequal origin URLs when constructing exceptions) [p=shaver@mozilla.org (Mike Shaver) sr=bzbarsky a1.9b5=beltzner] --- dom/src/base/nsJSEnvironment.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dom/src/base/nsJSEnvironment.cpp b/dom/src/base/nsJSEnvironment.cpp index ba240ddd0ea5..64ba62184f5e 100644 --- a/dom/src/base/nsJSEnvironment.cpp +++ b/dom/src/base/nsJSEnvironment.cpp @@ -503,7 +503,8 @@ NS_ScriptErrorReporter(JSContext *cx, // URIs. See bug 387476. sameOrigin = NS_SUCCEEDED(sSecurityManager-> - CheckSameOriginURI(errorURI, codebase, PR_TRUE)); + CheckSameOriginURI(errorURI, codebase, + PR_FALSE)); } } From 67519d0cfdfd0d7868d0418b500ecf9df6858dd1 Mon Sep 17 00:00:00 2001 From: "reed@reedloden.com" Date: Tue, 25 Mar 2008 22:44:59 -0700 Subject: [PATCH 025/129] Back out my patch from bug 424489 now that tagging date has been established. --- browser/base/content/browser.xul | 4 ++-- other-licenses/branding/firefox/branding.nsi | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/browser/base/content/browser.xul b/browser/base/content/browser.xul index dee8b6e972cc..e01ae3ca503e 100644 --- a/browser/base/content/browser.xul +++ b/browser/base/content/browser.xul @@ -64,8 +64,8 @@ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" onload="BrowserStartup()" onunload="BrowserShutdown()" onclose="return WindowIsClosing();" contenttitlesetting="true" - title="&mainWindow.title; 3 Beta 5" - titlemodifier="&mainWindow.title; 3 Beta 5" + title="&mainWindow.title;" + titlemodifier="&mainWindow.title;" titlemenuseparator="&mainWindow.titlemodifiermenuseparator;" windowtype="navigator:browser" screenX="4" screenY="4" diff --git a/other-licenses/branding/firefox/branding.nsi b/other-licenses/branding/firefox/branding.nsi index e0f28e7a4403..f0065cdcc75e 100755 --- a/other-licenses/branding/firefox/branding.nsi +++ b/other-licenses/branding/firefox/branding.nsi @@ -47,10 +47,9 @@ !define SurveyURL "https://survey.mozilla.com/1/Mozilla%20Firefox/${AppVersion}/${AB_CD}/exit.html" # Everything below this line may be modified for Alpha / Beta releases. -!define BrandFullName "Mozilla Firefox 3 Beta 5" +!define BrandFullName "Mozilla Firefox" # Add !define NO_INSTDIR_FROM_REG to prevent finding a non-default installation # directory in the registry and using that as the default. This prevents # Beta releases built with official branding from finding an existing install # of an official release and defaulting to its installation directory. -!define NO_INSTDIR_FROM_REG From d0e2d05892414139c3b065e44556cd93acaff3a5 Mon Sep 17 00:00:00 2001 From: "bclary@bclary.com" Date: Wed, 26 Mar 2008 00:01:05 -0700 Subject: [PATCH 026/129] JavaScript Tests - regression test for bug 424954 --- js/tests/js1_5/Array/regress-424954.js | 61 ++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100755 js/tests/js1_5/Array/regress-424954.js diff --git a/js/tests/js1_5/Array/regress-424954.js b/js/tests/js1_5/Array/regress-424954.js new file mode 100755 index 000000000000..8f910a07e61f --- /dev/null +++ b/js/tests/js1_5/Array/regress-424954.js @@ -0,0 +1,61 @@ +/* -*- 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 JavaScript Engine testing utilities. + * + * The Initial Developer of the Original Code is + * Mozilla Foundation. + * Portions created by the Initial Developer are Copyright (C) 2007 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): Bob Clary + * + * 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 gTestfile = 'regress-424954.js'; +//----------------------------------------------------------------------------- +var BUGNUMBER = 424954; +var summary = 'Do not crash with [].concat(null)'; +var actual = 'No Crash'; +var expect = 'No Crash'; + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + +function test() +{ + enterFunc ('test'); + printBugNumber(BUGNUMBER); + printStatus (summary); + + [].concat(null); + + reportCompare(expect, actual, summary); + + exitFunc ('test'); +} From 8bce105b8008ebc8bd859eeccc298753669afd6e Mon Sep 17 00:00:00 2001 From: "nrthomas@gmail.com" Date: Wed, 26 Mar 2008 02:16:58 -0700 Subject: [PATCH 027/129] Bug 424242, update timestamps for tagging 3.0b5rc1, p=joduinn, r=me --- tools/release/configs/fx-moz19-bootstrap.cfg | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/release/configs/fx-moz19-bootstrap.cfg b/tools/release/configs/fx-moz19-bootstrap.cfg index 56ff2e75cbcf..79774ad4ac5b 100644 --- a/tools/release/configs/fx-moz19-bootstrap.cfg +++ b/tools/release/configs/fx-moz19-bootstrap.cfg @@ -4,9 +4,9 @@ milestone = 1.9b5 productTag = FIREFOX_3_0b5 # Branch name and pull dates to use for base tag branchTag = HEAD -#RelbranchOverride = GECKO190_20080324_RELBRANCH -pullDate = 2008-03-24 00:01 PST -l10n_pullDate = 2008-03-24 00:01 PST +#RelbranchOverride = GECKO190_20080326_RELBRANCH +pullDate = 2008-03-25 22:40 PDT +l10n_pullDate = 2008-03-20 04:00 PDT rc = 1 # oldVersion and oldRc refer to the previous release oldVersion = 3.0b4 From fec95021eb40e3e5423b23b7e4a2e2b3a1b137f0 Mon Sep 17 00:00:00 2001 From: "pavlov@pavlov.net" Date: Wed, 26 Mar 2008 11:02:57 -0700 Subject: [PATCH 028/129] bug 424018. make character map loading lazy to fix ts regression. r=vlad a=beltzner --- gfx/thebes/public/gfxFontUtils.h | 8 +- gfx/thebes/public/gfxWindowsFonts.h | 16 +- gfx/thebes/public/gfxWindowsPlatform.h | 6 +- gfx/thebes/src/gfxFontUtils.cpp | 16 +- gfx/thebes/src/gfxQuartzFontCache.h | 1 - gfx/thebes/src/gfxQuartzFontCache.mm | 2 +- gfx/thebes/src/gfxWindowsFonts.cpp | 269 +++++++++++++++++++++- gfx/thebes/src/gfxWindowsPlatform.cpp | 298 ++----------------------- 8 files changed, 317 insertions(+), 299 deletions(-) diff --git a/gfx/thebes/public/gfxFontUtils.h b/gfx/thebes/public/gfxFontUtils.h index c716ac11f971..ec7485aae24a 100644 --- a/gfx/thebes/public/gfxFontUtils.h +++ b/gfx/thebes/public/gfxFontUtils.h @@ -307,14 +307,14 @@ public: } static nsresult - ReadCMAPTableFormat12(PRUint8 *aBuf, PRInt32 aLength, gfxSparseBitSet& aCharacterMap, std::bitset<128>& aUnicodeRanges); + ReadCMAPTableFormat12(PRUint8 *aBuf, PRInt32 aLength, gfxSparseBitSet& aCharacterMap); static nsresult - ReadCMAPTableFormat4(PRUint8 *aBuf, PRInt32 aLength, gfxSparseBitSet& aCharacterMap, std::bitset<128>& aUnicodeRanges); + ReadCMAPTableFormat4(PRUint8 *aBuf, PRInt32 aLength, gfxSparseBitSet& aCharacterMap); static nsresult - ReadCMAP(PRUint8 *aBuf, PRUint32 aBufLength, gfxSparseBitSet& aCharacterMap, std::bitset<128>& aUnicodeRanges, PRPackedBool& aUnicodeFont, - PRPackedBool& aSymbolFont); + ReadCMAP(PRUint8 *aBuf, PRUint32 aBufLength, gfxSparseBitSet& aCharacterMap, + PRPackedBool& aUnicodeFont, PRPackedBool& aSymbolFont); static inline bool IsJoiner(PRUint32 ch) { return (ch == 0x200C || diff --git a/gfx/thebes/public/gfxWindowsFonts.h b/gfx/thebes/public/gfxWindowsFonts.h index 14f4516d6712..9f75f1c2ecce 100644 --- a/gfx/thebes/public/gfxWindowsFonts.h +++ b/gfx/thebes/public/gfxWindowsFonts.h @@ -64,12 +64,22 @@ public: THEBES_INLINE_DECL_REFCOUNTING(FontFamily) FontFamily(const nsAString& aName) : - mName(aName) - { - } + mName(aName), mHasStyles(PR_FALSE) { } + FontEntry *FindFontEntry(const gfxFontStyle& aFontStyle); + +private: + static int CALLBACK FamilyAddStylesProc(const ENUMLOGFONTEXW *lpelfe, + const NEWTEXTMETRICEXW *nmetrics, + DWORD fontType, LPARAM data); + void FindStyleVariations(); + +public: nsTArray > mVariations; nsString mName; + +private: + PRBool mHasStyles; }; class FontEntry diff --git a/gfx/thebes/public/gfxWindowsPlatform.h b/gfx/thebes/public/gfxWindowsPlatform.h index 833924149158..3ef1c2eb6e9a 100644 --- a/gfx/thebes/public/gfxWindowsPlatform.h +++ b/gfx/thebes/public/gfxWindowsPlatform.h @@ -85,8 +85,7 @@ public: /* Find a FontFamily/FontEntry object that represents a font on your system given a name */ FontFamily *FindFontFamily(const nsAString& aName); - FontEntry *FindFontEntry(FontFamily *aFontFamily, const gfxFontStyle *aFontStyle); - FontEntry *FindFontEntry(const nsAString& aName, const gfxFontStyle *aFontStyle); + FontEntry *FindFontEntry(const nsAString& aName, const gfxFontStyle& aFontStyle); PRBool GetPrefFontEntries(const nsCString& aLangGroup, nsTArray > *array); void SetPrefFontEntries(const nsCString& aLangGroup, nsTArray >& array); @@ -101,6 +100,9 @@ private: static int CALLBACK FontEnumProc(const ENUMLOGFONTEXW *lpelfe, const NEWTEXTMETRICEXW *metrics, DWORD fontType, LPARAM data); + static int CALLBACK FamilyAddStylesProc(const ENUMLOGFONTEXW *lpelfe, + const NEWTEXTMETRICEXW *nmetrics, + DWORD fontType, LPARAM data); static PLDHashOperator PR_CALLBACK FontGetStylesProc(nsStringHashKey::KeyType aKey, nsRefPtr& aFontFamily, diff --git a/gfx/thebes/src/gfxFontUtils.cpp b/gfx/thebes/src/gfxFontUtils.cpp index 48a3c4991174..0aa1192587f7 100644 --- a/gfx/thebes/src/gfxFontUtils.cpp +++ b/gfx/thebes/src/gfxFontUtils.cpp @@ -220,7 +220,7 @@ static const struct UnicodeRangeTableEntry gUnicodeRanges[] = { nsresult -gfxFontUtils::ReadCMAPTableFormat12(PRUint8 *aBuf, PRInt32 aLength, gfxSparseBitSet& aCharacterMap, std::bitset<128>& aUnicodeRanges) +gfxFontUtils::ReadCMAPTableFormat12(PRUint8 *aBuf, PRInt32 aLength, gfxSparseBitSet& aCharacterMap) { enum { OffsetFormat = 0, @@ -260,7 +260,7 @@ gfxFontUtils::ReadCMAPTableFormat12(PRUint8 *aBuf, PRInt32 aLength, gfxSparseBit } nsresult -gfxFontUtils::ReadCMAPTableFormat4(PRUint8 *aBuf, PRInt32 aLength, gfxSparseBitSet& aCharacterMap, std::bitset<128>& aUnicodeRanges) +gfxFontUtils::ReadCMAPTableFormat4(PRUint8 *aBuf, PRInt32 aLength, gfxSparseBitSet& aCharacterMap) { enum { OffsetFormat = 0, @@ -340,8 +340,8 @@ gfxFontUtils::ReadCMAPTableFormat4(PRUint8 *aBuf, PRInt32 aLength, gfxSparseBitS (platformID == PlatformIDUnicode && encodingID == EncodingIDUCS4ForUnicodePlatform)) nsresult -gfxFontUtils::ReadCMAP(PRUint8 *aBuf, PRUint32 aBufLength, gfxSparseBitSet& aCharacterMap, std::bitset<128>& aUnicodeRanges, - PRPackedBool& aUnicodeFont, PRPackedBool& aSymbolFont) +gfxFontUtils::ReadCMAP(PRUint8 *aBuf, PRUint32 aBufLength, gfxSparseBitSet& aCharacterMap, + PRPackedBool& aUnicodeFont, PRPackedBool& aSymbolFont) { enum { OffsetVersion = 0, @@ -395,9 +395,13 @@ gfxFontUtils::ReadCMAP(PRUint8 *aBuf, PRUint32 aBufLength, gfxSparseBitSet& aCha keepOffset = offset; break; } else if (format == 4 && acceptableFormat4(platformID, encodingID, keepFormat)) { + aUnicodeFont = PR_TRUE; + aSymbolFont = PR_FALSE; keepFormat = format; keepOffset = offset; } else if (format == 12 && acceptableUCS4Encoding(platformID, encodingID)) { + aUnicodeFont = PR_TRUE; + aSymbolFont = PR_FALSE; keepFormat = format; keepOffset = offset; break; // we don't want to try anything else when this format is available. @@ -407,9 +411,9 @@ gfxFontUtils::ReadCMAP(PRUint8 *aBuf, PRUint32 aBufLength, gfxSparseBitSet& aCha nsresult rv = NS_ERROR_FAILURE; if (keepFormat == 12) - rv = ReadCMAPTableFormat12(aBuf + keepOffset, aBufLength - keepOffset, aCharacterMap, aUnicodeRanges); + rv = ReadCMAPTableFormat12(aBuf + keepOffset, aBufLength - keepOffset, aCharacterMap); else if (keepFormat == 4) - rv = ReadCMAPTableFormat4(aBuf + keepOffset, aBufLength - keepOffset, aCharacterMap, aUnicodeRanges); + rv = ReadCMAPTableFormat4(aBuf + keepOffset, aBufLength - keepOffset, aCharacterMap); return rv; } diff --git a/gfx/thebes/src/gfxQuartzFontCache.h b/gfx/thebes/src/gfxQuartzFontCache.h index 5c6f8588d92e..ccf0ebd5e246 100644 --- a/gfx/thebes/src/gfxQuartzFontCache.h +++ b/gfx/thebes/src/gfxQuartzFontCache.h @@ -102,7 +102,6 @@ protected: MacOSFamilyEntry *mFamily; ATSUFontID mATSUFontID; - std::bitset<128> mUnicodeRanges; gfxSparseBitSet mCharacterMap; PRPackedBool mCmapInitialized; diff --git a/gfx/thebes/src/gfxQuartzFontCache.mm b/gfx/thebes/src/gfxQuartzFontCache.mm index 7bfd664832ce..f134804828d6 100644 --- a/gfx/thebes/src/gfxQuartzFontCache.mm +++ b/gfx/thebes/src/gfxQuartzFontCache.mm @@ -190,7 +190,7 @@ MacOSFontEntry::ReadCMAP() nsresult rv = NS_ERROR_FAILURE; PRPackedBool unicodeFont, symbolFont; // currently ignored - rv = gfxFontUtils::ReadCMAP(cmap, size, mCharacterMap, mUnicodeRanges, unicodeFont, symbolFont); + rv = gfxFontUtils::ReadCMAP(cmap, size, mCharacterMap, unicodeFont, symbolFont); // for complex scripts, check for the presence of mort/morx PRBool checkedForMorphTable = PR_FALSE, hasMorphTable = PR_FALSE; diff --git a/gfx/thebes/src/gfxWindowsFonts.cpp b/gfx/thebes/src/gfxWindowsFonts.cpp index 9e6d145f969d..bcd8f471c519 100644 --- a/gfx/thebes/src/gfxWindowsFonts.cpp +++ b/gfx/thebes/src/gfxWindowsFonts.cpp @@ -109,6 +109,260 @@ struct DCFromContext { PRBool needsRelease; }; + +/********************************************************************** + * + * class FontFamily + * + **********************************************************************/ +static nsresult +ReadCMAP(HDC hdc, FontEntry *aFontEntry) +{ + const PRUint32 kCMAP = (('c') | ('m' << 8) | ('a' << 16) | ('p' << 24)); + + DWORD len = GetFontData(hdc, kCMAP, 0, nsnull, 0); + if (len == GDI_ERROR || len == 0) // not a truetype font -- + return NS_ERROR_FAILURE; // we'll treat it as a symbol font + + nsAutoTArray buffer; + if (!buffer.AppendElements(len)) + return NS_ERROR_OUT_OF_MEMORY; + PRUint8 *buf = buffer.Elements(); + + DWORD newLen = GetFontData(hdc, kCMAP, 0, buf, len); + NS_ENSURE_TRUE(newLen == len, NS_ERROR_FAILURE); + + return gfxFontUtils::ReadCMAP(buf, len, aFontEntry->mCharacterMap, + aFontEntry->mUnicodeFont, aFontEntry->mSymbolFont); +} + +struct FamilyAddStyleProcData { + HDC dc; + FontFamily *ff; +}; + +int CALLBACK +FontFamily::FamilyAddStylesProc(const ENUMLOGFONTEXW *lpelfe, + const NEWTEXTMETRICEXW *nmetrics, + DWORD fontType, LPARAM data) +{ + const NEWTEXTMETRICW& metrics = nmetrics->ntmTm; + LOGFONTW logFont = lpelfe->elfLogFont; + + FamilyAddStyleProcData *faspd = reinterpret_cast(data); + FontFamily *ff = faspd->ff; + HDC hdc = faspd->dc; + + // Some fonts claim to support things > 900, but we don't so clamp the sizes + logFont.lfWeight = PR_MAX(PR_MIN(logFont.lfWeight, 900), 100); + + FontEntry *fe = nsnull; + for (PRUint32 i = 0; i < ff->mVariations.Length(); ++i) { + fe = ff->mVariations[i]; + + // check if we already know about this face + if (fe->mWeight == logFont.lfWeight && + fe->mItalic == (logFont.lfItalic == 0xFF)) { + // update the charset bit here since this could be different + fe->mCharset[metrics.tmCharSet] = 1; + return 1; + } + } + + fe = new FontEntry(ff->mName); + ff->mVariations.AppendElement(fe); + + fe->mItalic = (logFont.lfItalic == 0xFF); + fe->mWeight = logFont.lfWeight; + + if (metrics.ntmFlags & NTM_TYPE1) + fe->mIsType1 = fe->mForceGDI = PR_TRUE; + + // fontType == TRUETYPE_FONTTYPE when (metrics.ntmFlags & NTM_TT_OPENTYPE) + if (fontType == TRUETYPE_FONTTYPE || metrics.ntmFlags & (NTM_PS_OPENTYPE)) + fe->mTrueType = PR_TRUE; + + // mark the charset bit + fe->mCharset[metrics.tmCharSet] = 1; + + fe->mWindowsFamily = logFont.lfPitchAndFamily & 0xF0; + fe->mWindowsPitch = logFont.lfPitchAndFamily & 0x0F; + + if (nmetrics->ntmFontSig.fsUsb[0] != 0x00000000 && + nmetrics->ntmFontSig.fsUsb[1] != 0x00000000 && + nmetrics->ntmFontSig.fsUsb[2] != 0x00000000 && + nmetrics->ntmFontSig.fsUsb[3] != 0x00000000) { + + // set the unicode ranges + PRUint32 x = 0; + for (PRUint32 i = 0; i < 4; ++i) { + DWORD range = nmetrics->ntmFontSig.fsUsb[i]; + for (PRUint32 k = 0; k < 32; ++k) { + fe->mUnicodeRanges[x++] = (range & (1 << k)) != 0; + } + } + } + + // read in the character map + logFont.lfCharSet = DEFAULT_CHARSET; + HFONT font = CreateFontIndirectW(&logFont); + + NS_ASSERTION(font, "This font creation should never ever ever fail"); + if (font) { + HFONT oldFont = (HFONT)SelectObject(hdc, font); + + // ReadCMAP may change the values of mUnicodeFont and mSymbolFont + if (NS_FAILED(ReadCMAP(hdc, fe))) { + // Type1 fonts aren't necessarily Unicode but + // this is the best guess we can make here + if (fe->mIsType1) + fe->mUnicodeFont = PR_TRUE; + else + fe->mUnicodeFont = PR_FALSE; + + // For fonts where we failed to read the character map, + // we should use GDI to slowly determine their cmap lazily + fe->mForceGDI = PR_TRUE; + + //printf("%d, %s failed to get cmap\n", aFontEntry->mIsType1, NS_ConvertUTF16toUTF8(aFontEntry->mName).get()); + } + + SelectObject(hdc, oldFont); + DeleteObject(font); + } + + return 1; +} + +// general cmap reading routines moved to gfxFontUtils.cpp +void +FontFamily::FindStyleVariations() +{ + mHasStyles = PR_TRUE; + + HDC hdc = GetDC(nsnull); + + LOGFONTW logFont; + memset(&logFont, 0, sizeof(LOGFONTW)); + logFont.lfCharSet = DEFAULT_CHARSET; + logFont.lfPitchAndFamily = 0; + PRUint32 l = PR_MIN(mName.Length(), LF_FACESIZE - 1); + memcpy(logFont.lfFaceName, + nsPromiseFlatString(mName).get(), + l * sizeof(PRUnichar)); + logFont.lfFaceName[l] = 0; + + FamilyAddStyleProcData faspd; + faspd.dc = hdc; + faspd.ff = this; + + EnumFontFamiliesExW(hdc, &logFont, (FONTENUMPROCW)FontFamily::FamilyAddStylesProc, (LPARAM)&faspd, 0); + + ReleaseDC(nsnull, hdc); + + // Look for font families without bold variations and add a FontEntry + // with synthetic bold (weight 600) for them. + FontEntry *darkestItalic = nsnull; + FontEntry *darkestNonItalic = nsnull; + PRUint8 highestItalic = 0, highestNonItalic = 0; + for (PRUint32 i = 0; i < mVariations.Length(); i++) { + FontEntry *fe = mVariations[i]; + if (fe->mItalic) { + if (!darkestItalic || fe->mWeight > darkestItalic->mWeight) + darkestItalic = fe; + } else { + if (!darkestNonItalic || fe->mWeight > darkestNonItalic->mWeight) + darkestNonItalic = fe; + } + } + + if (darkestItalic && darkestItalic->mWeight < 600) { + FontEntry *newEntry = new FontEntry(*darkestItalic); + newEntry->mWeight = 600; + mVariations.AppendElement(newEntry); + } + if (darkestNonItalic && darkestNonItalic->mWeight < 600) { + FontEntry *newEntry = new FontEntry(*darkestNonItalic); + newEntry->mWeight = 600; + mVariations.AppendElement(newEntry); + } +} + + +FontEntry * +FontFamily::FindFontEntry(const gfxFontStyle& aFontStyle) +{ + if (!mHasStyles) + FindStyleVariations(); + + PRUint8 bestMatch = 0; + PRBool italic = (aFontStyle.style & (FONT_STYLE_ITALIC | FONT_STYLE_OBLIQUE)) != 0; + + FontEntry *weightList[10] = { 0 }; + for (PRUint32 j = 0; j < 2; j++) { + PRBool matchesSomething = PR_FALSE; + // build up an array of weights that match the italicness we're looking for + for (PRUint32 i = 0; i < mVariations.Length(); i++) { + FontEntry *fe = mVariations[i]; + const PRUint8 weight = (fe->mWeight / 100); + if (fe->mItalic == italic) { + weightList[weight] = fe; + matchesSomething = PR_TRUE; + } + } + if (matchesSomething) + break; + italic = !italic; + } + + PRInt8 baseWeight, weightDistance; + aFontStyle.ComputeWeightAndOffset(&baseWeight, &weightDistance); + + // 500 isn't quite bold so we want to treat it as 400 if we don't + // have a 500 weight + if (baseWeight == 5 && weightDistance == 0) { + // If we have a 500 weight then use it + if (weightList[5]) + return weightList[5]; + + // Otherwise treat as 400 + baseWeight = 4; + } + + PRInt8 matchBaseWeight = 0; + PRInt8 direction = (baseWeight > 5) ? 1 : -1; + for (PRInt8 i = baseWeight; ; i += direction) { + if (weightList[i]) { + matchBaseWeight = i; + break; + } + + // if we've reached one side without finding a font, + // go the other direction until we find a match + if (i == 1 || i == 9) + direction = -direction; + } + + FontEntry *matchFE; + const PRInt8 absDistance = abs(weightDistance); + direction = (weightDistance >= 0) ? 1 : -1; + for (PRInt8 i = matchBaseWeight, k = 0; i < 10 && i > 0; i += direction) { + if (weightList[i]) { + matchFE = weightList[i]; + k++; + } + if (k > absDistance) + break; + } + + if (!matchFE) + matchFE = weightList[matchBaseWeight]; + + NS_ASSERTION(matchFE, "we should always be able to return something here"); + return matchFE; +} + + /********************************************************************** * * class gfxWindowsFont @@ -442,7 +696,7 @@ gfxWindowsFontGroup::GroupFamilyListToArrayList(nsTArray > * PRUint32 len = fonts.Length(); for (PRUint32 i = 0; i < len; ++i) { - nsRefPtr fe = gfxWindowsPlatform::GetPlatform()->FindFontEntry(fonts[i], &mStyle); + nsRefPtr fe = gfxWindowsPlatform::GetPlatform()->FindFontEntry(fonts[i], mStyle); list->AppendElement(fe); } } @@ -458,7 +712,7 @@ gfxWindowsFontGroup::FamilyListToArrayList(const nsString& aFamilies, PRUint32 len = fonts.Length(); for (PRUint32 i = 0; i < len; ++i) { const nsAutoString& str = fonts[i]; - nsRefPtr fe = gfxWindowsPlatform::GetPlatform()->FindFontEntry(str, &mStyle); + nsRefPtr fe = gfxWindowsPlatform::GetPlatform()->FindFontEntry(str, mStyle); list->AppendElement(fe); } } @@ -477,7 +731,7 @@ gfxWindowsFontGroup::gfxWindowsFontGroup(const nsAString& aFamilies, const gfxFo NS_ERROR("Failed to create font group"); return; } - nsRefPtr fe = gfxWindowsPlatform::GetPlatform()->FindFontEntry(nsDependentString(logFont.lfFaceName), aStyle); + nsRefPtr fe = gfxWindowsPlatform::GetPlatform()->FindFontEntry(nsDependentString(logFont.lfFaceName), *aStyle); mFontEntries.AppendElement(fe); } @@ -737,7 +991,7 @@ struct ScriptPropertyEntry { static const struct ScriptPropertyEntry gScriptToText[] = { { nsnull, nsnull }, - { "LANG_ARABIC", "ara" }, + { "LANG_ARABIC", "ar" }, // ara { "LANG_BULGARIAN", "bul" }, { "LANG_CATALAN", "cat" }, { "LANG_CHINESE", "zh-CN" }, //XXX right lang code? @@ -1304,6 +1558,13 @@ public: (ch >= 0xF0000 && ch <= 0x10FFFD)) return selectedFont; + // check out the style's language group + if (!selectedFont) { + nsAutoTArray, 5> fonts; + this->GetPrefFonts(mGroup->GetStyle()->langGroup.get(), fonts); + selectedFont = WhichFontSupportsChar(fonts, ch); + } + // otherwise search prefs if (!selectedFont) { /* first check with the script properties to see what they think */ diff --git a/gfx/thebes/src/gfxWindowsPlatform.cpp b/gfx/thebes/src/gfxWindowsPlatform.cpp index 88109cc6b121..be6d4c9b7b29 100644 --- a/gfx/thebes/src/gfxWindowsPlatform.cpp +++ b/gfx/thebes/src/gfxWindowsPlatform.cpp @@ -58,7 +58,13 @@ //#define DEBUG_CMAP_SIZE 1 -static nsresult ReadCMAP(HDC hdc, FontEntry *aFontEntry); +static __inline void +BuildKeyNameFromFontName(nsAString &aName) +{ + if (aName.Length() >= LF_FACESIZE) + aName.Truncate(LF_FACESIZE - 1); + ToLowerCase(aName); +} int PR_CALLBACK gfxWindowsPlatform::PrefChangedCallback(const char *aPrefName, void *closure) @@ -107,23 +113,14 @@ gfxWindowsPlatform::FontEnumProc(const ENUMLOGFONTEXW *lpelfe, FontTable *ht = reinterpret_cast(data); const NEWTEXTMETRICW& metrics = nmetrics->ntmTm; - LOGFONTW logFont = lpelfe->elfLogFont; + const LOGFONTW& logFont = lpelfe->elfLogFont; // Ignore vertical fonts - if (logFont.lfFaceName[0] == L'@') { + if (logFont.lfFaceName[0] == L'@') return 1; - } - // Some fonts claim to support things > 900, but we don't so clamp the sizes - logFont.lfWeight = PR_MAX(PR_MIN(logFont.lfWeight, 900), 100); - -#ifdef DEBUG_pavlov - printf("%s %d %d %d\n", NS_ConvertUTF16toUTF8(nsDependentString(logFont.lfFaceName)).get(), - logFont.lfCharSet, logFont.lfItalic, logFont.lfWeight); -#endif - - nsString name(logFont.lfFaceName); - ToLowerCase(name); + nsAutoString name(logFont.lfFaceName); + BuildKeyNameFromFontName(name); nsRefPtr ff; if (!ht->Get(name, &ff)) { @@ -131,176 +128,12 @@ gfxWindowsPlatform::FontEnumProc(const ENUMLOGFONTEXW *lpelfe, ht->Put(name, ff); } - nsRefPtr fe; - for (PRUint32 i = 0; i < ff->mVariations.Length(); ++i) { - fe = ff->mVariations[i]; - if (fe->mWeight == logFont.lfWeight && - fe->mItalic == (logFont.lfItalic == 0xFF)) { - return 1; /* we already know about this font */ - } - } - - fe = new FontEntry(ff->mName); - /* don't append it until the end in case of error */ - - fe->mItalic = (logFont.lfItalic == 0xFF); - fe->mWeight = logFont.lfWeight; - - if (metrics.ntmFlags & NTM_TYPE1) - fe->mIsType1 = fe->mForceGDI = PR_TRUE; - if (metrics.ntmFlags & (NTM_PS_OPENTYPE | NTM_TT_OPENTYPE)) - fe->mTrueType = PR_TRUE; - - // mark the charset bit - fe->mCharset[metrics.tmCharSet] = 1; - - fe->mWindowsFamily = logFont.lfPitchAndFamily & 0xF0; - fe->mWindowsPitch = logFont.lfPitchAndFamily & 0x0F; - - if (nmetrics->ntmFontSig.fsUsb[0] == 0x00000000 && - nmetrics->ntmFontSig.fsUsb[1] == 0x00000000 && - nmetrics->ntmFontSig.fsUsb[2] == 0x00000000 && - nmetrics->ntmFontSig.fsUsb[3] == 0x00000000) { - // no unicode ranges - fe->mUnicodeFont = PR_FALSE; - } else { - fe->mUnicodeFont = PR_TRUE; - - // set the unicode ranges - PRUint32 x = 0; - for (PRUint32 i = 0; i < 4; ++i) { - DWORD range = nmetrics->ntmFontSig.fsUsb[i]; - for (PRUint32 k = 0; k < 32; ++k) { - fe->mUnicodeRanges[x++] = (range & (1 << k)) != 0; - } - } - } - - /* read in the character map */ - HDC hdc = GetDC(nsnull); - logFont.lfCharSet = DEFAULT_CHARSET; - HFONT font = CreateFontIndirectW(&logFont); - - NS_ASSERTION(font, "This font creation should never ever ever fail"); - if (font) { - HFONT oldFont = (HFONT)SelectObject(hdc, font); - - TEXTMETRIC metrics; - GetTextMetrics(hdc, &metrics); - if (metrics.tmPitchAndFamily & TMPF_TRUETYPE) - fe->mTrueType = PR_TRUE; - - if (NS_FAILED(ReadCMAP(hdc, fe))) { - // Type1 fonts aren't necessarily Unicode but - // this is the best guess we can make here - if (fe->mIsType1) - fe->mUnicodeFont = PR_TRUE; - else - fe->mUnicodeFont = PR_FALSE; - - //printf("%d, %s failed to get cmap\n", aFontEntry->mIsType1, NS_ConvertUTF16toUTF8(aFontEntry->mName).get()); - } - - SelectObject(hdc, oldFont); - DeleteObject(font); - } - - ReleaseDC(nsnull, hdc); - - if (!fe->mUnicodeFont) { - /* non-unicode fonts.. boy lets just set all code points - between 0x20 and 0xFF. All the ones on my system do... - If we really wanted to test which characters in this - range were supported we could just generate a string with - each codepoint and do GetGlyphIndicies or similar to determine - what is there. - */ - fe->mCharacterMap.SetRange(0x20, 0xFF); - } - - /* append the variation to the font family */ - ff->mVariations.AppendElement(fe); - return 1; } + // general cmap reading routines moved to gfxFontUtils.cpp -static nsresult -ReadCMAP(HDC hdc, FontEntry *aFontEntry) -{ - const PRUint32 kCMAP = (('c') | ('m' << 8) | ('a' << 16) | ('p' << 24)); - - DWORD len = GetFontData(hdc, kCMAP, 0, nsnull, 0); - if (len == GDI_ERROR || len == 0) // not a truetype font -- - return NS_ERROR_FAILURE; // we'll treat it as a symbol font - - nsAutoTArray buffer; - if (!buffer.AppendElements(len)) - return NS_ERROR_OUT_OF_MEMORY; - PRUint8 *buf = buffer.Elements(); - - DWORD newLen = GetFontData(hdc, kCMAP, 0, buf, len); - NS_ENSURE_TRUE(newLen == len, NS_ERROR_FAILURE); - - return gfxFontUtils::ReadCMAP(buf, len, aFontEntry->mCharacterMap, aFontEntry->mUnicodeRanges, - aFontEntry->mUnicodeFont, aFontEntry->mSymbolFont); -} - -PLDHashOperator PR_CALLBACK -gfxWindowsPlatform::FontGetStylesProc(nsStringHashKey::KeyType aKey, - nsRefPtr& aFontFamily, - void* userArg) -{ - NS_ASSERTION(aFontFamily->mVariations.Length() == 1, "We should only have 1 variation here"); - nsRefPtr aFontEntry = aFontFamily->mVariations[0]; - - HDC hdc = GetDC(nsnull); - - LOGFONTW logFont; - memset(&logFont, 0, sizeof(LOGFONTW)); - logFont.lfCharSet = DEFAULT_CHARSET; - logFont.lfPitchAndFamily = 0; - PRUint32 l = PR_MIN(aFontEntry->GetName().Length(), LF_FACESIZE - 1); - memcpy(logFont.lfFaceName, - nsPromiseFlatString(aFontEntry->GetName()).get(), - l * sizeof(PRUnichar)); - logFont.lfFaceName[l] = 0; - - EnumFontFamiliesExW(hdc, &logFont, (FONTENUMPROCW)gfxWindowsPlatform::FontEnumProc, (LPARAM)userArg, 0); - - ReleaseDC(nsnull, hdc); - - // Look for font families without bold variations and add a FontEntry - // with synthetic bold (weight 600) for them. - nsRefPtr darkestItalic; - nsRefPtr darkestNonItalic; - PRUint8 highestItalic = 0, highestNonItalic = 0; - for (PRUint32 i = 0; i < aFontFamily->mVariations.Length(); i++) { - nsRefPtr fe = aFontFamily->mVariations[i]; - if (fe->mItalic) { - if (!darkestItalic || fe->mWeight > darkestItalic->mWeight) - darkestItalic = fe; - } else { - if (!darkestNonItalic || fe->mWeight > darkestNonItalic->mWeight) - darkestNonItalic = fe; - } - } - - if (darkestItalic && darkestItalic->mWeight < 600) { - nsRefPtr newEntry = new FontEntry(*darkestItalic.get()); - newEntry->mWeight = 600; - aFontFamily->mVariations.AppendElement(newEntry); - } - if (darkestNonItalic && darkestNonItalic->mWeight < 600) { - nsRefPtr newEntry = new FontEntry(*darkestNonItalic.get()); - newEntry->mWeight = 600; - aFontFamily->mVariations.AppendElement(newEntry); - } - - return PL_DHASH_NEXT; -} - struct FontListData { FontListData(const nsACString& aLangGroup, const nsACString& aGenericFamily, nsStringArray& aListOfFonts) : mLangGroup(aLangGroup), mGenericFamily(aGenericFamily), mStringArray(aListOfFonts) {} @@ -355,14 +188,6 @@ RemoveCharsetFromFontSubstitute(nsAString &aName) aName.Truncate(comma); } -static void -BuildKeyNameFromFontName(nsAString &aName) -{ - if (aName.Length() >= LF_FACESIZE) - aName.Truncate(LF_FACESIZE - 1); - ToLowerCase(aName); -} - nsresult gfxWindowsPlatform::UpdateFontList() { @@ -386,9 +211,6 @@ gfxWindowsPlatform::UpdateFontList() EnumFontFamiliesExW(dc, &logFont, (FONTENUMPROCW)gfxWindowsPlatform::FontEnumProc, (LPARAM)&mFonts, 0); ::ReleaseDC(nsnull, dc); - // Look for additional styles - mFonts.Enumerate(gfxWindowsPlatform::FontGetStylesProc, &mFonts); - // Create the list of FontSubstitutes nsCOMPtr regKey = do_CreateInstance("@mozilla.org/windows-registry-key;1"); if (!regKey) @@ -441,7 +263,7 @@ gfxWindowsPlatform::UpdateFontList() static PRBool SimpleResolverCallback(const nsAString& aName, void* aClosure) { - nsString* result = static_cast(aClosure); + nsString *result = static_cast(aClosure); result->Assign(aName); return PR_FALSE; } @@ -591,7 +413,7 @@ gfxWindowsPlatform::FindFontForCharProc(nsStringHashKey::KeyType aKey, const PRUint32 ch = data->ch; - nsRefPtr fe = GetPlatform()->FindFontEntry(aFontFamily, data->fontToMatch->GetStyle()); + nsRefPtr fe = aFontFamily->FindFontEntry(*data->fontToMatch->GetStyle()); // skip over non-unicode and bitmap fonts and fonts that don't have // the code point we're looking for @@ -613,7 +435,7 @@ gfxWindowsPlatform::FindFontForCharProc(nsStringHashKey::KeyType aKey, rank += 3; /* italic */ - const PRBool italic = (data->fontToMatch->GetStyle()->style & (FONT_STYLE_ITALIC | FONT_STYLE_OBLIQUE)) ? PR_TRUE : PR_FALSE; + const PRBool italic = (data->fontToMatch->GetStyle()->style != FONT_STYLE_NORMAL); if (fe->mItalic != italic) rank += 3; @@ -652,7 +474,7 @@ gfxWindowsPlatform::FindFontForChar(PRUint32 aCh, gfxWindowsFont *aFont) if (!data.bestMatch) { mCodepointsWithNoFonts.set(aCh); } - + return data.bestMatch; } @@ -666,8 +488,8 @@ gfxWindowsPlatform::CreateFontGroup(const nsAString &aFamilies, FontFamily * gfxWindowsPlatform::FindFontFamily(const nsAString& aName) { - nsString name(aName); - ToLowerCase(name); + nsAutoString name(aName); + BuildKeyNameFromFontName(name); nsRefPtr ff; if (!mFonts.Get(name, &ff) && @@ -679,93 +501,13 @@ gfxWindowsPlatform::FindFontFamily(const nsAString& aName) } FontEntry * -gfxWindowsPlatform::FindFontEntry(const nsAString& aName, const gfxFontStyle *aFontStyle) +gfxWindowsPlatform::FindFontEntry(const nsAString& aName, const gfxFontStyle& aFontStyle) { nsRefPtr ff = FindFontFamily(aName); if (!ff) return nsnull; - return FindFontEntry(ff, aFontStyle); -} - -FontEntry * -gfxWindowsPlatform::FindFontEntry(FontFamily *aFontFamily, const gfxFontStyle *aFontStyle) -{ - PRUint8 bestMatch = 0; - PRBool italic = (aFontStyle->style & (FONT_STYLE_ITALIC | FONT_STYLE_OBLIQUE)) != 0; - - nsAutoTArray, 10> weightList; - weightList.AppendElements(10); - for (PRUint32 j = 0; j < 2; j++) { - PRBool matchesSomething = PR_FALSE; - // build up an array of weights that match the italicness we're looking for - for (PRUint32 i = 0; i < aFontFamily->mVariations.Length(); i++) { - nsRefPtr fe = aFontFamily->mVariations[i]; - const PRUint8 weight = (fe->mWeight / 100); - if (fe->mItalic == italic) { - weightList[weight] = fe; - matchesSomething = PR_TRUE; - } - } - if (matchesSomething) - break; - italic = !italic; - } - - PRInt8 baseWeight, weightDistance; - aFontStyle->ComputeWeightAndOffset(&baseWeight, &weightDistance); - - // 500 isn't quite bold so we want to treat it as 400 if we don't - // have a 500 weight - if (baseWeight == 5 && weightDistance == 0) { - // If we have a 500 weight then use it - if (weightList[5]) - return weightList[5]; - - // Otherwise treat as 400 - baseWeight = 4; - } - - - PRInt8 matchBaseWeight = 0; - PRInt8 direction = (baseWeight > 5) ? 1 : -1; - for (PRInt8 i = baseWeight; ; i += direction) { - if (weightList[i]) { - matchBaseWeight = i; - break; - } - - // if we've reached one side without finding a font, - // go the other direction until we find a match - if (i == 1 || i == 9) - direction = -direction; - } - - nsRefPtr matchFE; - const PRInt8 absDistance = abs(weightDistance); - direction = (weightDistance >= 0) ? 1 : -1; - for (PRInt8 i = matchBaseWeight, k = 0; i < 10 && i > 0; i += direction) { - if (weightList[i]) { - matchFE = weightList[i]; - k++; - } - if (k > absDistance) - break; - } - - if (!matchFE) { - /* if we still don't have a match, grab the closest thing in the other direction */ - direction = -direction; - for (PRInt8 i = matchBaseWeight; i < 10 && i > 0; i += direction) { - if (weightList[i]) { - matchFE = weightList[i]; - } - } - } - - - NS_ASSERTION(matchFE, "we should always be able to return something here"); - return matchFE; + return ff->FindFontEntry(aFontStyle); } cmsHPROFILE From a094812d799c01fe3503cc18cb1cf06928abbbef Mon Sep 17 00:00:00 2001 From: "reed@reedloden.com" Date: Wed, 26 Mar 2008 11:35:38 -0700 Subject: [PATCH 029/129] Bug 424242 - Bump nightly version to Firefox 3.0pre/Gecko 1.9pre [p=reed r=nthomas a1.9+a1.9b5=beltzner] --- browser/app/module.ver | 2 +- browser/config/version.txt | 2 +- config/milestone.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/browser/app/module.ver b/browser/app/module.ver index d6558e5ce564..2a74fbd02558 100644 --- a/browser/app/module.ver +++ b/browser/app/module.ver @@ -1,7 +1,7 @@ WIN32_MODULE_COMPANYNAME=Mozilla Corporation WIN32_MODULE_COPYRIGHT=©Firefox and Mozilla Developers, according to the MPL 1.1/GPL 2.0/LGPL 2.1 licenses, as applicable. WIN32_MODULE_PRODUCTVERSION=3,0,0,0 -WIN32_MODULE_PRODUCTVERSION_STRING=3.0b5pre +WIN32_MODULE_PRODUCTVERSION_STRING=3.0pre WIN32_MODULE_TRADEMARKS=Firefox is a Trademark of The Mozilla Foundation. WIN32_MODULE_DESCRIPTION=Firefox WIN32_MODULE_PRODUCTNAME=Firefox diff --git a/browser/config/version.txt b/browser/config/version.txt index fde9d314b031..c6f7f1eb9cbe 100644 --- a/browser/config/version.txt +++ b/browser/config/version.txt @@ -1 +1 @@ -3.0b5pre +3.0pre diff --git a/config/milestone.txt b/config/milestone.txt index 25d170dbc908..7f9bd6e016a5 100644 --- a/config/milestone.txt +++ b/config/milestone.txt @@ -10,4 +10,4 @@ # hardcoded milestones in the tree from these two files. #-------------------------------------------------------- -1.9b5pre +1.9pre From b0c87d16b41c33cdb207409fe5a78ae17ed3c12d Mon Sep 17 00:00:00 2001 From: "bclary@bclary.com" Date: Wed, 26 Mar 2008 12:57:15 -0700 Subject: [PATCH 030/129] JavaScript Tests - remove machine name from public failures, bug 399387 --- js/tests/public-failures.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/tests/public-failures.txt b/js/tests/public-failures.txt index 1e6eb354684e..22f3e4ddcb39 100644 --- a/js/tests/public-failures.txt +++ b/js/tests/public-failures.txt @@ -433,8 +433,8 @@ TEST_ID=js1_7/decompilation/regress-380506.js, TEST_BRANCH=1.8.1, TEST_RESULT=FA TEST_ID=js1_7/decompilation/regress-380506.js, TEST_BRANCH=1.8.1, TEST_RESULT=FAILED, TEST_BUILDTYPE=(debug|opt), TEST_TYPE=(browser|shell), TEST_OS=(linux|mac|win32), TEST_MACHINE=.*, TEST_PROCESSORTYPE=.*, TEST_KERNEL=.*, TEST_DATE=.*, TEST_TIMEZONE=.*, TEST_DESCRIPTION=Decompilation of nested-for and for-if comprehensions expected: function ( ) { return [ i * j for ( i in [ 0 ] ) for ( j in [ 1 ] ) ] ; } actual: function ( ) { return [ i * j for ( i in [ 0 ] ) ] ; } reason: Expected value ' function ( ) { return [ i * j for ( i in [ 0 ] ) for ( j in [ 1 ] ) ] ; } ', Actual value ' function ( ) { return [ i * j for ( i in [ 0 ] ) ] ; } ' TEST_ID=js1_7/decompilation/regress-381108.js, TEST_BRANCH=1.8.1, TEST_RESULT=FAILED, TEST_BUILDTYPE=(debug|opt), TEST_TYPE=(browser|shell), TEST_OS=(linux|mac|win32), TEST_MACHINE=.*, TEST_PROCESSORTYPE=.*, TEST_KERNEL=.*, TEST_DATE=.*, TEST_TIMEZONE=.*, TEST_DESCRIPTION=decompilation of object literal should have space following : expected: true actual: false reason: Expected value 'true', Actual value 'false' TEST_ID=js1_7/expressions/regress-421806.js, TEST_BRANCH=1.8.1, TEST_RESULT=FAILED, TEST_BUILDTYPE=debug, TEST_TYPE=(browser|shell), TEST_OS=(linux|mac), TEST_MACHINE=.*, TEST_PROCESSORTYPE=.*, TEST_KERNEL=.*, TEST_DATE=.*, TEST_TIMEZONE=.*, TEST_DESCRIPTION=EXIT STATUS: CRASHED `.``*`Assertion failure: !fp->blockChain || OBJ_GET_PARENT(cx, obj) == fp->blockChain, at `.``*`jsinterp.c: -TEST_ID=js1_7/expressions/regress-421806.js, TEST_BRANCH=1.8.1, TEST_RESULT=FAILED, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=win32, TEST_MACHINE=winxppro, TEST_PROCESSORTYPE=.*, TEST_KERNEL=.*, TEST_DATE=.*, TEST_TIMEZONE=.*, TEST_DESCRIPTION=EXIT STATUS: CRASHED 3 -TEST_ID=js1_7/expressions/regress-421806.js, TEST_BRANCH=1.8.1, TEST_RESULT=FAILED, TEST_BUILDTYPE=debug, TEST_TYPE=shell, TEST_OS=win32, TEST_MACHINE=winxppro, TEST_PROCESSORTYPE=.*, TEST_KERNEL=.*, TEST_DATE=.*, TEST_TIMEZONE=.*, TEST_DESCRIPTION= expected: Expected exit 0 actual: Actual exit 3, signal 0 reason: Testcase produced no output! +TEST_ID=js1_7/expressions/regress-421806.js, TEST_BRANCH=1.8.1, TEST_RESULT=FAILED, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=win32, TEST_MACHINE=.*, TEST_PROCESSORTYPE=.*, TEST_KERNEL=.*, TEST_DATE=.*, TEST_TIMEZONE=.*, TEST_DESCRIPTION=EXIT STATUS: CRASHED 3 +TEST_ID=js1_7/expressions/regress-421806.js, TEST_BRANCH=1.8.1, TEST_RESULT=FAILED, TEST_BUILDTYPE=debug, TEST_TYPE=shell, TEST_OS=win32, TEST_MACHINE=.*, TEST_PROCESSORTYPE=.*, TEST_KERNEL=.*, TEST_DATE=.*, TEST_TIMEZONE=.*, TEST_DESCRIPTION= expected: Expected exit 0 actual: Actual exit 3, signal 0 reason: Testcase produced no output! TEST_ID=js1_7/extensions/regress-351102-04.js, TEST_BRANCH=1.8.1, TEST_RESULT=FAILED, TEST_BUILDTYPE=debug, TEST_TYPE=(browser|shell), TEST_OS=(linux|mac), TEST_MACHINE=.*, TEST_PROCESSORTYPE=.*, TEST_KERNEL=.*, TEST_DATE=.*, TEST_TIMEZONE=.*, TEST_DESCRIPTION=`(`EXIT STATUS: CRASHED `)``?``.``*`Assertion failure: !fp->blockChain || OBJ_GET_PARENT(cx, obj) == fp->blockChain, at `.``*`jsinterp.c: TEST_ID=js1_7/extensions/regress-351102-04.js, TEST_BRANCH=1.8.1, TEST_RESULT=FAILED, TEST_BUILDTYPE=debug, TEST_TYPE=browser, TEST_OS=win32, TEST_MACHINE=.*, TEST_PROCESSORTYPE=.*, TEST_KERNEL=.*, TEST_DATE=.*, TEST_TIMEZONE=.*, TEST_DESCRIPTION=EXIT STATUS: CRASHED 3 TEST_ID=js1_7/extensions/regress-351102-04.js, TEST_BRANCH=1.8.1, TEST_RESULT=FAILED, TEST_BUILDTYPE=debug, TEST_TYPE=shell, TEST_OS=win32, TEST_MACHINE=.*, TEST_PROCESSORTYPE=.*, TEST_KERNEL=.*, TEST_DATE=.*, TEST_TIMEZONE=.*, TEST_DESCRIPTION=`.``*`reason: Testcase produced no output! From 3dce29a07ebcd69c685977d2acd5ffe3f2f433af Mon Sep 17 00:00:00 2001 From: "bclary@bclary.com" Date: Wed, 26 Mar 2008 13:21:25 -0700 Subject: [PATCH 031/129] JavaScript Tests - remove unneeded image foo from test, bug 324650 --- js/tests/ecma_3/Statements/regress-324650.js | 47 +------------------- 1 file changed, 2 insertions(+), 45 deletions(-) diff --git a/js/tests/ecma_3/Statements/regress-324650.js b/js/tests/ecma_3/Statements/regress-324650.js index 29feac6360ed..003cd0fa4285 100755 --- a/js/tests/ecma_3/Statements/regress-324650.js +++ b/js/tests/ecma_3/Statements/regress-324650.js @@ -40,25 +40,12 @@ var gTestfile = 'regress-324650.js'; //----------------------------------------------------------------------------- var BUGNUMBER = 324650; var summary = 'Switch Statement with many cases'; -var actual = ''; -var expect = ''; +var actual = 'No Hang'; +var expect = 'No Hang'; printBugNumber(BUGNUMBER); printStatus (summary); -if (typeof document != 'undefined') -{ - document.images[0] = new Image(); -} -else -{ - document = {images: [{src: ''}]}; -} - -var evil = 2; -if (document.cookie) { - evil = "ze"; -} var notevil = "z1"; var notevil2 = "z2"; var notevil3 = "z3"; @@ -5471,34 +5458,4 @@ default: break; } -var url = "http://deathstar/01.jpg?normal=" + dut; -document.images[0].src = url; - -/* if with evil val */ - -if (document.cookie) { - switch ( notevil2 ) { - case "z2": dut2 = 2; - break; - default: - dut2 = 3; - break; - } -} - -var url2 = "http://deathstar/01.jpg?if=" + dut2; -document.images[0].src = url2; - -/* normal usage */ - -switch ( evil ) { -case "ze": dut3 = 2; - break; -default: - dut3 = 3; - break; -} -var url3 = "http://deathstar/01.jpg?isevil=" + dut3; -document.images[0].src = url3; - reportCompare(expect, actual, summary); From 135b89a2f548da6cd8850af24065f4ef8ea73ce0 Mon Sep 17 00:00:00 2001 From: "pavlov@pavlov.net" Date: Wed, 26 Mar 2008 13:24:37 -0700 Subject: [PATCH 032/129] backing out previous patch. --- gfx/public/nsFont.h | 3 + gfx/src/thebes/nsThebesDeviceContext.cpp | 11 +- gfx/thebes/public/gfxFontUtils.h | 8 +- gfx/thebes/public/gfxWindowsFonts.h | 16 +- gfx/thebes/public/gfxWindowsPlatform.h | 6 +- gfx/thebes/src/gfxFontUtils.cpp | 16 +- gfx/thebes/src/gfxQuartzFontCache.h | 1 + gfx/thebes/src/gfxQuartzFontCache.mm | 2 +- gfx/thebes/src/gfxWindowsFonts.cpp | 269 +------------------- gfx/thebes/src/gfxWindowsPlatform.cpp | 298 +++++++++++++++++++++-- 10 files changed, 309 insertions(+), 321 deletions(-) diff --git a/gfx/public/nsFont.h b/gfx/public/nsFont.h index 95ef3f98fb0c..c50356e43739 100644 --- a/gfx/public/nsFont.h +++ b/gfx/public/nsFont.h @@ -97,6 +97,9 @@ struct NS_GFX nsFont { // needs to be done. float sizeAdjust; + // Stretch of the font 1-9 + PRUint16 stretch; + // Initialize the font struct with an ASCII name nsFont(const char* aName, PRUint8 aStyle, PRUint8 aVariant, PRUint16 aWeight, PRUint8 aDecoration, nscoord aSize, diff --git a/gfx/src/thebes/nsThebesDeviceContext.cpp b/gfx/src/thebes/nsThebesDeviceContext.cpp index aa5a1a76fa3d..eab741d3c823 100644 --- a/gfx/src/thebes/nsThebesDeviceContext.cpp +++ b/gfx/src/thebes/nsThebesDeviceContext.cpp @@ -272,10 +272,7 @@ nsThebesDeviceContext::Init(nsNativeWidget aWidget) #endif - - mDepth = 24; - - mScreenManager = do_GetService("@mozilla.org/gfx/screenmanager;1"); + mScreenManager = do_GetService("@mozilla.org/gfx/screenmanager;1"); return NS_OK; } @@ -421,6 +418,12 @@ nsThebesDeviceContext::CheckFontExistence(const nsString& aFaceName) NS_IMETHODIMP nsThebesDeviceContext::GetDepth(PRUint32& aDepth) { + nsCOMPtr primaryScreen; + if (mDepth == 0) { + mScreenManager->GetPrimaryScreen(getter_AddRefs(primaryScreen)); + primaryScreen->GetColorDepth(reinterpret_cast(&mDepth)); + } + aDepth = mDepth; return NS_OK; } diff --git a/gfx/thebes/public/gfxFontUtils.h b/gfx/thebes/public/gfxFontUtils.h index ec7485aae24a..c716ac11f971 100644 --- a/gfx/thebes/public/gfxFontUtils.h +++ b/gfx/thebes/public/gfxFontUtils.h @@ -307,14 +307,14 @@ public: } static nsresult - ReadCMAPTableFormat12(PRUint8 *aBuf, PRInt32 aLength, gfxSparseBitSet& aCharacterMap); + ReadCMAPTableFormat12(PRUint8 *aBuf, PRInt32 aLength, gfxSparseBitSet& aCharacterMap, std::bitset<128>& aUnicodeRanges); static nsresult - ReadCMAPTableFormat4(PRUint8 *aBuf, PRInt32 aLength, gfxSparseBitSet& aCharacterMap); + ReadCMAPTableFormat4(PRUint8 *aBuf, PRInt32 aLength, gfxSparseBitSet& aCharacterMap, std::bitset<128>& aUnicodeRanges); static nsresult - ReadCMAP(PRUint8 *aBuf, PRUint32 aBufLength, gfxSparseBitSet& aCharacterMap, - PRPackedBool& aUnicodeFont, PRPackedBool& aSymbolFont); + ReadCMAP(PRUint8 *aBuf, PRUint32 aBufLength, gfxSparseBitSet& aCharacterMap, std::bitset<128>& aUnicodeRanges, PRPackedBool& aUnicodeFont, + PRPackedBool& aSymbolFont); static inline bool IsJoiner(PRUint32 ch) { return (ch == 0x200C || diff --git a/gfx/thebes/public/gfxWindowsFonts.h b/gfx/thebes/public/gfxWindowsFonts.h index 9f75f1c2ecce..14f4516d6712 100644 --- a/gfx/thebes/public/gfxWindowsFonts.h +++ b/gfx/thebes/public/gfxWindowsFonts.h @@ -64,22 +64,12 @@ public: THEBES_INLINE_DECL_REFCOUNTING(FontFamily) FontFamily(const nsAString& aName) : - mName(aName), mHasStyles(PR_FALSE) { } + mName(aName) + { + } - FontEntry *FindFontEntry(const gfxFontStyle& aFontStyle); - -private: - static int CALLBACK FamilyAddStylesProc(const ENUMLOGFONTEXW *lpelfe, - const NEWTEXTMETRICEXW *nmetrics, - DWORD fontType, LPARAM data); - void FindStyleVariations(); - -public: nsTArray > mVariations; nsString mName; - -private: - PRBool mHasStyles; }; class FontEntry diff --git a/gfx/thebes/public/gfxWindowsPlatform.h b/gfx/thebes/public/gfxWindowsPlatform.h index 3ef1c2eb6e9a..833924149158 100644 --- a/gfx/thebes/public/gfxWindowsPlatform.h +++ b/gfx/thebes/public/gfxWindowsPlatform.h @@ -85,7 +85,8 @@ public: /* Find a FontFamily/FontEntry object that represents a font on your system given a name */ FontFamily *FindFontFamily(const nsAString& aName); - FontEntry *FindFontEntry(const nsAString& aName, const gfxFontStyle& aFontStyle); + FontEntry *FindFontEntry(FontFamily *aFontFamily, const gfxFontStyle *aFontStyle); + FontEntry *FindFontEntry(const nsAString& aName, const gfxFontStyle *aFontStyle); PRBool GetPrefFontEntries(const nsCString& aLangGroup, nsTArray > *array); void SetPrefFontEntries(const nsCString& aLangGroup, nsTArray >& array); @@ -100,9 +101,6 @@ private: static int CALLBACK FontEnumProc(const ENUMLOGFONTEXW *lpelfe, const NEWTEXTMETRICEXW *metrics, DWORD fontType, LPARAM data); - static int CALLBACK FamilyAddStylesProc(const ENUMLOGFONTEXW *lpelfe, - const NEWTEXTMETRICEXW *nmetrics, - DWORD fontType, LPARAM data); static PLDHashOperator PR_CALLBACK FontGetStylesProc(nsStringHashKey::KeyType aKey, nsRefPtr& aFontFamily, diff --git a/gfx/thebes/src/gfxFontUtils.cpp b/gfx/thebes/src/gfxFontUtils.cpp index 0aa1192587f7..48a3c4991174 100644 --- a/gfx/thebes/src/gfxFontUtils.cpp +++ b/gfx/thebes/src/gfxFontUtils.cpp @@ -220,7 +220,7 @@ static const struct UnicodeRangeTableEntry gUnicodeRanges[] = { nsresult -gfxFontUtils::ReadCMAPTableFormat12(PRUint8 *aBuf, PRInt32 aLength, gfxSparseBitSet& aCharacterMap) +gfxFontUtils::ReadCMAPTableFormat12(PRUint8 *aBuf, PRInt32 aLength, gfxSparseBitSet& aCharacterMap, std::bitset<128>& aUnicodeRanges) { enum { OffsetFormat = 0, @@ -260,7 +260,7 @@ gfxFontUtils::ReadCMAPTableFormat12(PRUint8 *aBuf, PRInt32 aLength, gfxSparseBit } nsresult -gfxFontUtils::ReadCMAPTableFormat4(PRUint8 *aBuf, PRInt32 aLength, gfxSparseBitSet& aCharacterMap) +gfxFontUtils::ReadCMAPTableFormat4(PRUint8 *aBuf, PRInt32 aLength, gfxSparseBitSet& aCharacterMap, std::bitset<128>& aUnicodeRanges) { enum { OffsetFormat = 0, @@ -340,8 +340,8 @@ gfxFontUtils::ReadCMAPTableFormat4(PRUint8 *aBuf, PRInt32 aLength, gfxSparseBitS (platformID == PlatformIDUnicode && encodingID == EncodingIDUCS4ForUnicodePlatform)) nsresult -gfxFontUtils::ReadCMAP(PRUint8 *aBuf, PRUint32 aBufLength, gfxSparseBitSet& aCharacterMap, - PRPackedBool& aUnicodeFont, PRPackedBool& aSymbolFont) +gfxFontUtils::ReadCMAP(PRUint8 *aBuf, PRUint32 aBufLength, gfxSparseBitSet& aCharacterMap, std::bitset<128>& aUnicodeRanges, + PRPackedBool& aUnicodeFont, PRPackedBool& aSymbolFont) { enum { OffsetVersion = 0, @@ -395,13 +395,9 @@ gfxFontUtils::ReadCMAP(PRUint8 *aBuf, PRUint32 aBufLength, gfxSparseBitSet& aCha keepOffset = offset; break; } else if (format == 4 && acceptableFormat4(platformID, encodingID, keepFormat)) { - aUnicodeFont = PR_TRUE; - aSymbolFont = PR_FALSE; keepFormat = format; keepOffset = offset; } else if (format == 12 && acceptableUCS4Encoding(platformID, encodingID)) { - aUnicodeFont = PR_TRUE; - aSymbolFont = PR_FALSE; keepFormat = format; keepOffset = offset; break; // we don't want to try anything else when this format is available. @@ -411,9 +407,9 @@ gfxFontUtils::ReadCMAP(PRUint8 *aBuf, PRUint32 aBufLength, gfxSparseBitSet& aCha nsresult rv = NS_ERROR_FAILURE; if (keepFormat == 12) - rv = ReadCMAPTableFormat12(aBuf + keepOffset, aBufLength - keepOffset, aCharacterMap); + rv = ReadCMAPTableFormat12(aBuf + keepOffset, aBufLength - keepOffset, aCharacterMap, aUnicodeRanges); else if (keepFormat == 4) - rv = ReadCMAPTableFormat4(aBuf + keepOffset, aBufLength - keepOffset, aCharacterMap); + rv = ReadCMAPTableFormat4(aBuf + keepOffset, aBufLength - keepOffset, aCharacterMap, aUnicodeRanges); return rv; } diff --git a/gfx/thebes/src/gfxQuartzFontCache.h b/gfx/thebes/src/gfxQuartzFontCache.h index ccf0ebd5e246..5c6f8588d92e 100644 --- a/gfx/thebes/src/gfxQuartzFontCache.h +++ b/gfx/thebes/src/gfxQuartzFontCache.h @@ -102,6 +102,7 @@ protected: MacOSFamilyEntry *mFamily; ATSUFontID mATSUFontID; + std::bitset<128> mUnicodeRanges; gfxSparseBitSet mCharacterMap; PRPackedBool mCmapInitialized; diff --git a/gfx/thebes/src/gfxQuartzFontCache.mm b/gfx/thebes/src/gfxQuartzFontCache.mm index f134804828d6..7bfd664832ce 100644 --- a/gfx/thebes/src/gfxQuartzFontCache.mm +++ b/gfx/thebes/src/gfxQuartzFontCache.mm @@ -190,7 +190,7 @@ MacOSFontEntry::ReadCMAP() nsresult rv = NS_ERROR_FAILURE; PRPackedBool unicodeFont, symbolFont; // currently ignored - rv = gfxFontUtils::ReadCMAP(cmap, size, mCharacterMap, unicodeFont, symbolFont); + rv = gfxFontUtils::ReadCMAP(cmap, size, mCharacterMap, mUnicodeRanges, unicodeFont, symbolFont); // for complex scripts, check for the presence of mort/morx PRBool checkedForMorphTable = PR_FALSE, hasMorphTable = PR_FALSE; diff --git a/gfx/thebes/src/gfxWindowsFonts.cpp b/gfx/thebes/src/gfxWindowsFonts.cpp index bcd8f471c519..9e6d145f969d 100644 --- a/gfx/thebes/src/gfxWindowsFonts.cpp +++ b/gfx/thebes/src/gfxWindowsFonts.cpp @@ -109,260 +109,6 @@ struct DCFromContext { PRBool needsRelease; }; - -/********************************************************************** - * - * class FontFamily - * - **********************************************************************/ -static nsresult -ReadCMAP(HDC hdc, FontEntry *aFontEntry) -{ - const PRUint32 kCMAP = (('c') | ('m' << 8) | ('a' << 16) | ('p' << 24)); - - DWORD len = GetFontData(hdc, kCMAP, 0, nsnull, 0); - if (len == GDI_ERROR || len == 0) // not a truetype font -- - return NS_ERROR_FAILURE; // we'll treat it as a symbol font - - nsAutoTArray buffer; - if (!buffer.AppendElements(len)) - return NS_ERROR_OUT_OF_MEMORY; - PRUint8 *buf = buffer.Elements(); - - DWORD newLen = GetFontData(hdc, kCMAP, 0, buf, len); - NS_ENSURE_TRUE(newLen == len, NS_ERROR_FAILURE); - - return gfxFontUtils::ReadCMAP(buf, len, aFontEntry->mCharacterMap, - aFontEntry->mUnicodeFont, aFontEntry->mSymbolFont); -} - -struct FamilyAddStyleProcData { - HDC dc; - FontFamily *ff; -}; - -int CALLBACK -FontFamily::FamilyAddStylesProc(const ENUMLOGFONTEXW *lpelfe, - const NEWTEXTMETRICEXW *nmetrics, - DWORD fontType, LPARAM data) -{ - const NEWTEXTMETRICW& metrics = nmetrics->ntmTm; - LOGFONTW logFont = lpelfe->elfLogFont; - - FamilyAddStyleProcData *faspd = reinterpret_cast(data); - FontFamily *ff = faspd->ff; - HDC hdc = faspd->dc; - - // Some fonts claim to support things > 900, but we don't so clamp the sizes - logFont.lfWeight = PR_MAX(PR_MIN(logFont.lfWeight, 900), 100); - - FontEntry *fe = nsnull; - for (PRUint32 i = 0; i < ff->mVariations.Length(); ++i) { - fe = ff->mVariations[i]; - - // check if we already know about this face - if (fe->mWeight == logFont.lfWeight && - fe->mItalic == (logFont.lfItalic == 0xFF)) { - // update the charset bit here since this could be different - fe->mCharset[metrics.tmCharSet] = 1; - return 1; - } - } - - fe = new FontEntry(ff->mName); - ff->mVariations.AppendElement(fe); - - fe->mItalic = (logFont.lfItalic == 0xFF); - fe->mWeight = logFont.lfWeight; - - if (metrics.ntmFlags & NTM_TYPE1) - fe->mIsType1 = fe->mForceGDI = PR_TRUE; - - // fontType == TRUETYPE_FONTTYPE when (metrics.ntmFlags & NTM_TT_OPENTYPE) - if (fontType == TRUETYPE_FONTTYPE || metrics.ntmFlags & (NTM_PS_OPENTYPE)) - fe->mTrueType = PR_TRUE; - - // mark the charset bit - fe->mCharset[metrics.tmCharSet] = 1; - - fe->mWindowsFamily = logFont.lfPitchAndFamily & 0xF0; - fe->mWindowsPitch = logFont.lfPitchAndFamily & 0x0F; - - if (nmetrics->ntmFontSig.fsUsb[0] != 0x00000000 && - nmetrics->ntmFontSig.fsUsb[1] != 0x00000000 && - nmetrics->ntmFontSig.fsUsb[2] != 0x00000000 && - nmetrics->ntmFontSig.fsUsb[3] != 0x00000000) { - - // set the unicode ranges - PRUint32 x = 0; - for (PRUint32 i = 0; i < 4; ++i) { - DWORD range = nmetrics->ntmFontSig.fsUsb[i]; - for (PRUint32 k = 0; k < 32; ++k) { - fe->mUnicodeRanges[x++] = (range & (1 << k)) != 0; - } - } - } - - // read in the character map - logFont.lfCharSet = DEFAULT_CHARSET; - HFONT font = CreateFontIndirectW(&logFont); - - NS_ASSERTION(font, "This font creation should never ever ever fail"); - if (font) { - HFONT oldFont = (HFONT)SelectObject(hdc, font); - - // ReadCMAP may change the values of mUnicodeFont and mSymbolFont - if (NS_FAILED(ReadCMAP(hdc, fe))) { - // Type1 fonts aren't necessarily Unicode but - // this is the best guess we can make here - if (fe->mIsType1) - fe->mUnicodeFont = PR_TRUE; - else - fe->mUnicodeFont = PR_FALSE; - - // For fonts where we failed to read the character map, - // we should use GDI to slowly determine their cmap lazily - fe->mForceGDI = PR_TRUE; - - //printf("%d, %s failed to get cmap\n", aFontEntry->mIsType1, NS_ConvertUTF16toUTF8(aFontEntry->mName).get()); - } - - SelectObject(hdc, oldFont); - DeleteObject(font); - } - - return 1; -} - -// general cmap reading routines moved to gfxFontUtils.cpp -void -FontFamily::FindStyleVariations() -{ - mHasStyles = PR_TRUE; - - HDC hdc = GetDC(nsnull); - - LOGFONTW logFont; - memset(&logFont, 0, sizeof(LOGFONTW)); - logFont.lfCharSet = DEFAULT_CHARSET; - logFont.lfPitchAndFamily = 0; - PRUint32 l = PR_MIN(mName.Length(), LF_FACESIZE - 1); - memcpy(logFont.lfFaceName, - nsPromiseFlatString(mName).get(), - l * sizeof(PRUnichar)); - logFont.lfFaceName[l] = 0; - - FamilyAddStyleProcData faspd; - faspd.dc = hdc; - faspd.ff = this; - - EnumFontFamiliesExW(hdc, &logFont, (FONTENUMPROCW)FontFamily::FamilyAddStylesProc, (LPARAM)&faspd, 0); - - ReleaseDC(nsnull, hdc); - - // Look for font families without bold variations and add a FontEntry - // with synthetic bold (weight 600) for them. - FontEntry *darkestItalic = nsnull; - FontEntry *darkestNonItalic = nsnull; - PRUint8 highestItalic = 0, highestNonItalic = 0; - for (PRUint32 i = 0; i < mVariations.Length(); i++) { - FontEntry *fe = mVariations[i]; - if (fe->mItalic) { - if (!darkestItalic || fe->mWeight > darkestItalic->mWeight) - darkestItalic = fe; - } else { - if (!darkestNonItalic || fe->mWeight > darkestNonItalic->mWeight) - darkestNonItalic = fe; - } - } - - if (darkestItalic && darkestItalic->mWeight < 600) { - FontEntry *newEntry = new FontEntry(*darkestItalic); - newEntry->mWeight = 600; - mVariations.AppendElement(newEntry); - } - if (darkestNonItalic && darkestNonItalic->mWeight < 600) { - FontEntry *newEntry = new FontEntry(*darkestNonItalic); - newEntry->mWeight = 600; - mVariations.AppendElement(newEntry); - } -} - - -FontEntry * -FontFamily::FindFontEntry(const gfxFontStyle& aFontStyle) -{ - if (!mHasStyles) - FindStyleVariations(); - - PRUint8 bestMatch = 0; - PRBool italic = (aFontStyle.style & (FONT_STYLE_ITALIC | FONT_STYLE_OBLIQUE)) != 0; - - FontEntry *weightList[10] = { 0 }; - for (PRUint32 j = 0; j < 2; j++) { - PRBool matchesSomething = PR_FALSE; - // build up an array of weights that match the italicness we're looking for - for (PRUint32 i = 0; i < mVariations.Length(); i++) { - FontEntry *fe = mVariations[i]; - const PRUint8 weight = (fe->mWeight / 100); - if (fe->mItalic == italic) { - weightList[weight] = fe; - matchesSomething = PR_TRUE; - } - } - if (matchesSomething) - break; - italic = !italic; - } - - PRInt8 baseWeight, weightDistance; - aFontStyle.ComputeWeightAndOffset(&baseWeight, &weightDistance); - - // 500 isn't quite bold so we want to treat it as 400 if we don't - // have a 500 weight - if (baseWeight == 5 && weightDistance == 0) { - // If we have a 500 weight then use it - if (weightList[5]) - return weightList[5]; - - // Otherwise treat as 400 - baseWeight = 4; - } - - PRInt8 matchBaseWeight = 0; - PRInt8 direction = (baseWeight > 5) ? 1 : -1; - for (PRInt8 i = baseWeight; ; i += direction) { - if (weightList[i]) { - matchBaseWeight = i; - break; - } - - // if we've reached one side without finding a font, - // go the other direction until we find a match - if (i == 1 || i == 9) - direction = -direction; - } - - FontEntry *matchFE; - const PRInt8 absDistance = abs(weightDistance); - direction = (weightDistance >= 0) ? 1 : -1; - for (PRInt8 i = matchBaseWeight, k = 0; i < 10 && i > 0; i += direction) { - if (weightList[i]) { - matchFE = weightList[i]; - k++; - } - if (k > absDistance) - break; - } - - if (!matchFE) - matchFE = weightList[matchBaseWeight]; - - NS_ASSERTION(matchFE, "we should always be able to return something here"); - return matchFE; -} - - /********************************************************************** * * class gfxWindowsFont @@ -696,7 +442,7 @@ gfxWindowsFontGroup::GroupFamilyListToArrayList(nsTArray > * PRUint32 len = fonts.Length(); for (PRUint32 i = 0; i < len; ++i) { - nsRefPtr fe = gfxWindowsPlatform::GetPlatform()->FindFontEntry(fonts[i], mStyle); + nsRefPtr fe = gfxWindowsPlatform::GetPlatform()->FindFontEntry(fonts[i], &mStyle); list->AppendElement(fe); } } @@ -712,7 +458,7 @@ gfxWindowsFontGroup::FamilyListToArrayList(const nsString& aFamilies, PRUint32 len = fonts.Length(); for (PRUint32 i = 0; i < len; ++i) { const nsAutoString& str = fonts[i]; - nsRefPtr fe = gfxWindowsPlatform::GetPlatform()->FindFontEntry(str, mStyle); + nsRefPtr fe = gfxWindowsPlatform::GetPlatform()->FindFontEntry(str, &mStyle); list->AppendElement(fe); } } @@ -731,7 +477,7 @@ gfxWindowsFontGroup::gfxWindowsFontGroup(const nsAString& aFamilies, const gfxFo NS_ERROR("Failed to create font group"); return; } - nsRefPtr fe = gfxWindowsPlatform::GetPlatform()->FindFontEntry(nsDependentString(logFont.lfFaceName), *aStyle); + nsRefPtr fe = gfxWindowsPlatform::GetPlatform()->FindFontEntry(nsDependentString(logFont.lfFaceName), aStyle); mFontEntries.AppendElement(fe); } @@ -991,7 +737,7 @@ struct ScriptPropertyEntry { static const struct ScriptPropertyEntry gScriptToText[] = { { nsnull, nsnull }, - { "LANG_ARABIC", "ar" }, // ara + { "LANG_ARABIC", "ara" }, { "LANG_BULGARIAN", "bul" }, { "LANG_CATALAN", "cat" }, { "LANG_CHINESE", "zh-CN" }, //XXX right lang code? @@ -1558,13 +1304,6 @@ public: (ch >= 0xF0000 && ch <= 0x10FFFD)) return selectedFont; - // check out the style's language group - if (!selectedFont) { - nsAutoTArray, 5> fonts; - this->GetPrefFonts(mGroup->GetStyle()->langGroup.get(), fonts); - selectedFont = WhichFontSupportsChar(fonts, ch); - } - // otherwise search prefs if (!selectedFont) { /* first check with the script properties to see what they think */ diff --git a/gfx/thebes/src/gfxWindowsPlatform.cpp b/gfx/thebes/src/gfxWindowsPlatform.cpp index be6d4c9b7b29..88109cc6b121 100644 --- a/gfx/thebes/src/gfxWindowsPlatform.cpp +++ b/gfx/thebes/src/gfxWindowsPlatform.cpp @@ -58,13 +58,7 @@ //#define DEBUG_CMAP_SIZE 1 -static __inline void -BuildKeyNameFromFontName(nsAString &aName) -{ - if (aName.Length() >= LF_FACESIZE) - aName.Truncate(LF_FACESIZE - 1); - ToLowerCase(aName); -} +static nsresult ReadCMAP(HDC hdc, FontEntry *aFontEntry); int PR_CALLBACK gfxWindowsPlatform::PrefChangedCallback(const char *aPrefName, void *closure) @@ -113,14 +107,23 @@ gfxWindowsPlatform::FontEnumProc(const ENUMLOGFONTEXW *lpelfe, FontTable *ht = reinterpret_cast(data); const NEWTEXTMETRICW& metrics = nmetrics->ntmTm; - const LOGFONTW& logFont = lpelfe->elfLogFont; + LOGFONTW logFont = lpelfe->elfLogFont; // Ignore vertical fonts - if (logFont.lfFaceName[0] == L'@') + if (logFont.lfFaceName[0] == L'@') { return 1; + } - nsAutoString name(logFont.lfFaceName); - BuildKeyNameFromFontName(name); + // Some fonts claim to support things > 900, but we don't so clamp the sizes + logFont.lfWeight = PR_MAX(PR_MIN(logFont.lfWeight, 900), 100); + +#ifdef DEBUG_pavlov + printf("%s %d %d %d\n", NS_ConvertUTF16toUTF8(nsDependentString(logFont.lfFaceName)).get(), + logFont.lfCharSet, logFont.lfItalic, logFont.lfWeight); +#endif + + nsString name(logFont.lfFaceName); + ToLowerCase(name); nsRefPtr ff; if (!ht->Get(name, &ff)) { @@ -128,12 +131,176 @@ gfxWindowsPlatform::FontEnumProc(const ENUMLOGFONTEXW *lpelfe, ht->Put(name, ff); } + nsRefPtr fe; + for (PRUint32 i = 0; i < ff->mVariations.Length(); ++i) { + fe = ff->mVariations[i]; + if (fe->mWeight == logFont.lfWeight && + fe->mItalic == (logFont.lfItalic == 0xFF)) { + return 1; /* we already know about this font */ + } + } + + fe = new FontEntry(ff->mName); + /* don't append it until the end in case of error */ + + fe->mItalic = (logFont.lfItalic == 0xFF); + fe->mWeight = logFont.lfWeight; + + if (metrics.ntmFlags & NTM_TYPE1) + fe->mIsType1 = fe->mForceGDI = PR_TRUE; + if (metrics.ntmFlags & (NTM_PS_OPENTYPE | NTM_TT_OPENTYPE)) + fe->mTrueType = PR_TRUE; + + // mark the charset bit + fe->mCharset[metrics.tmCharSet] = 1; + + fe->mWindowsFamily = logFont.lfPitchAndFamily & 0xF0; + fe->mWindowsPitch = logFont.lfPitchAndFamily & 0x0F; + + if (nmetrics->ntmFontSig.fsUsb[0] == 0x00000000 && + nmetrics->ntmFontSig.fsUsb[1] == 0x00000000 && + nmetrics->ntmFontSig.fsUsb[2] == 0x00000000 && + nmetrics->ntmFontSig.fsUsb[3] == 0x00000000) { + // no unicode ranges + fe->mUnicodeFont = PR_FALSE; + } else { + fe->mUnicodeFont = PR_TRUE; + + // set the unicode ranges + PRUint32 x = 0; + for (PRUint32 i = 0; i < 4; ++i) { + DWORD range = nmetrics->ntmFontSig.fsUsb[i]; + for (PRUint32 k = 0; k < 32; ++k) { + fe->mUnicodeRanges[x++] = (range & (1 << k)) != 0; + } + } + } + + /* read in the character map */ + HDC hdc = GetDC(nsnull); + logFont.lfCharSet = DEFAULT_CHARSET; + HFONT font = CreateFontIndirectW(&logFont); + + NS_ASSERTION(font, "This font creation should never ever ever fail"); + if (font) { + HFONT oldFont = (HFONT)SelectObject(hdc, font); + + TEXTMETRIC metrics; + GetTextMetrics(hdc, &metrics); + if (metrics.tmPitchAndFamily & TMPF_TRUETYPE) + fe->mTrueType = PR_TRUE; + + if (NS_FAILED(ReadCMAP(hdc, fe))) { + // Type1 fonts aren't necessarily Unicode but + // this is the best guess we can make here + if (fe->mIsType1) + fe->mUnicodeFont = PR_TRUE; + else + fe->mUnicodeFont = PR_FALSE; + + //printf("%d, %s failed to get cmap\n", aFontEntry->mIsType1, NS_ConvertUTF16toUTF8(aFontEntry->mName).get()); + } + + SelectObject(hdc, oldFont); + DeleteObject(font); + } + + ReleaseDC(nsnull, hdc); + + if (!fe->mUnicodeFont) { + /* non-unicode fonts.. boy lets just set all code points + between 0x20 and 0xFF. All the ones on my system do... + If we really wanted to test which characters in this + range were supported we could just generate a string with + each codepoint and do GetGlyphIndicies or similar to determine + what is there. + */ + fe->mCharacterMap.SetRange(0x20, 0xFF); + } + + /* append the variation to the font family */ + ff->mVariations.AppendElement(fe); + return 1; } - // general cmap reading routines moved to gfxFontUtils.cpp +static nsresult +ReadCMAP(HDC hdc, FontEntry *aFontEntry) +{ + const PRUint32 kCMAP = (('c') | ('m' << 8) | ('a' << 16) | ('p' << 24)); + + DWORD len = GetFontData(hdc, kCMAP, 0, nsnull, 0); + if (len == GDI_ERROR || len == 0) // not a truetype font -- + return NS_ERROR_FAILURE; // we'll treat it as a symbol font + + nsAutoTArray buffer; + if (!buffer.AppendElements(len)) + return NS_ERROR_OUT_OF_MEMORY; + PRUint8 *buf = buffer.Elements(); + + DWORD newLen = GetFontData(hdc, kCMAP, 0, buf, len); + NS_ENSURE_TRUE(newLen == len, NS_ERROR_FAILURE); + + return gfxFontUtils::ReadCMAP(buf, len, aFontEntry->mCharacterMap, aFontEntry->mUnicodeRanges, + aFontEntry->mUnicodeFont, aFontEntry->mSymbolFont); +} + +PLDHashOperator PR_CALLBACK +gfxWindowsPlatform::FontGetStylesProc(nsStringHashKey::KeyType aKey, + nsRefPtr& aFontFamily, + void* userArg) +{ + NS_ASSERTION(aFontFamily->mVariations.Length() == 1, "We should only have 1 variation here"); + nsRefPtr aFontEntry = aFontFamily->mVariations[0]; + + HDC hdc = GetDC(nsnull); + + LOGFONTW logFont; + memset(&logFont, 0, sizeof(LOGFONTW)); + logFont.lfCharSet = DEFAULT_CHARSET; + logFont.lfPitchAndFamily = 0; + PRUint32 l = PR_MIN(aFontEntry->GetName().Length(), LF_FACESIZE - 1); + memcpy(logFont.lfFaceName, + nsPromiseFlatString(aFontEntry->GetName()).get(), + l * sizeof(PRUnichar)); + logFont.lfFaceName[l] = 0; + + EnumFontFamiliesExW(hdc, &logFont, (FONTENUMPROCW)gfxWindowsPlatform::FontEnumProc, (LPARAM)userArg, 0); + + ReleaseDC(nsnull, hdc); + + // Look for font families without bold variations and add a FontEntry + // with synthetic bold (weight 600) for them. + nsRefPtr darkestItalic; + nsRefPtr darkestNonItalic; + PRUint8 highestItalic = 0, highestNonItalic = 0; + for (PRUint32 i = 0; i < aFontFamily->mVariations.Length(); i++) { + nsRefPtr fe = aFontFamily->mVariations[i]; + if (fe->mItalic) { + if (!darkestItalic || fe->mWeight > darkestItalic->mWeight) + darkestItalic = fe; + } else { + if (!darkestNonItalic || fe->mWeight > darkestNonItalic->mWeight) + darkestNonItalic = fe; + } + } + + if (darkestItalic && darkestItalic->mWeight < 600) { + nsRefPtr newEntry = new FontEntry(*darkestItalic.get()); + newEntry->mWeight = 600; + aFontFamily->mVariations.AppendElement(newEntry); + } + if (darkestNonItalic && darkestNonItalic->mWeight < 600) { + nsRefPtr newEntry = new FontEntry(*darkestNonItalic.get()); + newEntry->mWeight = 600; + aFontFamily->mVariations.AppendElement(newEntry); + } + + return PL_DHASH_NEXT; +} + struct FontListData { FontListData(const nsACString& aLangGroup, const nsACString& aGenericFamily, nsStringArray& aListOfFonts) : mLangGroup(aLangGroup), mGenericFamily(aGenericFamily), mStringArray(aListOfFonts) {} @@ -188,6 +355,14 @@ RemoveCharsetFromFontSubstitute(nsAString &aName) aName.Truncate(comma); } +static void +BuildKeyNameFromFontName(nsAString &aName) +{ + if (aName.Length() >= LF_FACESIZE) + aName.Truncate(LF_FACESIZE - 1); + ToLowerCase(aName); +} + nsresult gfxWindowsPlatform::UpdateFontList() { @@ -211,6 +386,9 @@ gfxWindowsPlatform::UpdateFontList() EnumFontFamiliesExW(dc, &logFont, (FONTENUMPROCW)gfxWindowsPlatform::FontEnumProc, (LPARAM)&mFonts, 0); ::ReleaseDC(nsnull, dc); + // Look for additional styles + mFonts.Enumerate(gfxWindowsPlatform::FontGetStylesProc, &mFonts); + // Create the list of FontSubstitutes nsCOMPtr regKey = do_CreateInstance("@mozilla.org/windows-registry-key;1"); if (!regKey) @@ -263,7 +441,7 @@ gfxWindowsPlatform::UpdateFontList() static PRBool SimpleResolverCallback(const nsAString& aName, void* aClosure) { - nsString *result = static_cast(aClosure); + nsString* result = static_cast(aClosure); result->Assign(aName); return PR_FALSE; } @@ -413,7 +591,7 @@ gfxWindowsPlatform::FindFontForCharProc(nsStringHashKey::KeyType aKey, const PRUint32 ch = data->ch; - nsRefPtr fe = aFontFamily->FindFontEntry(*data->fontToMatch->GetStyle()); + nsRefPtr fe = GetPlatform()->FindFontEntry(aFontFamily, data->fontToMatch->GetStyle()); // skip over non-unicode and bitmap fonts and fonts that don't have // the code point we're looking for @@ -435,7 +613,7 @@ gfxWindowsPlatform::FindFontForCharProc(nsStringHashKey::KeyType aKey, rank += 3; /* italic */ - const PRBool italic = (data->fontToMatch->GetStyle()->style != FONT_STYLE_NORMAL); + const PRBool italic = (data->fontToMatch->GetStyle()->style & (FONT_STYLE_ITALIC | FONT_STYLE_OBLIQUE)) ? PR_TRUE : PR_FALSE; if (fe->mItalic != italic) rank += 3; @@ -474,7 +652,7 @@ gfxWindowsPlatform::FindFontForChar(PRUint32 aCh, gfxWindowsFont *aFont) if (!data.bestMatch) { mCodepointsWithNoFonts.set(aCh); } - + return data.bestMatch; } @@ -488,8 +666,8 @@ gfxWindowsPlatform::CreateFontGroup(const nsAString &aFamilies, FontFamily * gfxWindowsPlatform::FindFontFamily(const nsAString& aName) { - nsAutoString name(aName); - BuildKeyNameFromFontName(name); + nsString name(aName); + ToLowerCase(name); nsRefPtr ff; if (!mFonts.Get(name, &ff) && @@ -501,13 +679,93 @@ gfxWindowsPlatform::FindFontFamily(const nsAString& aName) } FontEntry * -gfxWindowsPlatform::FindFontEntry(const nsAString& aName, const gfxFontStyle& aFontStyle) +gfxWindowsPlatform::FindFontEntry(const nsAString& aName, const gfxFontStyle *aFontStyle) { nsRefPtr ff = FindFontFamily(aName); if (!ff) return nsnull; - return ff->FindFontEntry(aFontStyle); + return FindFontEntry(ff, aFontStyle); +} + +FontEntry * +gfxWindowsPlatform::FindFontEntry(FontFamily *aFontFamily, const gfxFontStyle *aFontStyle) +{ + PRUint8 bestMatch = 0; + PRBool italic = (aFontStyle->style & (FONT_STYLE_ITALIC | FONT_STYLE_OBLIQUE)) != 0; + + nsAutoTArray, 10> weightList; + weightList.AppendElements(10); + for (PRUint32 j = 0; j < 2; j++) { + PRBool matchesSomething = PR_FALSE; + // build up an array of weights that match the italicness we're looking for + for (PRUint32 i = 0; i < aFontFamily->mVariations.Length(); i++) { + nsRefPtr fe = aFontFamily->mVariations[i]; + const PRUint8 weight = (fe->mWeight / 100); + if (fe->mItalic == italic) { + weightList[weight] = fe; + matchesSomething = PR_TRUE; + } + } + if (matchesSomething) + break; + italic = !italic; + } + + PRInt8 baseWeight, weightDistance; + aFontStyle->ComputeWeightAndOffset(&baseWeight, &weightDistance); + + // 500 isn't quite bold so we want to treat it as 400 if we don't + // have a 500 weight + if (baseWeight == 5 && weightDistance == 0) { + // If we have a 500 weight then use it + if (weightList[5]) + return weightList[5]; + + // Otherwise treat as 400 + baseWeight = 4; + } + + + PRInt8 matchBaseWeight = 0; + PRInt8 direction = (baseWeight > 5) ? 1 : -1; + for (PRInt8 i = baseWeight; ; i += direction) { + if (weightList[i]) { + matchBaseWeight = i; + break; + } + + // if we've reached one side without finding a font, + // go the other direction until we find a match + if (i == 1 || i == 9) + direction = -direction; + } + + nsRefPtr matchFE; + const PRInt8 absDistance = abs(weightDistance); + direction = (weightDistance >= 0) ? 1 : -1; + for (PRInt8 i = matchBaseWeight, k = 0; i < 10 && i > 0; i += direction) { + if (weightList[i]) { + matchFE = weightList[i]; + k++; + } + if (k > absDistance) + break; + } + + if (!matchFE) { + /* if we still don't have a match, grab the closest thing in the other direction */ + direction = -direction; + for (PRInt8 i = matchBaseWeight; i < 10 && i > 0; i += direction) { + if (weightList[i]) { + matchFE = weightList[i]; + } + } + } + + + NS_ASSERTION(matchFE, "we should always be able to return something here"); + return matchFE; } cmsHPROFILE From dd1a6eadd6433664b9d6750daa674af70d4733eb Mon Sep 17 00:00:00 2001 From: "reed@reedloden.com" Date: Wed, 26 Mar 2008 13:50:44 -0700 Subject: [PATCH 033/129] Bug 425217 - "Use 32bpp (instead of 64bpp) for theme icon PNGs" [p=faaborg@mozilla.com (Alex Faaborg) a=blocking-firefox3+] --- .../browser/Bookmarks-folder-aero.png | Bin 386 -> 361 bytes .../winstripe/browser/Go-arrow-aero.png | Bin 937 -> 684 bytes .../winstripe/browser/Go-arrow-rtl-aero.png | Bin 933 -> 681 bytes .../themes/winstripe/browser/Go-arrow-rtl.png | Bin 584 -> 414 bytes browser/themes/winstripe/browser/Go-arrow.png | Bin 570 -> 412 bytes .../themes/winstripe/browser/Info-aero.png | Bin 762 -> 662 bytes .../winstripe/browser/Search-glass-aero.png | Bin 1344 -> 821 bytes .../browser/Search-glass-rtl-aero.png | Bin 1346 -> 828 bytes .../winstripe/browser/Search-glass-rtl.png | Bin 1222 -> 682 bytes .../themes/winstripe/browser/Search-glass.png | Bin 1166 -> 707 bytes .../themes/winstripe/browser/Toolbar-aero.png | Bin 122971 -> 76114 bytes .../winstripe/browser/Toolbar-small-aero.png | Bin 58452 -> 21161 bytes .../winstripe/browser/Toolbar-small.png | Bin 61708 -> 25087 bytes browser/themes/winstripe/browser/Toolbar.png | Bin 113783 -> 69200 bytes .../browser/feeds/audioFeedIcon-aero.png | Bin 1889 -> 1885 bytes .../winstripe/browser/feeds/audioFeedIcon.png | Bin 1849 -> 1833 bytes .../winstripe/browser/feeds/feedIcon-aero.png | Bin 1889 -> 1885 bytes .../winstripe/browser/feeds/feedIcon.png | Bin 1849 -> 1833 bytes .../browser/feeds/videoFeedIcon-aero.png | Bin 1889 -> 1885 bytes .../winstripe/browser/feeds/videoFeedIcon.png | Bin 1849 -> 1833 bytes .../themes/winstripe/browser/icon-aero.png | Bin 953 -> 824 bytes browser/themes/winstripe/browser/icon.png | Bin 915 -> 861 bytes .../winstripe/browser/identity-aero.png | Bin 19137 -> 13247 bytes browser/themes/winstripe/browser/identity.png | Bin 19684 -> 14240 bytes .../browser/livemark-folder-aero.png | Bin 531 -> 505 bytes .../winstripe/browser/livemark-folder.png | Bin 535 -> 467 bytes .../winstripe/browser/menu-back-aero.png | Bin 459 -> 435 bytes .../themes/winstripe/browser/menu-back.png | Bin 367 -> 341 bytes .../winstripe/browser/menu-forward-aero.png | Bin 454 -> 434 bytes .../themes/winstripe/browser/menu-forward.png | Bin 370 -> 343 bytes .../winstripe/browser/pageInfo-aero.png | Bin 25298 -> 8628 bytes browser/themes/winstripe/browser/pageInfo.png | Bin 24643 -> 8458 bytes .../browser/places/bookmarksMenu-aero.png | Bin 376 -> 346 bytes .../browser/places/bookmarksMenu.png | Bin 372 -> 371 bytes .../browser/places/bookmarksToolbar.png | Bin 288 -> 272 bytes .../browser/places/collapse-aero.png | Bin 393 -> 316 bytes .../winstripe/browser/places/collapse.png | Bin 434 -> 335 bytes .../winstripe/browser/places/expand-aero.png | Bin 394 -> 325 bytes .../winstripe/browser/places/expand.png | Bin 428 -> 335 bytes .../winstripe/browser/places/minus-aero.png | Bin 282 -> 271 bytes .../themes/winstripe/browser/places/minus.png | Bin 332 -> 293 bytes .../winstripe/browser/places/plus-aero.png | Bin 346 -> 307 bytes .../themes/winstripe/browser/places/plus.png | Bin 373 -> 308 bytes .../browser/places/starPage-aero.png | Bin 718 -> 393 bytes .../winstripe/browser/places/starPage.png | Bin 639 -> 352 bytes .../browser/places/starred48-aero.png | Bin 1935 -> 1911 bytes .../winstripe/browser/places/starred48.png | Bin 1790 -> 1785 bytes .../winstripe/browser/places/tag-aero.png | Bin 755 -> 676 bytes .../themes/winstripe/browser/places/tag.png | Bin 548 -> 517 bytes .../winstripe/browser/places/view-aero.png | Bin 189 -> 181 bytes .../themes/winstripe/browser/places/view.png | Bin 189 -> 181 bytes .../browser/preferences/Options-aero.png | Bin 26592 -> 9205 bytes .../winstripe/browser/preferences/Options.png | Bin 26801 -> 9438 bytes .../browser/preferences/alwaysAsk.png | Bin 491 -> 446 bytes .../browser/tabbrowser/tab-arrow-end-aero.png | Bin 869 -> 599 bytes .../browser/tabbrowser/tab-arrow-end.png | Bin 825 -> 509 bytes .../tabbrowser/tab-arrow-start-aero.png | Bin 882 -> 624 bytes .../browser/tabbrowser/tab-arrow-start.png | Bin 837 -> 527 bytes .../browser/tabbrowser/tabDragIndicator.png | Bin 359 -> 294 bytes .../global/console/bullet-question-aero.png | Bin 762 -> 662 bytes .../global/console/console-toolbar-aero.png | Bin 9567 -> 5806 bytes .../global/console/console-toolbar.png | Bin 8269 -> 5060 bytes .../themes/winstripe/global/dirListing/up.png | Bin 513 -> 482 bytes .../winstripe/global/icons/Error-aero.png | Bin 2799 -> 2767 bytes .../themes/winstripe/global/icons/Error.png | Bin 2212 -> 2135 bytes .../winstripe/global/icons/Portrait.png | Bin 856 -> 837 bytes .../global/icons/Print-preview-aero.png | Bin 792 -> 514 bytes .../winstripe/global/icons/Print-preview.png | Bin 971 -> 715 bytes .../winstripe/global/icons/Question.png | Bin 2420 -> 2340 bytes .../themes/winstripe/global/icons/Warning.png | Bin 1894 -> 1854 bytes .../global/icons/autoscroll-aero.png | Bin 5745 -> 3205 bytes .../winstripe/global/icons/autoscroll.png | Bin 5633 -> 2338 bytes .../global/icons/blacklist_large-aero.png | Bin 5505 -> 5441 bytes .../winstripe/global/icons/close-aero.png | Bin 2137 -> 1267 bytes .../themes/winstripe/global/icons/close.png | Bin 1909 -> 1174 bytes .../winstripe/global/icons/find-aero.png | Bin 2109 -> 1079 bytes .../themes/winstripe/global/icons/find.png | Bin 2043 -> 905 bytes .../global/icons/folder-item-aero.png | Bin 2435 -> 1687 bytes .../winstripe/global/icons/folder-item.png | Bin 2215 -> 1546 bytes .../winstripe/global/icons/notfound-aero.png | Bin 762 -> 662 bytes .../winstripe/global/icons/warning-large.png | Bin 2163 -> 2125 bytes .../themes/winstripe/global/icons/wrap.png | Bin 484 -> 434 bytes .../mozapps/downloads/downloadIcon-aero.png | Bin 1387 -> 1384 bytes .../mozapps/downloads/downloadIcon.png | Bin 1382 -> 1376 bytes .../extensions/extensionIcons-aero.png | Bin 2136 -> 1227 bytes .../mozapps/extensions/extensionIcons.png | Bin 2261 -> 1316 bytes .../mozapps/extensions/notifyBadges-aero.png | Bin 2608 -> 1565 bytes .../mozapps/extensions/notifyBadges.png | Bin 2444 -> 1453 bytes .../mozapps/extensions/question-aero.png | Bin 812 -> 759 bytes .../mozapps/extensions/ratings-aero.png | Bin 2042 -> 873 bytes .../winstripe/mozapps/extensions/ratings.png | Bin 2133 -> 851 bytes .../mozapps/extensions/searchIcons-aero.png | Bin 947 -> 930 bytes .../mozapps/extensions/searchIcons.png | Bin 860 -> 812 bytes .../mozapps/extensions/themeGeneric-aero.png | Bin 2272 -> 2094 bytes .../mozapps/extensions/themeGeneric.png | Bin 2301 -> 2185 bytes .../mozapps/places/defaultFavicon-aero.png | Bin 386 -> 361 bytes .../mozapps/places/tagContainerIcon-aero.png | Bin 755 -> 676 bytes .../mozapps/places/tagContainerIcon.png | Bin 548 -> 517 bytes .../mozapps/update/extensionalert-aero.png | Bin 2564 -> 1541 bytes .../mozapps/update/extensionalert.png | Bin 2396 -> 1432 bytes .../winstripe/mozapps/update/update.png | Bin 508 -> 368 bytes .../xpinstall/xpinstallItemGeneric-aero.png | Bin 1380 -> 1362 bytes 102 files changed, 0 insertions(+), 0 deletions(-) diff --git a/browser/themes/winstripe/browser/Bookmarks-folder-aero.png b/browser/themes/winstripe/browser/Bookmarks-folder-aero.png index d0bb109d30788defe0900e0212894c6269759c50..b9d216a55febfa392b9b68a82f1b24ae29db5cc5 100644 GIT binary patch delta 310 zcmV-60m=S?1L*>g83+Ra001a04^xpLCw~BkP)t-s|NsBm+S=ga;PdnIx3{;vyu7%$ zxOsVbg@uKWkB^+3oU5y=tgNiCu&}bSvb40cx3{;sxw*T$yS%)-zP`S{zrV!9#Mjr? z;NRci;NbG`@bmHU^YZcY^78cZ^7Zrc_4M@i^z`=i_4fAm_xAPo_V)Pq_WAht`hWTO z`uh3%`}+L*`~3X-$^^u?00007bW%=J0AFc&`TYIsxxya+003o4L_t&-SB1{I3V<*W zMA4g&DvgB?{Qp0*mS9Q|+_6w%)WRtbJHrNgu4LPR0E3eg%w3W}Ktc$Jagu6)c3Udg z61ciDW>_B^%^LtgK)W|@;0wrP0wXJ6=VR`^cyD~*zmlkP034=M&M%2Q*8l(j07*qo IM6N<$g8TZkG5`Po delta 335 zcmV-V0kHn*0)hjO83+ad001BJ|6!3KCw~DXNkl2Wf{URxQ>Y9 z_{I1A9ory*G)+9uhHsLr%lqiGr#Pd01M^MDCx2SSNy)_8h+fYa&I ztUnHi?*+grbggf<_dg4a6H<=RVKXatq-zcUoE9uV`3r$t^91Ahe6cPdrJVoy4;CnY zF~+qi2uHx)n*{2*UfcoRL+*z1nLGepl&MJE8m`&YI~JyVTcGPYWnD0ye}OAdJ`-r$ h7IynR{0CnG3;;$-7T0h{M;rhE002ovPDHLkV1gnJl(hf= diff --git a/browser/themes/winstripe/browser/Go-arrow-aero.png b/browser/themes/winstripe/browser/Go-arrow-aero.png index ecc33f5347042c0d12339c8757668f4d89fb2fe5..29c62941b4932f0ccdf1c782b57a9e97268d67fc 100755 GIT binary patch delta 559 zcmV+~0?_@b2do8<7zqdl0000RiTKQsAwGWs2}wjjR7l6|ls!ySQ5462r+u|wmI{rr zwI!5=!I6a+<458bF~&h#Wl`b+G*J@=6T|50;sEK|!3h>eLvV3$k(t4W#S{`87!*I> zy)Vb%z0yY@*2KxAcR4rrp8G%d{Qu`1QPniodU{qccW;4Sbi0-)A_wWu+uwZYy)t%n*5 z)&pz#yz?ve^u^Z6CyQIpfHFV?KwJ-u0b{{6!6O5%1!Gayf-#8k{T5ztp9o~f@qb`x zlSr5hQBdFNF1G^i-a0^C10tXuA5c^U3AhL|QoWE{4T$ss#CT}iMFiClk}7}g;F+{z zrmq!O9#l%Rz?^q8-b`?*@qxQzd!e;GexjuL-`NvXrfadtv(e;;aK9v)PqF(iK xaiex?xIUOq{&h3`Q#(hxIdm6Wy?M}^2OWUkJowM&!EdYH){rc86=O9AwGWt21!IgR9M69Ry|BAK@i^K4vzy7g&08~ zoQ;Jg4Kc=_#6Mz;g@V#3u|Y`G#KOc_+S*t^Xeq3qu{1;*3md5^j0grzu%J-MYB2CT!${KNqT6jSJUoQMO0rgvk_*TCFA%%buUtrtIaV z86g#cot<1Rk)UwOQZ;P7rVPEF=UEoxwY8BEqcNWk21iFtrdZ5o>+a?_nlf5T@9zx= zY;Im(ClWu&TYVgql=`H)x&%R^!8jC}oHUy=nXN6a*KFS3hZR>>AYWfKic^0{!Wbch zBuSDGA_QZM!7fR)c3B2HNQ~(`+!bP13A_@@9SF50doe)LG7$JrMqEt^NFD}aEp&>w{*Zl7_R7YA{ga|dO z3dOG0>vt<()oP=3st7=&Q1^cdV7(hULkIvfOl?gxs}H|_YRY2CW^0R4MSva|IInd9 zAT+jmN?@;#+h{ZxI1b~DjfDlfJ(Jnq_W2wRT7-o{gA<@RR@{Fl^F0+b0iB&XokoN4 z>gwEFe}6u|zCJ&1x5r{Oo5jNO&99+~fGk7td_TTM1oV1AU|C5D1ZIC`Y_?)C67l(5 zu4vS1wODxm=MT{rfwwn$jR>JHVC@!zf#+FPl9raHr){=}he%|3Srp@Or?an55dQrs z=IGIQy&g|*Z=rB{dU^TyD2h5=M+eKwvfn>DYq#IuMOV diff --git a/browser/themes/winstripe/browser/Go-arrow-rtl-aero.png b/browser/themes/winstripe/browser/Go-arrow-rtl-aero.png index 3170d39bf295d1dd90b23bb04dd2500c71dd0a1e..44f0b702d9ac415275966a05d417ae3a51615218 100755 GIT binary patch delta 556 zcmV+{0@MAa2dM>+7zqdl0000RiTKQsAwGWs21!IgR7l6|ls#xvK@i7(n|l#Iq7hPs z^Dr;5N~2(GER%4BSSD5?f;NXiEEKU2v9XjuKw}C~Y}8yz(If{VzyY8auz>`S16F_y>n{wC6xM&u z@Z_6cne4K2Xj4lf-M>3Ob+&61_+af|xF6^%tef=YVkI;4v6`&8Vxd3;<~}(+&}DB2 zP(TOJyIS^!9=tA(JzJ`z9F2vDe=49*q5fWg5MU2r7k`@JM{moQp1iBrj_b7}Ac4LT z74gLKW&!(v6BDo2?o2I|1~zKa4pM*jDY`rmwvh$&+@4+?f4H!AGy+$VZQU%Ig2Nbq zon0*T;~G#Za91MU4 znbX}X9SPBBjTkQg3xPZz*wg`3tQP7YskAk8Kl^p;>1;7o-Sn(54YB0&{l(yU;IaBc zG1b5Fk6QZP^L%DzzL>0Td6xeqzD8j-eFm6DM0OfVL^?&}__v~S{l@s`eBY@#lN@|0 u7j7=+L}WljQ2$!aZOyEkQL7XmwE6+G`T_q(Kllx*=|qR88-j|HYXds+NCmk7 delta 810 zcmV+_1J(Sg1*Hd&7zq#t0000>86=O9AwGWt0!c(cR9M69RzFB`Q53)L^BMiI44lLy z%_f(EY-v<+h(>LS2x^fe8j5I$XlV=~D07ISrBcTz6(K7KpnM6{r#!b>nq1utsc+C#rwO{>G#LuG~Lrvsjw`BGMUY0G`6-<$nNH* zK>|2nXD32~0R^<#Jf3K@SadoAf!o_sNuw#383sa<#5TCTq0rqOP3v?30H9Lg%6v%x z2UI9Z(}O>uH){cwR2Y0U#8+CkUjG>IH&g`5@5IfpB*am1^@A?|d&G1a!K!HJ>k&al3bSBavKgV4#1NH*za= zUK_0TOKe$}fL`zSN2A%S(Fg#;a2zuDY(fx1kHxNpR!B)n>-9|w0DzF=I8H#Ji}*Iz z&k#aP=&OPYyY)`|L6A&393vy$-472CG7QfH03pk=EC2v7%x4tzm?+kBoOoYAlo-M< z2vF4O>f~f^@BIAYqTQ}mUtfPKl`Sm*uxxE*IF9F0V6?`L@mhQyLLq@~2$V_)W3jn8 zyIrfDnF)tCHUY$ zYO!o@`~8oPF4y5AC+8ngNI6vFB0m6dornMCJJChV`l3N%`wpFhWcejEC? o(wqmH^FVVRXwC!8d7u(G4>ae2|2_}=1w4<4xH^BXlap@(I?IfKMgRZ+ diff --git a/browser/themes/winstripe/browser/Go-arrow-rtl.png b/browser/themes/winstripe/browser/Go-arrow-rtl.png index 8270048b33b6360d989c3fb90db0535954f0c04f..8218df8ed7b13d7fdc07146dbcba2a401b3a74a4 100644 GIT binary patch delta 305 zcmX@XGLLzJ1SbbG0|SFjILE(<#ya&3IRQQ)uK)l47w(kn|?VmbF&2hMcchOH&U~f-CZ`xI_J9jos)}NFPw?un3An1Ag!=K otid@;Sdzu{3=4yKnwr8_n|A-dpZdACIZLl*wHLlInUBc|0LN^5UjP6A delta 476 zcmV<20VDpN1IPrB7#k1<0000>86=MY000JJOGiWi000000Qp0^e~}?9e*vXQL_t(o z!|j&4s=`1JhODero3x^fO=TnqUCm19|QLrqfg^6oL+Qol-(5&F2w92q9TMpE*CD1wjy=Tj*T?r=Z`DvESclghGT+ zS}a0`!Jui{wrRega)k~%H(Spz*LQezy4&)TB)j-STzksd* zu<&9)qWvDU*@W9jG6YoDL667Fw+4gjJTFhct$29?ZiVLuJU`(10nZP3e!%kso*($S SANT?E$V{`7aW5Z}WC1$G8P{?E diff --git a/browser/themes/winstripe/browser/Go-arrow.png b/browser/themes/winstripe/browser/Go-arrow.png index 9bfbd396c65ba4a25c13647105fe63b6cfbcf664..a94657c6655a1c642ea19fee4b5e5a6b1a7ad3e7 100644 GIT binary patch delta 302 zcmdnRGKYDB1SbbG0|SFjILE(<#ya&3IRQQ)uK)l47w(k86=MY000JJOGiWi000000Qp0^e~}?9e*u?CL_t(o z!|j$&%KDDu7>wkSF8fz|<0lAK8?r4%`F@$V){-h=WMI607L$L`L|nt2Y> zI*`ZThs%C1-`TC%-)HByv-5Q@#u#HiUlXtfk;r%)j}M1luhZ%AND^a=QHqeNA_QTl z10f+0X0yFsAkc2F*Y5&we^@J!NKB`h%=NXPlrc&*je~T%hGCk9k;}abbOKP6$t0P) zzZraygXkbh!#>L_-Ai)|K z#_@>I^Num4gm}FGh#~-)jN1)>%e7cY(qIq{r&4zSn5JR8&k;Hve=+v?L{Sg~p;Gbt zd%a+=P&fxT?E+mVMAx5fz-{s7#$x;`pT7W@%~q@V{Qm&BO!I0BKBIE^!vNO*L6$e0 zbb7hG1OSgd@^5Xo+)E|y^*S#M;k6kr0_^wPD;3Lc6?_rEDp;#=FPC{i>;B_9186q6 zN2A=WH>p diff --git a/browser/themes/winstripe/browser/Info-aero.png b/browser/themes/winstripe/browser/Info-aero.png index 5fb9a90eee9fa353480970dfa7cff25f65a6831e..fcd938a233c71e3922ab1ff19dba82908859e4b8 100644 GIT binary patch delta 613 zcmV-r0-F8$1(pSn83+Ra001a04^xpLCw~DlP)t-s|Ns982nYxW2nYxW2nYxW2nYxW z2xewxprD|(wzlHp;^yb+=;`X}>g($3?BV6<FMd}>g((E`TF|$)H=c*0002iNkliFboX06@$HQ#AktfIU-*(KIPQfJk|>`@wPf zFysse_DA#W_r=LuoUM`?lb>8}2IR!M&AjmBoZPlXzFQk8E?!iaMzEhw@Z4cv6FaGD z6KhZLlv1)G3P7&^Bp^W50a9#Z^U-n*9F)ONM-#QG7oQx0x!9OG@ay%exN{2nae>00000NkvXXu0mjfy$UX6 delta 714 zcmV;*0yX`X1^NY$83+ad001BJ|6!3KCw~H*NklVC9YD2 zif!hP{a$lBJNl7&=4l)~ArE$DYwoJB|N`Ixo zh5pJvu+!u5Ty&lez{Q4*QmVWgc1=;EZ;>+L(;($+HZ zIa@XPZUw>Rn7FI8m!idGLu*~}+T_dU6W!h2LnQLnjDTNe_;6#p``U0&-HN3VPh~MP z+yq5Y(9koDg_Rh_C-+nh_Fi&(y?=s`6Wp%jE=atM4`fzhGL-8M=VSV%6DNFlzJ6u-@0tHol~DLpBlhpZHt zckH#!eLh;V7tzQDqMHoMuolU?0t6_E3Rza6$O?`*?P4~VWdSiHmzy-CGusq}OpXe2 zx&?N-O_&MOYN7RN+d(kHEPo3u@`Sl+l(4JbVF<{$-+RQ2p!Il}A)>(5=z#Np9%hDF zF^R??-EO_$cHbBYsvkbCqFCKVG?5hoW#t-mH;;z;eHifU|NYwUdq&fEM+_1>@PApigX07*qoM6N<$g3fkhK>z>% diff --git a/browser/themes/winstripe/browser/Search-glass-aero.png b/browser/themes/winstripe/browser/Search-glass-aero.png index 8e3dadc8fc039297faaf264e16353b1cbe3a55cc..1939432b3a29b953270eb3b19eacba2ab3f8f18b 100644 GIT binary patch delta 715 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 G0s}hg?_H|^ diff --git a/browser/themes/winstripe/browser/Search-glass-rtl.png b/browser/themes/winstripe/browser/Search-glass-rtl.png index fb6357ef9753122b44e6a292a6ff347e2406bf2e..2b754194e44d8bcea249597a723acd26f7dfb2fe 100644 GIT binary patch delta 575 zcmV-F0>J&o391E<7zqdi0001yIf)yQGc11r3s6i{MgRZ*e1oojhp>m0yNQ{;08X0< zSD*jcr~plw08W?yO_+U!uZWkue1ookiL!;0xrv#+PHTx!Y>Rw@u7QiRgpjw1nZA96 zuYQNHhn2gCm%V(0u7ZxXiJ87^YI}KWa(r!fYHE9MZGCrZa{vGUQEi7-a*b_=pM8IA za(-@dlWt>_wB4Ax;+VhMnZewd!tI;J@SMfpq16AO*#4x}|E1dRrrYqQ-0-K_|EbjR zsoVdm*7K{~|E=r$ux?ba&)~Ar;hr;s1aC>G%KZ|Nr&<|Nj5~|F2B{*{J2|#=`&r03>u$ zPE!CpJUl!=N=;HzRa{(-j*gC;q|ngN(AU@3*ZKMR{QUg>{{FB7Qe*%C00Cl4M?@sF z2Kku)006~FL_t(IPo>D$mcdXMhT%^c3=_SJzVtEJ7z81rixyGt|4QaymIHr>`}dwb zF94GeNCX5Ep7GihsdvZSdc;MvIoe>XeZ20YW|HBqNh7JlE~g(i$p{YAxvKQp@i#~^ z#HDu7HcF>G7D+~Ep&PoUN~{+m8J>x8GY<0+Yk5e9CAKqkO_iEOKgqyXe7af>zYC?x z!%i_^^@fvSudlql{~umIOIIh)FNfFo$jUE=*T839KHnd71J0~G%e`U1k;>S3{ReW( NY<;C<6=Rc(1UheJK^*`9 delta 1119 zcmV-l1fct>1;z=G7#k1<0002?ccp3o000JJOGiWi000000Qp0^e~}?9e*_~*L_t(& z-tCxAXcJo)#m~JnsY#QDm`vK3G&NL_WNei#6e&Sz5f`FC3&o8)1wq`otAD9~(M7?9 zU=}XKO_fGl5sH-BMOzmoN()VzN=r?RHEK;#6K!H9U z|16&<0XTpD>ea`Oj~->0&zy0&nwz(7^?IwSTrRsE(CgQ)H<^ItN|L141BF69PYBS|P#lU zY&IGJK&PV=0KR`Ol>i`{Wl2;dNlQxr5Dq620AMoNY(^uXf6Ob_fW}vsPbsC8kZ2V6 z_AQqKY&HgVIM@wJZ!)nZ$zWhrr(;P3ibX6R0%ld|l|=G9$0^4DIq2)xWHOaf5~%#1{8}1cUH)I+0HIJcIy(CL_0&{6{{DR? z11v5ogIQIUf1+ZM?K!0q>kEaYrA!8R_N=ET6avP^VzG&d>gv@Q(D-Wcxq*SFPw(A} z$45rO;kmg?W_EUJYGFYX^ZAMjo)?7WWlA{?C=_Iw=Ydb378Y_jAeD;8lS!bzzo+N! zUBKydIP7-7Y1yKbwJa%mVev>H@0e0=$xs&GsKophZ4ImHzwrn|a z2DKP z=-RdUe|ev8@7`#%SadjKd3-#XbU1*yxkx0P27pN9=K*D3A22=L-F@(&##fiWW&x1p z-rnQKhlXz7e*4z#Zf}3_LXtLaEXRn(SChYHTfj;Y5(wP6)82maq}x3|-`%}$AJ4~P zgz&t@BFn(QKq@7QvfR~m>sDtcU9%u+{MGUKHMIsSlI6a>6DJ-%BqR_B1|^A7w;Ooy lz+y?IibWt8{P3Z^J`m{Y()eofe*iI80Tx}H{jHO50y=>GAq4;c diff --git a/browser/themes/winstripe/browser/Search-glass.png b/browser/themes/winstripe/browser/Search-glass.png index 5363d166eddc3c795f938b6023a3fa1c436d60d0..ae40b6fb8db56aef1c1ac746b9670a1aa30f7e27 100644 GIT binary patch delta 600 zcmV-e0;m0s3Bv`D7zqdi0001yIf)yQGc11r5l~E2MNw^s|JkVj|Nnf0u6~EGhn2gD znZ5u{n+jK-|JkSjO_=~rm;gm0yNH*)e1oonj<$)JzHDlHd24cfZFg#FdvI-icWZM1002>KhgN@b zjctdYeQk1nZgP`uW0bVrn7ZPazuK9>+?m4do5t{*#owXS|Do9aq}KnX+V7^@@TT1G zr`i9h)bXj?|EkvWtKI*t>-(^7RItzBveDwQGHtx{lV(-E$B|J3vT*Y{{BY-Irsno z00Cl4M?@xC2$;11007oWL_t(IPnFKWP69CyfZ^%1w1ciE6XH=Gf(PNXxp{x(peC#a zHWCuqrQ5R3$l8eUICJVZll-Ye_!(1q>T@dqO1t9QYDU!eP1|W*0(iHeT+8HP7g^~N zsAiTo7?AHzpGud2CwcKxG$LN>5};7ylq|9(txF(f31~fXN?Mmd&IS!4ULIOs0s_W% zH!RE$*R9s$4`}(s-C!o?v_3$7Y3)YK{P{zgka9bK)(*l_@@qW6?et#&Xa|7itY6(uf8MSg_(Q<6*L)#+pJxyO*8I!xMJqH?w(|*@ZC1 z7-OirUA=ny_M=A!4)APne~?Fyhex-YM^WT)YKq4|;MT1xR|W=NzN}x={LS!5y#;XX z+MPR(AD=nHv&)wqj^5tAdtI)U7KdZ|cA&Yrwbfz)R#%soS5|-@KT@gh-+@$WW+oDe zMtQ%Hk()O!T{?bzY^>geYkp(>nhW6i^?Ub%L8amzJUDT}>pgtff92Y)Io0^;#f zi7_A?PNn!Yl0-u7UMLeed-leS;o)P)HvUCu{^t0!*2*J*^>|uZcJ6F%2V_~60pQuQL;?Vsn)G@AFq_S005BRktkVes zuSb48;B>aP1DT8{QmUL;ny;2$a{&+{2$Z_r27}dVHdnVAL7;RkY_(dg0AR833F!6w z``^DS6`t$$77GxI@$ocYUBBidfKo~c5yfA>^7&$s*AyXqe?XvGaSFU`8;9+7-e1Xq zpFfMm>Uf&3u3yJ9fFMvhHB~C5)62_$PYkGTHA=;qObX1SlILT z7RJZdM&91MiN)T%v)LvmCnf>`pj<8#@_C?A;aiJx#wc4&sl@wbGCY3%{Pk--4~XK- z%!d!rC_mEze*w)`*B5*~pU>x8JAq6l5>Y<)_wzg!6UDi?SZx1(LFnjkI)QL_c6NFi za5!wXt}b3tf&l3CMx#y#fAKKYf~?&*gx*xni-q8<3<* z1(4-naCCHN$m>PJn&zwF(~aP_Z_{bJ9S}uHvfCNEdpDVMyZidKYT=r{xjx+po}HED zt}e#>fBr9DIy+CEWGoo;dZ(uwcLOwEO<#BM;^=53!dPElYpcOPh$Q85b~`XRDM{Vk zjQRb^WM}8;(~N~e=g&_}GeDIa$`}0KY$(+_me} jseu8fGn-xSb)_*)^VRkL0Li?0840+H39ZUfnxPQCe@6noeW#pVlDyrJ9VE4! z-|mwCUE+h*!v7w+If$D7pML`mL!MmU9s-SJBtF00-#+(Z&Hexwx(cb!qN*N?$E}E( ziT$%Y5d~!N@!J`5AEbW}c_X0CN~!QA#B4VC$u+u`*P8gq>!$qGF!Qq#ce%XjfoZBe(<_>b=?@fosLXC*zW%* z=_LOu+4lHMHCRX2{Iv4XU*&6&M_4sqv1$olu|{^=>Zo?@s>(=HhOfG3V{@~NxXbZ; zRUWNER>WP5Yk&JVja-_G=VnishUaU8;A_FFNc=+bGmzv2r3oeOmXcJ&Q^8oT>4mxS z6@&!>@o&?Og?fcwPLgq~Yrd<}eR+Wx4njr3gEGLxqRFDj;!QR_{r0__-PS{QqBEjf z#TpgD<|8TW98TMkggiDWpo|7J5_9{wER{LwJ*kqs(Z-!AmmcHaBBpKg0^?ZCFP!;K z*}s+B=1i+j*rjZm6cU_PXiVqp=PC?_<7tuO&bPw^r2s#CMIPFjToOAzlcJ&N4q*&@F_t!OkxH|asupO^pb9X9o z?SA7N`DIJ;b+p~~$qt|EC5si{2{{eaCpaj-Sb;T33-o^_d#T%RXKq(zec&ZKSoE*# zkB?lc82$s1IFntc;?Fwk4R zUHb=|DEjpC3Hr)G(eWYs-FCh2-09;UD^OB$-#6@gL|jpdX4rQxCd%8>;of15os`0c z(xsLimT3+JAjFVFQn2Ei%!sq6x$z5!USIwakGvqOL0f`EG?~=r&)fc4bT$GE)xx)y0K zW>y1gsrUQ6!yi0fpoxMqKJ;^T!2>ht4cpMjbnNTx)X%*_cvRz{VHUmeK(P{a+Ybt> z2KdGt&;9LAyT^+KwmS66BUWG47acZxkUg&t^V6QLH6oFavV^<~_SZXu!rs>U4BEEU z=GYAsJ`r&FPRebS03sLGU2L!?U(0i(T6?7+z@&Qa7ZqK5kvIll0vkzC)7f@vZRVZS z#umowwG2YS*USCT3dxo| z0Y4KWDqe!ilS&826|#30@CaJ?vkhWh$C77pbHl?WQig`>^s&% zMlQ_>1}ipQ&b!byqY?8Agui30hDS=Fr2;!pKAAOLwId*5>$fD(j^j|jEQB+`1xhCt zmldn!&X)N5-1oNM={9Qq4n!m3iiyh~W*(3xt|SFuCKb{6KdVs*Q8ap87aQtI<8#4~ zV^}I(MGuy>dvg~243<4s7ENMFp&m|Vj$f!T9}Yx7#l7&G>g9{>(cy2ypJ{sO4ce81j_VtD3zy^J4fZK_ zh~h)+(TWRAMKW%qH-eDUgw%7HoC% zer0d~<)b1sT??kvSXTsv0;7fKonMgHWNMOi6STrvhep1<91iW(P6cM~d-!8!l@cEf zG!;8flwV3kiuK~Z_iOCtvE2%}|SkbX}k6&=^vDFz92sAWC&BX~Fy28$NK zA{@ZL+RAj?y8XIamFCjLYn5~ywUD8t0>^|ghsi3LssluKtcZ_`=OQMuhSiEV{)j$5 zD3^ZzQ=mndD*;1fK-0zs06fn~PN3xFFu?|rr2O4c2sP%Yzh|vB9mEa@q0}=bDljA4 zMTq|8ADp;_A@USM<$V)96nL1X+$-%H;=W(IYJW#yzwqa*fW#FeafY~J=<3g&*VVtC}W%_F^;!_@S(s7ZWm* z)kXh0H#Lr-XkP_FMf?P0v)sW!RX^#17-lnBEtTB_p?-j;qihN>BZ(M^j3sQKyx#5Y z*}`jzY`T9ZlU$~|KFuf}l}SMs?z@i)t~;D-=`t98zqX!5J>oPaX1UPNGn!CZAA$X>7Ss)cq`#SKO{+C-T23Enuzt?m-U0~gV zV;$6MX?{G%>JUvK;oD$IueU>Jy2cX$z~vTD%-nR+0bu0e#X`{&MT3BY1Ci#Y6GR4t zm0c2Etk*H+sL@i*e4%;wSH4pYP?q1Ee(8S+T9t}H2DFJVKn9TZZ!S1^cy&^7^EYr2 z_GOri&fRgmG70l~(tMx$9tP!od>z7Z`s3{xoMEuEg~bEJaOGjt>HRw2e(;4=9=Q9u z(T)7B%fVjyPMqwm@~jX9pT~%5VWjLM79n$SNOB$FpDkds+7k-Lv3CZi_plL}!Lqu6 zf>B|~1O4-TVG*(C5|h|BY|XXl+A|lN-nHN&G8sC(3p(O zE~Tn7MSpW7&6?Q==p@!zYP5V#wI2 zeK$S;4pF*9y=;oQz*6tp{9q|32Z$tX_Qm9qC4q3Y(vuE)(Vwk4_O>QjtnE*Q`2lUU zHmgpKb1XtP`lJHL{v|26>ZR@Pam*jWmQ+Ou1@3Djx*lV3~yBp;a^31DgjoDK;yK^<8T~@do zyN_yNG(*7j`N-CT{=rhQ031+JVQ(v|k360&63TF+hH}l3?acfjsoT;NUZe1iaDPb& zm|@9?aAPKub%jKNgo1>G1Zrt*H84i~`5T$S0kvaDgy3;v$^9g5TJs{*!mbVUJxh4BDs5SrYoA~EXK@KQ7C^|dKz2SEz=QMN++!m>TAI`NiJnj>tYf`)MC+Kf8GSj)vGELPl}U`T!Z*}RkMxl| z><-YkIrz6>?I&?&bGhqm10(4JO#B~i8rMhvCn|}828@&>&y-|A4i)^Po+jUc`s%a! zP_O%{=!Lms=Nln2u$CeX@cy1oD?cf_A+Ai+k2Z0H-a85=3Lz>Cod!zf2y$d{l+A~Q zXI?zETQ0ctBScOxlBQDp{d3E=$8lfDa?QTNX2oBRP}g?h9aClo`as9zDMO^C@VPA6 zddtWDWY58%mVx*dE#Rh4{frpD|-!~}DaefzndI`oW(WzvV|mxH?ww;_T~NBMY?dAcq#(?8sBOq zoD?vDl8)DTH-d_m3l_Gx3mLZHp;46cJQfRd6{AnaoOfTvpuA;4N$-8TD{AUiv|Bg-)7g{zZ?05ik{Vbm5@Av+!gB>4S@`XWp|WykZ_ z%Hs##?ecHS7|D+l1j~qYjl>s{b|T+nd_&P06&(l<7wd>W2B%~RJM{gqWjw~r0A3~g zMOC_M`YJ!L-o~xU$V+NK0^FR@hyIf8y*6b6YO9kY3QDt0ros5f%LmW>@;b998Pj7>Kema^yhYb%mmY4TIP2bqqnBhh6 zOD7a3i^h}?GoiZLQoY%Y^kC{wE|qVFhb?PMyioQ1L`sxGz7%WT(npKean=Dwc1WWPQQJ&?cN z{W^Td*EW)>w8oA$%@Lg?0c~w#+VY+ab~RoRRuxzzeB+>+_1xZq3PtRFg0h20RLjzs7ri>xIyb>ijqm z_}~&jV9FIlvN-%!x8c5(xxW}G;y$O_E}Fn7sC?o(!FWX8Gr4w7jLWpG!D>yK;jg5! zm(}H^&O{|1GTa*&ZJBp^?diX;vU73bc4J3;IbngrE)gh~BLXD8cg<~cUvke#D~5}h zqd%RO;n9(Q50TJ)W|}PI%pU;+o_Xoj!G&ds+jtcXTnSAV^dEHvqt>;j=q zT~Z1Me&uU`5Us3``g3+|_ zM74vX1(AmjTHKZzTXXxxGu9a#J7Oo}oDt)D<5@#e5j85bzJIwP+PSw^N-?mQbeM{& zzyRHJJgnq`;C$a}!Bpn0I(6Wy*#`_cxEQQ2z2=|}tG`7TRI06b?c<3@5;DW&On5sl zoz-UPk(Z0NymUwP`tfUiBCJ&GSfD` zQ3z^GM}S8y^?a<1(=0+c0C^(`O^yE!##> zABRmBN`vVAXA@oJ&$c^q8#QuKnsgPO%5S+R_mczW4C1cN-d>&4@%>MqihLuZhp@)( zCvS{ML$HAOKyGmNi0nK)9ToW8cMdENvv1k+z~&j!YJ~l-R~3l*{|E<*Zn(+Y=mzwy z?~~K!ezZzV`@qQ(p$7bR@Ag$=2|gIzTxJ#|i$YLjgM12Tr!CC-u*&s$6ovuf- z&)rB!JgYrJ*@ehOr0d%XY#k?%^m(#I{GqVda+iZ0x_;m1ZP^Jm1RxSh;90;Y@}fsl z@7qBd0-^^v&6vVAQlTc-_MA6kT&rMHM^g=!DH+oiP$)(jQ$@ zR&6Wr0-P;P?3KYE9!cdiTb_5^JlteJM@OHkwZ!4`?jr{uWY}o7f0->?;+n(7BUM=OqA?&eKHtA1y8^9nvr29RGp~iYpeYRDk=^&m0Ba0RA(=$m-74;D`c5!F_Rfg zuTae0K7mXBA!M~Qhee{MYdRFVbx3$9u9(x_1}1NJA}r>Uw)^mjTZ(Bj zh&M|%^MN!`UFb$C^JZy#TrOackp?^4x?zQ3wAly~rqu<=KeF4x8FAds0Xj)FdqTf0OVv}ayQ)tR ziLUaInx&2DhwK)|=~ zpvC8louR$Z{*B%rfLzD@(Z`+5$R#J_aXlEMp5Yr4JO;WA$8{&;Qq22ru+*c> zN+QhR8JBRu0oe>^%-g0wn3%ZsLLX*K-Fv$GpLHoZ#;*mO4z#~Ny*!>(J50X6_dV53 z1r~Cjn-q$<+M3;#KW}cG(Dp}r4lQyM2g$;8TDu;P zf95>@iv-*>!6R6w$0TBRinH_X)aOU!R=kx>#-i{r%Ybk(!$*rN`@xefxgX0bMbZ1) zg=2y&bby2~uz=JCKct~W`QNI)<5Y_@vDy%&Ntq3*pfkI2=~6W`k@;w*vyEEA@o2;i zBpNg2yH!oD#FA>wM2=siwep>Es?osb^oMu26dj1*5kwu>7X5FdgO3k%6Mz6wMnzn0 z7zm67FarPtaxs)fAl7L1F-~*T<_4z;Hp=C!bp>bwut7^a6}=vllLa|c2hER_zFh~u{>yAbI$*hV;Io)3eIL# z|5}jzUki3QPGC$b=#LJcVctO>$KHKWcr(_-n*&Gg$SmR;B-TsL1Ss2MSwe-g?UrdK zrZmwWF7Y#6fN{Oj?TeDQYP}}7H|aTBP^VOp$sw)&F*5cERsKm4`Om|4oMJX00msTW12Qo4p_V5E0gr7(a^jo{>a#k7ebL72pskQn8sG;u4A& z1x9?sA*P+@bU9j;(}uzP`&&mtI*Eav)BK4gbb_^HwoJ5*+B8G&(yM=Pxl%6XZuTpH z(XdV~Cm?_Tj$l18-eqn$GH*N*|1fKvQVeXE0nw+mj30B(w>9A#DPiqTXa@o{<-Y=8 z1bM9%18nkTmNLq<^Q#l+&4c_ZlMW|v=NA^}BSlBG>+(cbyc!o}t`E8Om(+`VY8w;f zw44QDSg2u8VFF>F6Vn23ua$D%hS}jAgy4?f?44lB1B~2Gbv7oSY>q2GAeZOFR|+kY z-1;z&MJjeJnOqyyECPV2#|VxJI0hD%myZvx3#+P&`bTo*-y-p{s>CDim4^-lonoA? zS+SjpoVWd^Q^SOAT8fkn2Y!laZi}?nI%l!ka&D5>4>~;seMIzHW`9OrF9RJP2f(Nr z4>H00NBMT)dWte0XwXe*U`DrR8?9NzELdOlP#v^c+Sb(G*{`>h-|80>y$IG#En5$x9*+U z#t_G~Z%)x?i;J;a1u&2Epvpf}*%rs!~V-wVCvSa$f?s*;oq+90{tl-xlZ} zI+}!-9X&!!!cCY6G3V8n&Y8S>SB!raLIn)*YDGiFu2uFbxi@QquThxLX5Wvx<*g)g zWXE=J-eZK^?oJi8Y>VozTh=rE6`lE#%-S5_UjQQ-VE4l6Tqi*5wb}e;AN%OBwoF|% z`rM|{Q`}AMyA%a0p@PSMtVGPQh!>kIYfE;DxT}!=IaI@s}dG;apOw9j__H0FHh zdPot<=u;v;8*G!mix7*d7)3wCw56w{c1-NL7AM zIbUTG+MyK7?+S2GRDgqrnJX_DTpkutRJUKDv~D=V_P0QS-9R|w=m4|Tqah*5XI}O* zJSA~3fK+r)*_{X$L%aJ|cJS*l2DXs>xa43&w}98C@J|?Ar5YNCb9Ko{oHxI10}bcV z@(_R-$z=G}7C>pfkwk1EbH-5sjOb)i&=rK@F=FA;4=Q*-+u3k7cpbyW=QAQ!AeT;4 zvtHC^+me3%ElBK4c&f@o!Uls2$J^VR`@qpmw_aCkF#RK|4eeCdfCCp5S{JXX!ereLZ$^GwF1BC}bC?GoAs}%YRA^+2m=2pN6!yJ(ga62$K&;B`Z z>erOQnOX=R7+k1;k~3K}QH1A(^7!2Y62NOEitGV!OW755@o9qOylI44YMG>m-?FJ3 zNoGR{b=!6F-6EORf7gJo%eP@V^H^($d>vv73VB)1pR+Mumd4B7f*Jx^J zQ3emQ28kp)TlrXAJx*OJmrkM38#uTAwP=*vG17;l<1O}xyTv3Z9u3J((T;48$qX6J zM7yT5UZ~ya`=V-%5zO6^rCI3LUA41p-)^&N%|^6WCzma>x$dQ@+wbw4tKgo?YQ-~~ z%j!WwLrvb2lyE5I_xsVf{s zg6GCQ<>~|0dHIjsat$Ea0|QY?g@d^q*!_1CB2&`o%>kkNmiwE;*w>q`1>Y^@E{^~K zsL{PEkXZ7tkgr@J(_>ROOqe9g-yEmWCS3FW1maEfLI9ly@Z1;EgjoIn_v87n=ZkA; zoen&lzbz)U%y6tvmCwkm-w*{`wvX$GonW*fkaS9H_@w~r%6E+c%&_Cr=6QO_S(^ca zxB8zG1S6sn2Q)K+qkZ4U^5XcrKlaTdQ_k2I?vM zcez>KERCt2MpS(3m0F_L`O6b91-eS1>TMcV{HF@F8xLVR`*rHi2v1IZQC2(TyDXI} zpQ?@(4q&bC>Q9zrw)!ITjkd(k$JZqH1ES*%P8RE`4$H#SDl!u)6!m}LGyZUQ?VYSAXDQAo9RGVW z5xQAXxZkK5UNo=iYEbP$SV6tdXdi(?yab)+pu>mHhMQUI-5AT@bKXX7s52bSX?H^1 z@b$&DfEXIaH)sd=p`kLcO*HGnSfYc^+ssnz2nDBMxPsKze;Wy?TAE}PyNB`mS+H$J z$hZ&Zd>u`rW>77%(5f>2B4abEsovA-8|2Dp&Akw|wP4OBx`9ie9w?L%#rRl^uSojQ zqFKX=dx>7{$Tq2ZMqMfvD#IR-A!k&=?LDX^OXvSxZ3j=e3LoTnWZ%1b#bP->mg9E{ z&==~gA!nM``%RtVs(vUcG+M2NsQgSbjL6juzx_>0LgBe8bfs-gRIB~c3MJQ3_~TKV zO4F6d_i0lyO*QZQAsMUblN>IKdcOdxnyS(tef9CGBKvJdPLF@o%d}?;wtk%5$?dQo zhzTj25WfvNb`N`+s>ezNmJG{nZ8(?g(vp39+NOrg$g5cw3XgSe*dNn;$Jz=(bf`n$ zs((h%F%HSHiVY=H=SR?64`o#E{qGp_AM@NuncOZs6N{=c1uK>wABq|92*dHZJ~P*$ z0l8Y==eBP>dnk&Z2W+uw&N$moNY5VG9zERK4^VO^7p|^B}QPRgD)i?b| z^YpL7^w==r*d{hyj9E%kxEUtKZmFeSquz8Yr+9FyIWTm`%1xQ;kn8@(Z>68XVf8su zk6{|01YX^)H?AUo!ec~EIYnnQ->^>>+4mr+60tAnjev2gP7BlHef8UXKk0i<#IOf=$@nHlQz19>mX>ln(X+8*TbGG z?;|KqRHX-H2>UCM3HKFqlQBNgDo_J8$b^<*(RvcskA6p>oD{3Zk?9G@To2*pS?xfT z-$jKU_uF6#c)S;MXJkO2K#KIERMSnS9|b#F0Driq(|>7_S4o3`4SYYUcLiCmfs+ta z7|m)1dtDz=Kca7Ke~QjhhEu<+JGPcN;dcdn%XO_gnoZ(wY^bnht@}w0aV=LZ*VQU5 zE$cx!bh0PspCzJaq0%$kc*-YRfBpkRTD8L=xPh8Pdf$&$b?4q(vT|dFu7BmA$SVUO zA2Cr;dHv9FF-XN-Gob0?9h#>@B)q9iZ~W$_SmLb$#=IS=Y%=Fdb6Xd?PyoV3n=p~} z_Gt-vJq`S_etm(f`f~pDs?iaOSpUPuhQW?eyJbXVZ3b@bEfhjcR>+40d!=DV+VbC6 z1`{+<0ip82x?&H6A>+0|$%cF2xSA`y6P+N&qiJCSa9JUM`lYsJ631DQ*eZ*CY-=AI zv#~MrI2dZ{m<=%3r>D^K^!&@3FH|q(5fiBY;K-Zsfi@4JDcXcQR_z$#76SPwG)PBQ zjQKGqM|JmU?}uL~zu2C;D_fS$&)dfQxY5be4zg8lzGtyqUacHDo;pj> zHsg=Hic^{o-xWwIo5^)+T|1iV@9BkJ|3wvdBxUF0IjzPa>dwK9C&(stS){Qgy^(g` zGhryRe5n`0=yvd_Y0j)75s1Gzs#p|KZ=#lcj5?E@PSwBe;n1r8b5mJf%6Vj0E@#8I zWK%A5Om&l}&hi-JJ1A_nR{dt>`Skz4Iy0hLhEirAiKC#D-g&4kR>_Y9hbjAi$!Gcv z+&}cAQ?%;+>;LgKFObIbotZHZ}co z*_WUVUxw9z?v}5fznGGK551WT(0?XFT0go8wgjHtNqmt3`z0U$%Z^~&AN!H`$*OLI zrB4`pcH8tsT0A!ilQQ;cWCBl%9&10=Qp9D}Jc?ea&L9NE3nDx__F9)Qq>^A~8fFoy zjdA@#iogIZT01(1GcS&r+m|4X-!0-~gF3)-LQGs@VsnQAoEODEn~~qY%N95s?}$)z z7O^r#Twy{2Zr~g^eHc~C^_mgVgA8Ta0xD@6-zQh-hPriNoJNnEsJU(@xg9$UmkU)} zzlxTg&;1~uvhBE}&U9Nxucs`+LkcbnV68{vcRfSv{~Ul#diyz3)&t(Q^YHp;=R*`% zlecFfznkV@eQB-jf-J*gLM#eT{?42dv16@6>tDhKc0#0)`P0GGVa3h zm}wADaAUGBx3M&tW!^ArC*8g+N%xOa_+wbS(|HH`Li1kCNP06}2u>^zsff_y*Ak6~ z&GNAQnSo9d;q7JSS#A7JjHaRe0euePf(qFva!5(8*Y0D0`x2#|Ox>$J3X-v7R%U$o z6xa|t3Fr@9SNIVY*5E-xY=U*cJN4@}rxQn4A`$|Z7`(}4!M2R6v%;#~^^ocN953GC zUBLH?R6^Ysm#vi#oMVab06^j;=mb2YbFsX3dnX$;1z+|cO>l@2+D`thuXsiU{5B(1 zw53w3S#xO@O>gBOC^qb;6eL17IntM?3~ezu1lx`b=Gk0xDS>uf+Zqus zsMn|3ejFVaHa3`HpAGgMXfw^OwqNK!w!Yze%;LylqWd2n`kzrDOFum={V$+5&fZbg z!QNTb$=+4f#ok>l_Zag}1#Z(m`H z@}R`(*t;h>{);k`_si)r-7N?FG+tM~^wMMBk?)kdf8wex#h{9DguzHYY1;GLxrsmc zuzE?_elX2pFF9YcxC;o#qG7pCd{i(f%s~+cR~`;=R=Gl@uU95rgBQqg-7zYx-_o7k z7-L=wjgH~5^+t8=q>RscijQZV>VQZD48vZ3q*VY0<6_-Wj8}unqp$_O+i-#0lG#>> zUgKuU{$gacU$;6*I=`Qovuv&L=wgh?s&F;YTd>6KB!r#P2JsVs&LQKRrWVfK2uy%a z$c&Y8_nVN{{UR=-6_Y~AL%t(=FQ8jObs`tDM_aSq(wU+EGtVq_zLJnPy}6q1P!a>n z3}!Y&0@eJ4Kb$$x!}6nTbHZr@Qd&U16BC81TLubGV8DTL(IqbZgk$v-hz>mAl0$~+ z^CgIfU;iQIbJqHEBoGNy($lEweQ!CL*9c>UkiEbhv=0wQp-6=E1hyaw#ONe{T)}6b z0DTt!q6Kmy{^$)yA~~A!kz9f+*KF=0*HO)ChUGl_YArh{8aDDycGDeuIvoxk$fl@B za)=+3<+=}{Yln)@&)*LfXhq zgOGq6u<$rEvUF2LN+vRqL_rKQ^C_CYhQ1Q~@RT7h1@IxybVvIJFY4rL2D?I?2Ss)a z5Z(>UTk2Pmdu7Px(s&P;uPMZiJIlwDtc@m;{J|ecP72>CA;%wXzhp@~Lt&0@QD@Be z=)G2k!NK-)I}OjZ;e8mbF7;obVQQ`_mY^DbKx^9mt?kSyA4Dqsh4~_VrW94Zxr|3< zr_b7m)Sohck~hn`Zk1+qV{w(sKKwM)g7>ARs%liFK=vnv3f7vnB@ly1cd_>DPX4Io z%EQ9)&9mky!+1-frdh)+_3>1f+0^`LGbFF7m^V**nopMY6AWCNqZ7IM|MylN({*+J zKa|TdftUmc^6~JBYvT7u(1<*z{5SdhgUa;G;6A9fDx!cC+ftHUP@sk!XYQHt#JktF zo#rAY{=N&lLSzhC<^Pe$8s!}Mw)f2C`7g1U=*qL##OprV{j0D`F3Q@FBLB!Z5Y~rN zE<5&U6R%lpZo%zJe!$lMbM>b;&#*6M;9!waR?|uOQ#MULg&j_U`!yCZBtUBTS=sk& zt7Z8ZV<^T(l8y-++buUF4=>8k5Ry^!}#N7dF)=Y(C+D>9NB z*xG?uJ5Mugy{r3xBmuHvAeeXQup||y~Ts@2fU_9pwu?akWn2<(hzja68^+| zi{3+Hz2^9Yq9vs?*W*0szGn=rhkqdqtaBmq9m#O3Q)Z&b%wR@DztAZa71_-M%`PYs zga?tPQGa1oO-17Sj7MsZ!an?#hJ}DKL_wRr3vBj zLTjP!a8enQPJlKMviM9`_G_cAQ?e%gtXujA^9{4O=cQmM*8Z0Ly8+s@vE*py(WH%d z`8>A2WC42$?5RE>QahLS?0wDT1cbyBoW`DK#qxn>g%h>hDIMzK1lzEsqWkE8I-_8WfER*=rJ3vHh z%-OeDj@Cu^sQqlYs;1a-?Ltr8qf$00vzWP*>d>kl%_7~3YH5fk{Q&g_>rq-m{{8>P zPiTkHeP6?r{zZAk26*8t^K`NqUJK25Bo9!mPu;kZa_bDz zCp=GbyvMm5a@5EFK|{6(GnqEuztNx7KWO+h_H`+cr?|d)G+$-U{0$pwn<_CDl8>iH zu6#Kfe~nNG)NllsCXS2(n5ab}@S+HlRwj9qYHyq)@&WJ$ua$J>W6CABI;@SH}QG6rqkCs^8ir7iLdU^6>r?3 zcZFa0=nI&X*MrFz?(ZW!ED8u7*zItRZv%HaFiL!z!=BR$&RcGmV8f&`!Z3Dtod+P< zg?7)Mx9NUaT!$cTlC^8wXyYXqBMc8^wIT+$$aRyO9Iam|DX{WIk?+@i2Q*rp@PFIt zVefTDvVza;Y6c*_@SYaI1YFP48HnY z2+}Uv6*!z~v7LM^)0CIRMez7cX$k+~}z7(p0|8m)zJ~ zaj})hPkm?p4B_&WpSFEtQKPd5Tx4P6lbJCKrOv;w8KpI{EK_xFu*be-ddA^4(i-A# zn`HqRd5Ei)tiI(9lGBT8xR{F6nF~VJDldd5mdz1_HBOyB5*?g4+_e52&J5d&cu+jN z2Prm#2+oiEO+LvEO9Y71)7WADqfJ65f4;=LG7}V8epds(?b<_<;aC0Gqoj-@-yN`v z9HUQ#n3{vUT+S>9y^o+J^3T)2C1taE2u}b{H{OTS;f>5u9=MA(E*iQcH4cmViXW{% z-zHGf6{2Lan)ST1dI1t0QUYk>JWFd(3WM|U5a^3#v!14#yNNHu;4~R8s_AHdSLWU1w~s?l2hY$n zJmPH37TtXc6>_hC2K4J>5mo)$y@mdZednHjUHVpE%%dT_LiTU_KKe*4a%ILtEvB+y z`*8qLo%41sOjt!dCRI!8Q=jx~0rcb07@K%KQa@<;)aV$o%z(E~832n1*nC8AMX3|S zT!dQGx&#eB-%_4qldj$F_VZWSm6`zi(VS@nz15y?TE78PdHHg{FmGq`v}plT6S&*R z;U2SgolWVXj}Zdo>UBZhK7NmI|L2U@7Eh;n>N5<%^CSBo!t8{=As9>x!yMTLvEOaC z$IWbI%y6%fm6S*=E@*{F0QkVOb&m~S3xq~9h_5dM5<36hdD0ot@Y6WuVXIjHtAZ$Sb{sA zEp0{ksW^7*S>#aAI>F}2=)PXbAmmo-4Z*Ln;m+SB*nPUb^}d$jIcW={a6x(Ecsx0M zi!b-_nB3aX91`M)<~4t`fu66!PPG(vhX!Ej2$B<9co~*|*&9g6M3RWA@4V`!)?hzX z&u?hDsgbOdyAep#M!(F+TyJH=8Y005f22hEn47D3+`h*jU(r~r=FK}%QD^`MD=)uS^~ zGl{NWS0;fqwqogMzS$hCZ=Pp<;;68xL2=thMgi8K|0M1K1>+D?Fo;rRNPSQUv$v^IzEp?i^*irx z^YQKNti;-adnW?gN9dIbc<+n2m7z~^e+rFEi^LfJ`)}P&)>!?h@H~mL`>*~v4(|=`t%zW{`h_Fm8oDJN=E~vb z;e@{Bev|ll;~p9+M8N`=0-Ovm3c;yvU{9N{d44T9tD}sb-aW zON#>QM~wo<#}3=kkVwiHT{uW->ugLkfrg%dXkcM{(DKwb%4ldamFDX6-Y&m zgjUy-Ljxb)DssjLsdNVZr&wtQVv}YQ$fe%J&8@1o{5-VA>`N&T@kXP^iVAN58m(QV zgKYD`7m_`64w5;$Xp_ZEyRa{N>AX$8$Y&d6r{mW2wCsX9wV&G18{JwXYa7t+Q?h*q zqJ0M27d)$azI9dWDI%Kx%{Tllg75pqfPIuTKksWmNYhM+35l#W7t!9#FMOJMuOfRD zf3Y_kTKoaMWLudBwW+$Sm?;uSR9;LDZ1Y9DJw&S6ImY zbp@4!-rUGQFZkkJ4*&kiQ)%0am(OmC+1}gBcG(^IqRU!rZqTxK8&5k<<4IMPJa_P6 zTLF5`o4S2^8t>AzB5=_WkUKY)g-VyLzaU88u@!Vh50((S61K=2?sJzfC`6w6Wqj|S zrgEH|{aNWHTQ%o>9}V5)*CHrb6C@1uD2<^-M(Os5xq)4NPlr?n4(J2GMn2>NV4K1= zsUF?~o`YuhbNr_WCU}242R4jBqzR|}%ts!BW8ZoDU6n&9s1QZZ#I$zE@tz5A%{JKP zuP?FU3v~}fd`$OVcM0VGZ;XA#8}`uXirs)J`Zkd8xTNHZx6h`k@F^VBVF+6X4Hi;8 z)w(nW3{t@#W_ZVyox!=5KE{h;K^M*?@B51+@10b?`D}Q}v^n%hRYlJIq-@EQ730xO zCXw%iM#qL+jr2cli~0SqpVNVA^$*8Y95*>63HhY_Boo1Z+4@^pwysbx_ngq_jk3{IzB7I%vbQ(M(k} z0p}P2nqEaYFmA8ir0OYmS1p?~%Acp!zFlAU(NZV0cB$`Qfq-sE|95y^Krb-x&(6By z$OX~M{AXvqRZTyz@1G+2S0w+L#c7ar`-gV1xr((>9+!DZozD%2s7_*BtY7Y-&&D|h z(B|h~MUaa$k$auhmiD6B5s9t^?}luD^}p@|F&p)Bf%fK){;mEIRiLZ?i@CRo%B$Pf zHIWYu9^56kySoQV2<~pd-7Uf0gF|qa;O-hANN{&|*P7)2*E+Ro?^SK@UDet-m)z05 zIp!RFjNYH;?ZE~SO%|bep<`3tUQz`yAN6ZILhwK7Vv9!Q7}B9cjDNq0CgFBRCOrK0 z`7~?nId!XGD~Fi>o;LBU90X(V;(uV*zv7*GzA?*eNZ%hx_?a78sd8#Uu-$x}c24q_ z?oZLXS&X=WV5vI;%Xm+IZjEOc$(r`mx3rB|J;TUh8(aP2RR-J_ZJvVHH1bYMJ$u=y z)mKx9MQ;=eRute8v>XuklB4bhgB}NN$m*$Xea_w{azi^2C)6a*tmCB~RR|EEkz^u; z$;ycm4HkUq+WJ(`d~TPi=cGL5X~WPO(^l-HbdI6P6>1#Lo@m?<`SHl)A#P=ZF!DEU z7m<)g;5H`E882Q5Z>bS@Hx_RkUJDFZi@H1gv|soIbn~y1r+p4(uBjh5=;!{E0k^dL zLnh#Uhf5{?(a~!Fm@w^SzUCypO+}E%+z^Phq40e7@_a-#$o)iicYG7|Zsz;pxy#C< zTypk0`OtQuV%c_~j@P|A=jU;E1?B_$YxS+p({3D82o&4}OE>%sZP;jdkhNrmp0WfVX7IH5GW> zzaM5=)b4KLnW{=F`BQ*FBgJEgH(1XlBh>70dD5rkIcEDC^*4LDFD@rC=YqW|gjS38 zCUDB5AW_X)4$2h;rp4~ECX6(%h#*Yjkx6~v$CdrOY95$bP6sUe!Y0p-y4O22jmAH} zYND5=igWbqHNZ!ecpPI%9L2;x@OWz6KP~}6DFn-qxnD=;zY22Xt>n8$W$cl4y78;ts9(_l&wfD{p8OOFXOpU?E2dK>J z5%R-{lnB_$ffl5L@4hmXLE*j8YD?KVmq*-XT9XQof(E%&AAM3j8K%q=$wlw7TjcCj zCUwGtY{GdfMVM8Tw85m;_xJ-2lJ2_kGP>{g(h!G)*!hV_K2j+zEbjQ>VIBw6bpN8+ za8R*=Wsy!UmVrC4=RUNU=ANjq5!@U9p$dD5jCzx;Zs6zNTUredi;cWN%-KiETAmXNQK2qZ+Anq-2L0CrQ27d} zCfr{8j>G1k3e>mhn~Zdhrv=V8ra@I&*J9oxvX!2nGjN4Ekh;%~VqtVcuf|mkHo$!- zbSiRN9^Ozl3#z=gg2yVcipst8zRl;l6?sqSS~S5*bP=bJQG5DQy_2j~CrIuVMxV^- zg*yb5P{wyNV>4vk^f_ekuwV<0=noPzcT$7SCpT^|MW${Pnx{k;VUCSPG5= z0)T1#>q02B?Qe`?0tAZlxxis}5?*yUnLK53;gq*-C41ty`rZPCjkS`De9-Y)%PqWg zO9X`5s?A{|o(;bY`wFqrEVg~VdAh)Yw2fVD6YG$cSCXY`S>R8M_PE(1rTZP_=04ms zqIqo6R~W4a7EcrXQ6=PV*byhmdV%Zg*UTdswjc{OdWfl)+x9o`>@Gdx!5oR~%5(Of zFAZe>K?rh5BeVihAziT|75jaLM(kYX>zc9IG8SW;l31H5Y^4JtDs=^EQzLX)n}Rg$YTju>P2U?pgdm62yIXP=UMG zjZ79PL@MI$;966DcBfu+|+U17PVJschDp4@4ly6UQMTvfH0TzRa`U zqlesyxO1FZADC62d;8B3+Ua^DTcSl4GWCC(eUmMX#HI)@_O8g=4&YSWS;sTCm(I0Y z#WVLjt7SV^P*i#liJjtm(a1A&-!^TTRlO zHp5q|z$byw`nJ-!z<&YP%834+_h_2cVXgiGXeQ)z{xM}-R&>Y(O!{+CaQ*oZUmk6% zt$%wD9{b64Aa!%jt;_Lcmf*p95H-rfe(GY$d?LQy*Z1b6`;T3QbDFu^Fet>PcqLSJ z=(0*Q-#DX`khg^>b;>$JvTIG}z_5#EG(7yp?Xp|-PZx?g0u?{}&RMOY!8+;!Rzs}UH^fPJ8vtT>AP7 zH^_?On`Xh?V)ws!`L=l9%xQ?LG0?++VYKJ3UhO%@k{p3D6P_fr{`5WI%~sUi4$V-2{1W3dEt}73U*t{Gao&ydtjI_74paIM_XfPU$k}t`dAQpI2dZChLn$bFNzaNyt`IR zcCf~DAK}WhmwsLoO|l?g#0Iq?e@cKd&{m_IJ`$}<@ah+s8e$)?=~n*3cD)Ex=NxkX zy|NI_Jr;sq^%D4>Ou##DL;8L2`JXQX1UYoRXij|KcI`qSXb-b-F@CAy-5)aju_v@a zaZmZuc`i`qn7lRkdecF6kdkQlJ?N~$V@4eXL%V~X^lUtC28WkI!uv*DS^|cne0W z>?ek~A$`I0I<~|VaCYaE(>!^kGvwxaS5|c8Gx(^rTF+oyPnKJ0(9Z!Cg1iC5;}kyj zY>m}JfCqBd7LQ7r$Ms2)6|YMOjQ3ASa1`qx{tu|gPhS{lUqGpAnR*MO>Gs=?P#``Y zg?=$_b3X{K`!&L9R1}1SkEvrr(O2HqtfH zNIEd6h*dP}gui|>vjdumX@Y(uSXizzq25A&;c@yxXe7c3UYvO>XF-G~7ow~V6m}MV zp)4!7+huw570r;qlJ8j5Fd-jyw468l)M38FFi(h&dmm)`I9|jP>C{PoG3Ckt)+nGa#wUNT`fGbl zvIUZ&&dv|qZ|hm@JZK9Ir6QmV%jpTYjXQ?o%-ymw11t9hibxJs@g}{A-N-^RFO<;I zm7}Sio5xW{*_FL*ygl@Li6Odn>c)<^mKUbP3x=9a{_~V`E|2X}Wxy3+Xkf6eVF_6? zYVpDhtT`Aruig7r+JCa{rwr9Of5GhmCr;;+`vXH8-}whdiz_b%(7CGA>%mssb0SjhAHoZM7t;PeH4LO;wSlpEb(E@aRLsCn!cC z47(>Gplmw9Cd~GdIa$lYcJRXl6;142yXwCj4>qGb8%r1u51>lA{)P+u{(tYlM*7 zUQFB-vVoWiR=3^T%Z_ycj58xf__L>R2RzYU>y&5{ z10TiFHZknr-xiZErvvN~Ht{swsGtx#Wau&g0fc}kLCRqTfe_4bpJrDfxZv%;|Chi7 zFEF7kh-o4_dk+$#2}uC;6#ufzm0dAw&0VV**;BuPliYK7!08MxXF)#?QOezL3c4i` z@RsPj6M1|3NG@_hG4!?}Jn{=BF$L1uJA-xdbLKibQo~g|QjIP`32H)ha1aMZF$w^HyTFUpJaUaut5KUfdN(yJN`g$i+FVP}`ioc+9c zv`#Vob?Pt(nRa7-re)FPApK9F$Q$d+vd@LPMID6?AyMmbiZGmAyxu_n`lD@*VC%+A zLb|Qs8t)G8d3ijB(CJbK3U73-a54l`TU%Q#vm3b{m=MMTO@MpySR zgv%o;$kCbvh=*!&1$Ph<2nqxOcAw>C#;Sl{Qy`QED7`JBaIf7XSOy1N+GktY!la6o zXeJ1VUy(~5y~rPLt%CxFTO~ij`r!Lw!^Hd|PU}kSQV|nsp*mh(Hu-{wh{GZV6>sO{ zl;9^X&tjC$SOY2Wp7)o-xZNJ#OJPlNqi%}a64@1{b&`f5rwluneKDI+gwj{Cf^*wV zu@PTzl<@Z#{VuF^tWs*y#3}0G-_7XNP}rcS&VP}0MnAU2@NKz;8uw0$>rH?=0p5D<5jnF>78$o}f zilBWgBqh22thSpD=2z#^ZG~q&(*hEb0SRrWAl92_7^DU|8pKM z+B}v(?y=_npc@V2_Vk-V&T?y{>#NQUq?yKk?2K-iSIQ&R-v+UqnoY^SAQkz!0!qP1 zf=H4dKC~8Hgw9?1#3;S)X*P?MyyRt)=v}{g{kLv@3$xfSL!C8aM`B3D-rfZbH;7{y zpKa3uzK^zN2Gds$!N{4h&N(q-@7sSEKdK{Nr;->R?bLqK*86v#Q0!C63*ZU+kvuXV zkL2kuJ9ZOEwp+|t=-=j?fDN+UFYnbk-fpaQ=N;Q+Bz2<|#Hl>==x*|QPZs>9`r*6E z+mGi=Jm|{;f-)UVv)lYCAta>CCETGz#AyaCz~b*mI5C_Pz$U07Zh=q#&KUV63Y{lb z8$NS@LcFzl5cC30lgp@l4TAFa_711w{NR(Khlc>$UFE;c;a4yw4FydoCQf_gJAtz5 zy>sk^hHtMbavU`5WrlDJiM|*i^z$nWYBlmWDjYn6sCKjSM!wQoRC<-c0z5CM0Q@O0 zlkAW{B{TkcxHb1C_U#0QUe;3D7Z#^}ZgV!bf+@QNQg#XZ5%N4#R*FgLjkQGCVWe6f>ek#@a~NDOH&*4+H8_3?aOSp1KohS7NB z{@)j-fv>hFDM)Bs@c6d3#Ml$xXEp14N5Y0yx5aZ^yhPD^bb|c{RwenBPIEjb@)Aj= z!3_z0B}YoZAS9w>;hAmn8 zK~G(ZWlz#ngSZ~bk3Bbe1DFkbnfS591W|#~+&e$IUh4>-%(nX#^47=yAW6Ix9Z-0h znVB;@S`ERf(rC}{PqaizggU4g+U)gPXE|!Q&G5;hcpGucXZviI)En(#bDy2XujzJddCM)+&+?`BTGy&^$X)T}k6H_4L;8!xb&oH0d za9ZmMQ0K#yWapwJmPeAl^-DSCl(*#EiYw-QBfVCpYmiFZycuMYwHjjykATkX?^F7yucop3^uwao;{2e3y{FDIFH14c zD&9rnz#ikC-D+B^wDi61*z-80c+I6VyLUvnMr&V@5{b9dT9AT4S~|~OPC57#Zfil5 zKf14wpYL}T*vWVWAVj5$IxAf<1&rd?7$qfqD05{5wRuwr3N@ zX}}X1*yZAeOJIlG!RPf(vr4d9a9Ne~D5KM=wh(h9Ng zU1hIFjqfgG5t2ixO|NI~^mk0fF*6BPO6gfbmYbNJY6A96i38;XtFS z_^_Z3qeO21S5X+7&79)-HtiIZ+e1gbLDc-U6G##REBSn_!9B1E6@9mY@t5SuL5>h4 z=!+&c8^o6soDN@yI8v5MX?=6eqn*X(<=qx}oB+e;yw_Eme9h*Yev*u&2gR+~6yr-;h?CV;HOn2WB38MvZP@6K2(`#G9p;LDE(9)q4qOo~2PE!_ZO< zE}M9@YAI*ly$XLiW?_oHi@4u5WWE92HhN1kXupYB@p;k4WYBomK9){9xmp9A(K-bO zV~T~fhiD~UFq)o6PSFC5xF1$lR(7~ttLxeFw0X;{px$g^7)?#=S{C_~YzCcy+bQH( z3IWLnB|;`4KVii6$TQ}*9p&7T4E8)&i$!Gk(C~TrS zR99R?yvekYyabj2k3(J+?&VIakQc7QS058mt{salQy4UU#D|N>o>ou8#6J$iT{l8O z?-nlamJHi!l5qn8Sei|t(!dkL^=GsyEm}kin=TaGCthCZI27%!8E1_;3e$#LxE|=6j-4{HhNX-z|fUOur%q+|Eet@ zvM?sd_;(ZgK)qN^12ir%ljYlYZM8TZ@M>0X&Gd--z@S~X-Ys3(lkGX=1T;~)4xpf5 zQ)bOb&*xrfS)o?pZ~sm*9MXk^q@!f@1tY{~KN6~&$g`4HEmKqX z7~hv=Ql>GHWzDa3l;?hhTVX}3B%rZ4lwZo70hUBl$|UUf{9dl}FEvM<_$mVN>eM&A ztmw<2aXngW%r*racR|P$J~P(n(yEUOVthw2-%9g7a?mIs_!9GNhX72vUY6bvTa^9f z`Tc^@igvpkzlYm|%??qwgC$zXji>4DHh+q_-Ot(e3bB_XxU-7s=hC5*FJS)jBQ0+Q zEyB&@+%0@(N1fyc_q#dcZaztS))jU({1ONRaN=;K<|2i2B7~F4_XV!eSgtAbZ=9Iu zgMgBb^$je%!U6ev%|nAW9#u0VZK~Xwu@$tVpmi zEdu}Cn0h}8lyKdN%dy{jIQP&dzipE-rU!Nqk_aJ|jP-xC@JUuJe}uFJoeurhYYc&V zAXGV+tcZwC=9GX}eVAd6$>cp@q+I0xYTCmt2;y}<6oTD++MfdN5avfj0ckatQ#dfb z2&uO^1(hzf$vkG0z<$MQ83u#woaG=U=5iV(Dmm30DrAziqVE~dHzPtKa!Jyh6(EkH zyd7tQ0!83W#i5=G{;Jf`F4CRR(HNaAsDty@=Zwb0w$*W0E6v8C+G0|Df0S85LmrMi*QRd;$J)N=oA8Wr;v{?fbzmiuiQiBiRWc5mmoO! z`pRdb3*~&w{z!X?evNtt25I-`MYak)tDgcheny0kBAc;4=ROhti8p_go9Ks~Or>jj z3nixwDmvO>iwaW7`o>%GO{BX1RXFG2YrW*>hX8C~7_=R{^WPfVr#EkOe6v&xZzMBa zgb=nyJ8g<4m3Qw^O&j;z)WM0sQpTLoGU-!@N9|?4wjTOArdQIz-+Lg7I+?OP0}g>j7}g9n-vBQ?mr1os zQ3D3fDf$k!4su41(H2q@lu^Ax)D(%Q_cWmBW zcJvQc02X?+tLdKN8TlbqDn{`zjNay^^#c!;x~^%xz3K!OtNovLt4|>S;A#QA><|9w zvkyOF(~7i&*rgO_1R)BbSOTNOQXZW&weZ*#J)8ODs8uSiWLet8sNNJlgLav~*%uOF zFdIZ~x?66qHmI_^a#8j=FqN#8sCF3YQprcC$<+OSjt}9^tZFRVW1#rNss( zUlV%F5o{z2!_`7&QXV zJJsu%+iiB1!{HIgi#T}hEu^6u^Uyr|5)?C|TkQ2u2kfhx(p2K#+2rA1EjW0*k5k)% z2l+@J=@DT%)uY5;7J_#?r#Pb2fjfF!_#HIK8HmQm_I{Y({&>D$ET`$Im3;l~09~o5U$|)YDN6|~ z;l!Eg_l*UCOISt_5(-@&`J+nde7*HjdF1f8D2cFt=TSL0%3_0^c9969E|Nd0hOb6) zy1-GGa!LV@e7(<$0Djp5DIl+op|8ZSbrBTSs}yIY;RBQFYKllTx)@!uXSfZVK+N4|@Im>6Ma1fU`1< zbX0kIp8FQOVy(Sf(VKqJYeS9@0zTA?W(+`+_En-inx=d>-Xx2Q4YIdsB%V~efcjN# z60^V6gL6=Y|hEvZlhUUH{#U7P2e&I8>w-Zby@S%zS7VWuu= z{ukO*;YU##)p9zOX%zz~r$$Z$8p;uzf709tVWr^y^$VcD)!ZbIj`NxzURoB(okJp)JOhE8%4$&>1N zP;b>Pyf28O&!i-WO(UlJLKW4eJ z*j@j@a=(H0zFiB#pZnpXgsC(WzyF(v*(qx{d)4@JMaKgrMd)z+}r)!vJW+S)pm`*Ch=j>p5CpRLa-xs?^SIMoh4D7C}{xs9BQsnh*=7dDN7cY!U6pzmEI&Eh=e z$998l2gk=@w|5RJ-zakogWl8y5RNVld}6D%JfzM^T4v*SzO6lL!)RxYNNhX%@FKYk z&aCvq$8u<;dYgnd+IL%4!&{;&vsGRg1o=aL@q^Oxl~M7@6HJAoTLfQhJ;Ew0F%<{L z=&CH`W43)S9x7_G?Aq+GkC6XIT{Y}I5-`Xkm{pTol|rp%=QkWMo!|5z^c8Hy8FU+w zj(mw0i8A|(_Xp^YX4ew6J&b0azo@NMUf%Z3MzHt{Gc#`OQS(&KYZaE z0?5Sj=98Z9jeHnVp_RYE5;$~|Y@A4XKGo}+kZm#wa0rHX#fVYJ_*cTR0h3^KSj=lP zA3aw2A4~)5;OC2vJ#kgJw2u6wWN;`7O6@eNUb{yhld6U&>i{s*}Q__GsfaU{?1F zGw!@smz;D2zAKa){Mfl#xI*9Q`mfln80Z5L}B>W{fiY=2r_&tG{)^pGeL$~9boe-+D?@~w?TygB2x zB6}9R>qZ+U=?%O3k+%(J~!WsWjftW@~8xfjLi`iHOyhQ{-jrD$u|C5{$S5F zm4*OGgJT{wYP^uKsPAuAcqqDB8`*xQmK%PTWSp`o~L(5sZW7Y)8a!_G?= zE%pzCj%X)$k-%7SGUvNPbt~YhD7;O&A9^aN`1Apaj9ATSD|wd3E${vqw#5C1zA=AG zxz&6Pq9E6S@kSrL#C+iIXXnyO7vZCJ7)@|COg>+X7ZO)UzEZQ9a?$;z$fJiW^;vp= zkxq)hb6#tbnJ!(T0=Tx`s-g`}wtg|%=~6`Q?IW_1s=P|$8EfpfUCzWHUx`{A(<(D4p@wXb8o=W0(L-;u7q5kVo?0>!leOMsT>9NvPOp5inzajB-yL< z=2;f4D@dA&b72JFf3I^v#h(5haQx&VDbOZPu@V#5!xpinOc^(yQZD z*sf4h$bC8+^84cup1$D%k(h4ab8$=`ZyAd$xSu@_D4EauTJb-XKh7Gx|Wl?s0E z-hfPsJwQi%dw)>TUXbz-#@I%8I>PxbgTF^CZ0CCDo1WvZZYhgbd9%A$q zc~FgZk~En)e6ObtvBD5GgByG!Go$-y<(tV!5;!(KUnFeCb5zz@GsBmTRAaNP zMx=Qb%g0UDGX%MpQT-!1k;P`Ya}O@Z+YIx2=R8qCJ(l{uT7V?}5Fi`w~QSfg`j_Ub>ljz`P*<*QfjBcg8_e{diW}P6ZI?1-aj-k}1 z;}Hf09XEBhLYyK>J={?9eK2B2NA8w4K=0V;SYN|z4Sc-$k=D^z-5vplOM+M_hXRc# z#C4rdy6LUPkB>I6w=?GpT)VpxhFzhCy5Ek8x(U_A}kI$9k5AdeWy# z?M9ne1?eJJtb+S|fr8QUt*mN_pFaWRAmb6h{Q%oVCxtvvIME}*a{GP09N}D%y5LC9 z^$Z&~_-*9xh|eMuD631?yWFHD$63+sl5gN`OZz04 zU*jamGjdC(adaqi-$=f1gYYH>71_h=twW$hKvX8SJZzyoo9gf{=qh~CJDXwVt+6;b z8znXnbF+b*>p42EKUWyZM*kT6SIR--5lmLMmH{6} z?ZDWE&0;ym_TSXtTYLIC$Ikv+5k6Zt6)QO}im`OEVjbX3tfdf)1V3N@7Z3iBrESho z?X@fe&vCKRwU2QILrX0D4q9&?r*P>~4&eBC9XU6Sskhd01HQSjN(3KgYW(ro9nK@F zYj}xsNfDzU5L%>o8&KPTnkmDL_3fhB@x7)b5WhjO`Fs^^6!@BqF*886)Ok?%OXm39 zyF6k|FrXk9;%*v_;_w29eg0MCAA(dc$OP^6-rbnoKF_hFFJXMZWw!F66d(O8yKV(d=TH)DiVA^3z~o@jBM<4E3(I29l~|#=zp!38C`E~ zoAc!x)pe&(Se70ymB1djU{}pY@Q$6@iGDaz!)0TLgpdF6Nb57)ErNWSuc)>ad9_(q=dVs5fu5YdG?^y=v`Cu*s1vOn27EHnXl%z z(<0R4sbDmJkVvJni>Qj8aswzvf2XX4l$A+eHgGH{#DQV3AvwwDa!LqC;O=`vI4>g- z+31ij^N#Vmu1N)d1?>Fv`t{JEX0*hk&0Zmg0;Z3M{bx3b##A#C)fF4n6mLznJX;K3 z=()d|)ttz{ppG~nWTdi~4Bc@R_~F4&)W^KoYf{v!dW@+y+N(dG{#Mmp&@-S7_-*YD z{T1_d;4No%@BYK*xV&Tjzel5k%*Y->z53cF=X?GZHUa1E*4P#JFaNQXtu|26!U$v;6N1EFQ_BSlzg+~|+BYuUL>|u7%EPEop|3fif`<%D) zCw4y|cg8sx5~$DAbP-94weD)Kbn-SywThbi`Aubk{YeGHdv@K52I`=SA_iE3T z1paLarc*bQ=iC0#i|7S~SjA|$nJ)&AOdslQ?5HO4{k@98-nAe~lMtAY_foV3nXE%$D>7+ zx$=il3_4nmYeMvM4n&{uvM-a8{H>c@-dQuG5Ua(t2Sz&r_@DTKvLu*jTHe^MMr}mm zqNqh#0dFNNG|Ka>qsCg44CW{!;CT6}8e2AOZzhxYKG_?3M5t)lA;BceHA-EvrbItA zi?|N%ygn0*X_dlFBMNYMLc!u*%|QCMSX)~!Br<5z;6~uHwH6(T##=S~Pa(~{n@velm%ciF*vls9&TX|C~* z3Z%{CvNoGq4GHG(TO~0YsxYWkDMCjOG?!{!?Qhi+@u7I3LKkX7BivrKGvnlMqXLm7fggHwjLT{;#(BsT=9FukQ4V(6v4&b%I|dXoC-R_d=mS|m3`Se zU@HZwr`_#DH0!ku_5lrG`jj_%de?0P8j z$uGr;2UAYsj4^z(?E49;X-UQ267)mkr1y-&d5`4!U@zQIEuhi!oc6LLQ0gLr2ZexM?_FHZ~}?F4Bxz&C28LHGz%MAmyV~!pxQD4%$DZ z|F^ydxl?tMms`mfZ&_>7;DC((3EnJ`K8Dh=L!Ghl+rt~V@oo9UN>d~mBd7EG2c41L z@lNGA0^rNr~MXnkBHgCYx@#0okb80wsafZUI2 zvK6TEH^~yq_6!~3ej+iB>+InBVv^O2gg`aY0m{P}Sg=wd+60_cC zQDoI+jS`#6p98fYGZ3hhFOiW5OrzoZr^+PBAhICBHVBp-Nt%k~KaS){XOm#>9!_K{ zoWzo3yU?fghnw3WolylUe5<@|ujTo}1TITVP}t;iZjG1w_m0+sM=B~p;>o;viUh{_ z4+gbx)WM+CAt2)@d@R7Yxk7pk<> zo_06WA^p2+HKdc3AgqHfU^G4Xk!(FTgFi0LLuDdmdssj1aClMyJRJ+C$nQ*>&@hGW zjF9^v7~#RH0wK9U6S~m~Yo2ArjB*F?8dd{0AKNfBXwFSP6vmu zCMOiMw?BP{!iXfz2w0~t9PusMC1fFSAyxOH|Dh0p(33C&@eJEQ@3;If%nH`sQpt;&TZ6FR3iHW z3Xqe}w*a|0`KI|F3hY@F4PE$sPZ6lmDb6{varo;DYer z@(g(+aQ9r;i{^R0W>0tG@ewF|%qBaY;p0~zcXz*|aPxQ|zq?J7=5gBB znxI~}kSVyD{A1Ol;0X2gu)=q$7X_LRsD^Lj z%~+M(i0Pn-Ao)}V;y?lVd{Q3Z)~M)TRkDN(!Tcni6v4ok#LiH?P<@|;KRf;sG)FK? zo8s=&G!@DVH*aU%e(D+s;}djO6^f4el68|^dL9+(jSyOGi+y;17d-f>{E|qZ`ohNn z0l;wo-nw5xjaz7It(WGTj0P126R1D+Rm&z1d%yQQn&rH6TYekbV3gZL~%NB+% zRr26>4H~gg#C7iES*@^6)GU}6jW2$(#BCVvd|RJ@42nQXhm8r9bLLIT2eEePPfwgqqv_laX2z~RqVL`rPx6SQYVmq4w1Mw5I9utjq6s0yW|0p z>xqRQvcDVmhGNjKz3r|hJ?6dPbFB1Q`7!jt3gtjmIe$W&B%%8FT?fp1a}%6Rd)Z36HPBPkgv7`Tje6YL$#R ziC`8d<&a}=K<=7U>%&Qgl+zWdERTCi6#rq&1;plNV_x2BQr40!UyWStoSKTb;evEAk>d(e4 zc6Vb#Bt5!EH0aXq^R5xoIH~<%+hzy>gYhGWWP$~|Hndv%D;WUG)8c6e*Ywe{9ZsEM2t){r`BWl)a z+V;k?F1do?zec4UWKr0eKE{7Rj(_U6&JU(&e%Y0)suLu^*l&`#q7YE5AE7p1oKw)? zNsD0^-RZT<)lcAFZWz+4Sxd3((YeeD!3r?`e6>6N+3Ml=X|(A4iVac1&X9?lCsL4d z*_*n1;bKmI5eG+L!(UbhEf?5siS9MQzUMT-%;OAKv6{C(7cUv+X_6)|vn(g)v$pPs z055{Wkv^dKoLIu`e)8V6sLvD-^9iTj(AjK@#K%r)JAas7@@ymABr;c z-*Ny-SKFVJmXqGAuP?*TOu=@PLiT|*z%Mbj#vkHD{oeqm`@(T@L{O3OIAozm7ic1X za7vFAeMZG`NT|W7*Gh?0qq_?FiRH1wZ7}1LuXN0+Jam&nSI18gB6ky_SibNTVL_t4 zI(VNFuF^yAn+DG#iMe0>t{oG@vDINj_$`5ey#c-yOO^|~S)4MSzpP^ZzG7FC7E*JH zQ{?5rf`a?yAqK>QXpfg!qFR<7b4e)#gv3`_k>Fi)RWfGhzI0xf&0pD~6(?Vp_a3rq zL{EW+BTtuRoWR}Y+tim_l^ty>SRiBT8LIpT{eiCqUXhz*#jcJhiYavQ>WZpP!r-h2 zA@dR1bu{Dq`p&??p0?Vk_%H9>R$@|V&hsQ5A{V1$*`vY`DUyZ|TkencMg19J5ID}4gMLO!RZIV(|@U}dr(cku%V=5Y#l(*O5<^ziB&gik}4`LXQA z@_#o$Z2uf<{;UmwO>AH)X?rwX(`@{^_!7#mzO}vxyc5~gjjWA3ofb8$=@6%3|4!XH zI&2IRjxuur=!$GRj4``vYw~cVf!kv|!xYQDS!h8#G6L^=9~=}ji2xwFx6S9-08Acj zF$tDyFeEf2z=ap2+32Fn(53kFt)RYip=Hb3Bpe?N{a><&HA{1>8C= z{{HGnnat}}zXw%HOzMQ;g!dSa({gpPO*ClsBdj^U=dGjF z8&kGajzk1Ky9I*9Y}bQw!ZvJWpdp~WhuC~KWw;AvKHIB6!@)-_UgAD*V;ng&?KOk4 z{wU32wdkd6zd1*y`&fxg*@-l)dKWpwc^5VOg8r3r4vlhi$NpHcYgC4YQ-B(gnIxuQ z0UzI3(@r@-Ip+ySe=b6qA6LE3Y>rp=Q>h-zg;@?S!<%nX;x>R93cCy5s--rN(=<7HcD5* zz+!W-(p&hm*f?ge0N*#pgKQkpgW@3aKSQ9X|7Li|hW?IYQ)JZqyIK8@EH-1ipJwNi zQPh!DO1^s6hjW6Y&mR49sT|xLsy7~}uH3t~ZJdI@Ix{3-t$vj3sc*Rj-^qO(lf~zK zqy)@hnDU@sSErn?)LLk?iSk@7k!16Rl9wkdK6JpKUcZg3AqeI-0Y3iXbh-AzjMnYO z&tLVTU58R9u~_{-Qb5qq8C@Vu|LZ_K`!|hl7bXK+!%3nI%B$|V6%F_f(SDRoA#swX zcXo2l#pa?YPz<28NKur1E)e0W$ZGZxg3&k+0aI2afliaXvfMMcu&_OBwlOCu@dUh> z=(}<8vt>w_&D<3n&?&400{9q06oL1joBzF0!^!kRjt(D)9B30L6ea~As72&<*m2M2 z4a&O~*O2JRkl=5(q{F@dTVPRQ@w@P9pGem``+ETfgGw=RjtD??SqrPo`yPQ|*nf)y z_J|ll6eidt^WY5xHgKX1*EOOzO`jVRS+DtNujG7d;{2$NIq*`=qY_lJk zeG^=QBBs}Drqb1yS7x_UnObqFO2cV;Yk4AolB4OL?l=Edx@UAbS0lOW&ag(gjz zZO{tNHVjJ&5+p;-$qo)C{_>&l}ldh=%p_8Y}Q#tmT!>f7Jl!R{7r3T5Co zcq85al*+`udr}$|wWzsDc%(X5$!qxv?1|txH`xJAuN3kbS!nI!TL(;u-s{F3!w9iVTp{X)ZcQlut>Lt_hI`J+lYmd}{TYa)J z(wy9d0jzYz3G&{5mm6txyoN8IFuB74bxwRK@oOBXmJR9a@>8wm9Evpb|NA^45trGv zgl|X<)(M0_3T84JN_eGJICUVmt9RwDRvPvr1syHam(XTTzJKG5#IsEFmGYqP)hXJG z7aS5o4O7GVb9~$mVXEo(1UM8t0uvy$K)%2g7M9Q>=2T%DIfG;Yp`I^JkmYl`9BUCh z@oq9+N9qZM$CH0p-P=okTJH@b1f#S^-g$mPDZf5!bfDQMp=?cK1%m~H){?)B_sh`k z9W033oQv0fe0qYaY78jhdgaCesw+}#Np zT!XtMkf6a`g1bwA;958YcXxL`FZuS~{qNDIPmk`tIoCBtU95M>vz|5QZ?dy?RX{`C z75~81Q&iA`h2`0?TTuu$Vy(Mnsxs++?f;bw$c6$i5nG!MspS7;wov`$59?fkiNp{V|F||2owJIPna>=i=I;DDu`6%A*%ze-W2@p$qsxm@vEobj z-tY0&8+AA8S9o1;WU1JfyD8Hbk=kuyRvG!)LwHwap+%1Ai#+hglQy24r)VneHi!X| zMZ}bk&HL@zz$1YPSU9*zwnM&_iEV|@V0AR$ST3CF1ZIocxHem*1H5-P3|LGp_x%cob@AZIVhz5B(_Rt)EzrW1 zK>R@H)GUOc@ERbH=AHJQV@ANBiqU&=DFa7PZ)WwNKQtT|=zG>&49XDW`GZOl`3&QD ztIS5yZI9ot7^b~rUhx<~drKK>q39>Yzib1`veI%hJCP`9NG4ziF==?$Qm7ui{FF{) zkeR^k=@R2FnAY82AGk69L$37eFMPf)_SF&*gi5cLpcoO5I;P7%eq0#jY+q_hq-N4@ zd^-<<5D7ZO5!tnERBKqLA` zNZ0L-l1WvapLb`)_%((&FFU)pu<&#{6?A%_K5n@<61#4s)wMqp%5`3l9o{cSA7dxJ zk{XbdUD%x8bToooTPWcCPH+9Nv-rUsI$_LV6uPU6Ed7IQ^9R8mPI(g)FVPP&Go94k z6m))VdGF&)C#@dt0EEU_w{#qhMoCXOM}}H~E=NUB+z?g23pf{|shv=HXstGtr+50= zw1opXnYo>bj8VY4lGQZ)JIFYw64+TlZopT=|9E8jVu6!{$#4vIY4Tqa!X)phD#Ae z0x_Ny2z$)DM1IK$Y5Q=qYX>|#2gR^bnW%I`ron(qI)ROKQXNV?d=Ck$^l$U(#A!6` zR4#_feaF2jtj6tMX>PvEnYrON)nkG<1F| zP5xvqq*8&ba7bR>-d4tE(wQKX$ljgjQ=aLckzL)zP2BfRKm1#WOxu#`lnp-CZAeA7 z`Dgn1`L(sp&)>ge=aG|x^4Eb?hfB3;AVt2k=#-=ww<9gOgghWShiWeX(!{xp`2u61 zd@o0FX}(Vdz=;?O%lRX{E1iA~g=Ky_4h>5Z0GP|5Tv7*@>%)Mn)c$x~U^2TExy^iy z?^2amibm^H$z@GWtz1>DtJb`91cP>6I02tez+fVWXmYK!_iyw5@h>Xf3vI9?6&xa?Tuctb}d?Q5gfuV0oBG0Z)= z7V1`AhGd{>K0vYCPTHqz(bQR(*Nc1?Q|-FABOt92TW*Pn$L9&y;}Wu83GPW`p3{9D ziUTqlW5qy24(R%MXj*BGz88dTY(`PrULXI)1aINQkf1Dd^n-6rZ%t9#(TxDYC zSHD+AOe>FFo9i4>de-sc&s$07Jyx2WMnm6}{?F;8#=b7nib{Yt_ zX8~@*E)yXmJ%=!jW)I(A3{mB;xD)R?A7G)Wza4%jTWoaxJQ0G)UxO3KqT~{Yw3Ht7 z`&tmFqwi|)O>r>1w%t0>-r^~K&0GO$r3gZPSXk9Bn6R>!4uPLmC@64u$bR!{OP(96 zVKDuSiWPVeQr?ktp#cojSeFn=%m)A_)S^0ziFI>(%kpzU_|YQ3hM5$l7b$rjHeHYk z8`lj3yR-&ITGa18t?63IzE2PF7YXBa7E1%VqCFQh3nuZ0KEV$XZ>bwloDb*1QCT}Lm;$V+PY`MZ2ZgZv@d&KcWCQ|`41{e#tj1alX6BVAsM4)LLG+W#6x8@qF%uo_G?1}K8hMB zk+Y|kxoO|hk{yc%NgX&y5L6ciIS;2At`UQY& zM``%sR+(O-Bu~osec4-kT>;-ui7)&mc7x1U!n=H+05XQ}znyg!nhQ{D^*?w_bA1pw z_(C0m;`2uoP6$G!XNhM-#JmM^`vY)s3@-X&0VEj$Sf7SjI0Y4(91lNbC&+B~ic8oc z24IP3^PoFbI^peD?;ac&%{E*PFZ%$*YJ+8+MCOY32hNz+iBaGMv6FB2!lQ=v?)Z#2 z>*N>=sO%5KOUu!@#OTWMMs9VuVP4q|X*UQKBzR{m|173fm5_&kNwxtO5u#M3ggs~1 z;~Oq2!fj8Qewsgu^^Epmfl{HXhwimIL5M~0dweSqWZ@Qq6pyOgVeFQb?#%N=ka6?O z)uKDYm3i0p_V)j6tf~^Gzo49oODvoz>l`UXbyc8j+)D&FF9SgS&9o(Cqt{suCe$G` z?)QVbudY+cmv`2zv(`ciFicIZF&j$GrF4^ZLc0OUPzo9=d@P-lI}gYYw0-89bOnTJ zpZT?LfTFG>&_W-`-H;z)%yd0oG6vofHu7F&oCfLu9(*0}6*$N4BzsZ{oxDIvv)(q1 zt;ON&E`i1E)jApbpM195L8yRZ54~C-Xjt6ZqoD6XU?Q(~zvByXb;HPq|1Iymrvsz{ zIT^$gjtg5sl~@b|D{sblBLijhMv<@0CV&p0>_}K-wh7azm&YI{rb3r5N3V=B|MIvN zeE)V?G`1RMjl@euOp+fh;{qi{HvNv1`)W6kWN31{H!I=dU{>_*dAGCtVYcRO87yYMV1^aWq-M~pVHN0*L6n#-*p(xQ?K?U&jo z2@P$D*r8%g0Gur_uz(Uj4h@BWx=onBO(He6TSUAoJ;mdaZh4h%rX~n3no?CAA zyc0vN?a_qaDy~tgzphH#$)k6(8iQ+=FMn5H1yw74yqir5N2*AgS%3oli<6F=Q4U$= ze$Sm%r^l)kUU@=}dW>FvR-PK}*cfj|relf66{^B-wO~wDs+RUfni$D!~74ec! zP!SE822qjv2#~r*6B{OfbcI!+0rb|B*rlg6;;9}hm@m&(YtXSaYC}acZ0*L%E zAkeW~E87cDjprp6wHht&Z#?4f7?_3ED<9B15xK%Ee1*Q|`1Z0}%-|)CM^bx62{H)} z0IJ{7IwrT8itj)kHv|F0YZ*v^dFz2+DJYw6XqWin)ftTGaVS$TRBTAYB+$rY;lAtb z-wD^wrR)zwHjV=swxrEYa*AYi&PH><#6W{-37`Q;MFn!^SHH?FL=*!}Hw=Rv5+Eb$ zlv4ePUrzWCipndo##VIVgt#DHrC)hX3e(gwSs=?x(QM$?b|+_TY1 zapnpX1A}j|A`384^k1zs0d0jnSI4X%8iwR1{t1uzIah_Sf#8>-MHpx~<2q*@mh@SW2%uzS$ zY{E7{U@&nnzj}<*#KdH7ILj0i)d67O*7%7}>V{g{W|i$F+WSJAZp#>6r#H`!Q$1>-(O2qpydX2@h2E4+JtGVibEkmXF}N=-j)I#p~W z@uhaZ`XJTP`EQc*#{FpoRkYQLoMDo&BE0hNJS(D>>T9_>FR@gw7D_>mQZPeg+{hcT zeyZxuNi~7;2(FAJ$>)jFXh6JeOgw;VML%Fqlsz|eMb+B-SgKQx58ZsNU=?;oFj3&c zb~b(&#jg_Y?<4kqM+uHcL8zcwiYW3tTD9tm0iCRDLcK{tn<@V+oKK0F;b1#$2wX}m zmA5VRGZJ9a`vGKS-f~i~dw*c_U|c(px;iD6@xp~+Srg(%)4&&-CIw*fWAE=R!zbUyY zZS3g|$m)=ZAq>`d_VaDqgIZetBt4@i@WB6E9`1~mr46RB>CDyJFxY6h1W2D~<210e3GHxa4k7;|2WIBPfZDJ>J>-s7u;5a>?hos~uu6 zAo1UU6b}9aQh-wx<1YK7jL%-cR99D5e#W=eJVJdu8?$&&?7R z=Cl$C%lz+ZPfllBvE5HH}60UH_$ zD>N(=tKB0;Y;Bryq4GO_0@WL0YUdiSZiq$-mks4mGJ8B{l-Bwu1_e&*1xH=ArsUqe zDH~F?L(48~8dJ5=*lkWI5o~Q-(l&VEL3jY4q#rcY|Bty{giaAl8{`Kv2d6@T!R)jp zVer+OJ#-VSHQ8U1`2k+Ra)-Yr)N7P^&XJ7PDAujadm6A1;{=qj*TRLQpI>{<~c7bm?7{e=omfV`WG!e2ju(b=I3G4*_mQ;!OdA!1n|>KhMzmobl^yQeBnem!3_rZtNXZ+j!jeu9ZN0@aDDo=EISbsoK6)+8oJ)Qk4Q!Enqez2 z^F3OZ<&7YvZJ8pE#ULWF4HQiJtf}~kqN$YcwJr5H9NFM0%j|DYt^@e1A_f@kAmhsi z=y|ZZxNsB(SjSIDqcnPA<+tU4i&nKwFbHMgEp7va#!-;82E4>6kEaN9rGP!v!>c+R z@;IE;Hl>n|NWz2_zH3#tjhUc)fHZOEQe!zLOR11d%8ux8P3FqH6IMqzkP*YhHg42ee9_{Et&i%05Z% zN{0Xe(fXss9Be3&v_|J#lfr1$&ppQ>`0kqOr8fWrBM^-pN8xen|w6tsLeA{a@^7Zha>mz={FQ#`XKN zCZU85Vy2v&NHDa%lgOOe-@ipzGpa5{3M~KTDSP)-0zpodfG3#r!tfdp z>hKs;N#}9e%yHM4k98PsLgLV7B4sHBxh%%Jvb3r{p@l@nl1HYuO^Cc{VHH?ugkrg?@a-pXQQGuKL;)r7AsQpTqt+KveBZgR`$8;bruG#&(qb^HG zct{_Q(;-SWg9lj$2@@BQr3sAi8WH>&HQ7I38lVj+FvG#HIDEx!ULR6lbFBYA16`2D z(%yB7L*`VuKj}?NkG9A4^6Sl=}hAq zKRhDX^;PI%xd`W8YdKDv{@&=v8`P|{o0xu^*t+&bL-}!!jt23PePCz&v)&L-wQv2~ zIO@F1Yjmh3zZ7~d`Fb8O&iXPeHj{@Kz=K~H@3b)6MZ`fsv+Zcu1@G{V z>$W597zz8WI0Yo%?1qI1`2ld4uBRK1T!xkJh?Yw%bMgLfd}f}4-gLka>pNb}q5gtm z5N;d7Knyr+iU;9&D{-?}>>WZUimA##@P{^=}{oclm*0o2YV=d<}mccRwNX+sW{9&|c zM*ZRlMTjZ6HmWzhPaiv4%HIf@mg1H}iWiE1q+!Md#MARK>pkJQhU?-dBg>LI{*f^x zUfITzI+(@!d^8`knz0zvv5xn?mmh1*BIyL?4yZ$F3fX%7uc?6BQZb$zGFZ0s@sfSV zhYIi27{wyHhcE^@2~4W4Dvv@&;b9hf_eX^>he{l!%F3^8EV%=23?d)hjZIAk2{_kpIr44$9|dKl`j z81+Za(}z|OEW)JnhbQY}q^M+Zyjk4aPIMPK#3+- z1j;?>joTl-6g5L?r%)faBR$syZ;w_yztm1o)Wf0k7g)DCpS?H60~-;%(YD+yx>|Fe zgs2G_w$I#lpTF@nN}V1$z%>Sf2KCQIuMLZ;gn@{Su14j^9tY7`dgHQCNys41X-`G zuCR5F7f#{-&`EgKgjad;>g6?q1-BWaw0%txzxk2B?2mPvNLelZrNR>z0QRMbpL{W} zR5dsJ$v_?O8~+Vq3?T{$5-j?c3CGCPrYn}Q0$X3ZZ*EV#aB6!FinK05)Y!tCO+>Pn zzqNZ8e{N^Nz{*%4wqh4w0T;dEb;k=u$tVN+CMzgdE?ZrVqS1kbK!YHhO!ZIs3in2F zTZIu5hs&+#68m+1MQT>C5!nVo&H-%(p`TRUppt`}3Ap;V(wa7PPf&A-8k|CP;540$ zH+@6vpih){;1owIQvy>3eU*p>dx|)S=^m&Q-hnlU1s0%DyW&>%3&W5Oi&UeD_4s5i zA=o*Vn`g>zB7zTktzYxGk@LIK(ZZ1;g!_=G=_b$&2|JjBzdNVUh&9TqyyV@I59tAU zx79Eb{0c+qO~TB1Cd-DYx;tYkmTi_T@!mFtdifFl_BCZLi*w5G*H^WNxtuky9F~7D zU=?1`Sza89I+RvLChuuVtVB zoeE9<@8Q*M7dJn|rk@_+jY3z3b{y6>(5rBxoe*PqNr@4kGc9%Y#6X=g%B z8G4$?PAP8!n-1L96Jb8O86t>xn%-|l`oX0<$&SUk3 zqAh}(r5a}*sW|g*L1pqDb`&VfXHN1`o_9zbYxvXuQ zzKK{iJiFsJBe7tLCmyw@)aG4!1j{p%H8v{q0#%jG^`J8Bj+f?FXY-a@75(4ryKlhm zKLG=idb8>=h`s^tOGzp<=n|4Ibj@}L2w*;PB3AFtTromt24!K0{?n6Rcc^F@}_#4Cd9yC>Kg%IIZOxE!t;t6Ef9fw77y|Q!*=)d z;HB;c38|L3QIM0z&=7jwqDwOGAtO@=z#3#eLM@;yBgI)w+qQ3!;$q5@9w3(WZPHC= z5uF6yub*qG5&g;~;#;V)iaeO}#h`nrT?=+1IPsFoCu#@;q?d5-4Xsu}Z35*NJv&*H zGC%YRC{bY&i|AB%JbLhaqX<9JUn-0sQm-a4h7Ai^SKZUV( zRvqyYI9;~$2(>Pi z+Ae^+`#kI&7}6D>z`EcYZFoRG*894PGmJ?gJb+@lsR~~g*aDxZ*(Nm<>vDj2WjWVR zQFV8Rk@Wgbw~icPdz|`5QX;^BU=_+T?>gT9;i8b*7hUm2*@`XT%I^h@xbK^!ZpdmC zemJ5~_0L3JFP~zR^EvQ@ykvZ`Qt$y0b$Krl1^yR+$Ed5)1P4QyAtN}ZA|)k7>n8~) zb<)X?PXXHmflhjpW3;=w8}y@Na4W0mBVEvc2#nEO0|r|3Y^8SG|{Y;~Tk* zc=xQl5dhqxG7H z$@z-8<%qZ^#)8Ld13JH+0QibEAy_-VVC=&=XUX65mEI)m$W5jbd52XFos7D!{mHci zrjK7sxjCI5zHTL&cPH19^)`E(aMWSd9n7H`zn?)1f>K=JUX?S4KkD#frf1bAXFgS7 zvp-sU$Ky#R{PQH$k7NWUIIC`C=3m;mlMt5z5F6ehnY6TMaWgrwAU#_$R*>;-f$Wa1}IyB)7CS zy3o$R(Bo*vwQq&p3HNde=OR<{-s+{|l~@PqSz+G~w;ziv%vIevmE7aP&D%}cH!esP zXdiy7#vjxzK7Rc1FF^dazkqn}UM%;h{|*ozkw+l}iD%6#q4^9E6u5N&w$-G|+4g4x zlWQ83Jp9kE^Wa)}e&z~M856^qlz{Ya2Z3ogaiRcBN0I=lZ_XxwnErEFsA14f9#tyJ zXqzz7bT`n~$=hXf)I;fP+!~b+>+-46Q4ax(__(im^gO>H%E(LaOypp7*#w-G2?7RW zW{Y1Ri;lfh6H*>UcpU#c(o@-&9oQKMh)cp)V+M)9U_`X>zj73!e?8~lJ4)Ks*BQd? zj`fP^75e%Knt#-h7&(LLV|@jrm6%dcq}O!dD7?yb+7J#Sg4jW**j2CDW<;OI{-D8; zxrSiR7dn7w6o29C6dBeWh?kHTOc2;RL+nQQhN)NHP1yTMmA~1`1hod{$=`nsq-Z$o zTbD> zA>sCjn2iJ%%)eWx0VWkN)8fHFscjs0Tfn8uJw;x*rQ5vHl2wEkE$N+T9#g#Gxw>R< z7ED)>yeW-#WuxZw(c5=>F0r48_zD4A@(ZuU!mn+?0$Q-wv0T?|Q^A>)YTY67zAq$L zpynHoXm&@h0tywZDo=8;sd=DgMAk$7X5!g)e-IZfen6sLB_+Q*5~@gQchu>+8C*xq zMwMCxwm&_EVZq+o7U!7|(E`=~np5G`rwKlOkL|NK_S0S~Rruy|!}wmT-o%8oO{eSg zY4;i#E>(ox+iy39#SX3;$at7o49@WjI4{b=?v5VlIay0wh86WE-|(k-|C}eTdB|Tg z%jH=%kUjNpadR|lF7VL&`(df}v7f6VnQ3^EXAzu2!HW>E8krosOW^lULJPk@=K7<^ zUjY(F>54da9ydD?bCi))I~EqR-KPKok(e>WuMrgclf~Qdct$U^HbtblX{A*?mhPbjn%C1!e@-dEWm+!bZ+4YDxQRc`8=vIPVW>if<&(vd&py0Y>yYvAvL zn&kosh`K&hqJy25Sn>-AtSS;nV4G=hxm|k*~#EHjR^63d>AS6GGz_x73o9f`K<_UBEFbQqBwa z2S?<34oo^)yTvpPSN5$K>t6lBG^fGRWFt)<&sVI-sI@jsEjO(bDR!xelZS2xL}Y^r^qx+1WAN-)99 z5cewLgGATxBR|ZhZxQLUFB<~FS!#1W3Uz1>a2lu!E^QZ1N{z zAY#!$E3aMQk!9ig($RmCBakIu`FD@*xg znPL9ftD4+yXjU+c017=}m1V`lKgDsAHQb;2+XElcb^Q>y{kB-s+D+`~{oDzK??B$p z?3xNwB=`1d^rmkK&Ul^R6Rrw;)3n_zEx{>_06Z1ca59@ld`TN;_apZogis`=4sPzC z!-z&QX7mZz3zSjZw$t9Gb>622VSS0yQ+sTE#N|=ElXzLo5z=b2HU@*#Gn9s#@E;Eh zgA=gs%yKI;=A>c%pf$zTj58GKz)TO%Y>_A!{leu}Lhqd}_7>rfmZ;8%pgm-lzG0G= zhY&V|3z^d3xs)86)K++y5u*FWTiy&#T%V!}XvIDMO+6MbZ#^`k~Wk7{`G zX$lO|8~>J8U6+?Jn(AV{+#)2GdK=?(G;P=DTB!U5r&Qm0n;9pQ6CI85-tIxN7du;6 zg1#G-`8Pvgrn9^JEAAF{FeGV&HdEw;6B2^lWAp9QhOVYF;+expz+iP=LvwICMCWP6 z#gl@$%+LRbV8S>}6UeahKm1x)sYwn`Ud!{&Xxon!382WV&4Dn2m7<8}HIP;mQ}Q&) z7H3CB%BiMME-2haT!B>1Iret=Z`jfq$6S50JBgYnUqvzrVA2_;o6mkbH%U3j;SnZB za==PNrgbnv<3g{#srY?@)C`@<+SV)>=4X{i-r%qfLK}1o>hvUDhCPV_Eu!BnD!vD zX%zDbSl=#FlmZH;^DQh_H?VG+BduHT1F1fau|e}J+bF~Ug?gk-coVNrsXW7^d|tvG zY>vULj?9h^OPNWnhd8)3+AZ_mI}nRS`orWu=m;r0bW@L3$_17+CoLt5cXss0 zH}kJha~9ntc4>Y+^;kZ!4k~4hHo%$*2k|X=2l}nvZ%X_0}Pb3d{1!ezVh zSH*jQl|?Py^%?IlsBUV-QlIKVCP+qoifRy3>3u+$)=$EQ5^Z6#y09U*_qv1)2%)eE zjCx;qMmc7r8;EV6LkB-R3_OHzXsXyl5&Izojfbyw@DBFscenFV;iBO+A=bbJ!C1>- z;;u&bis*jk3qkhxto`Ii_6=sx3Y=o#R7+G9x?{ckvh8cMe~?41bH}Owj=ekDJER6^M1Xc9!rU2XHmD})M$7>qbf0FRi(On#XWWl2lG!bkF@f6T-fp{z zObGH4P)$t-dGQneE2ElbpDQjS?e@9X;qIb)W3lo2%-Ozg3=KDmLPGvaD$nPn9|I1; zj9(V!CdbYgBqDSH4&Wc}&ihVQK(7LVDvT@&z|rSmorD ztTz4%=J5fV;)&@ZYu@!|^eTIg2}rLg4^7xQic^m_|Bh=Ql1^O2%k9m8n~r2U|Lt~v zOg?ogx!8B|26fgB6NolJdo}OPJ$zUf9^qq!FhkV$7mw)Ee4WjCuSNJ10(D-SXG^C= z!INfNkJZXdrQu^mspne@lY#i(SHUDcs=Gv@h;6HK?vnWUrLINZ8$9j`c#1f&-zZbK z0hXk4Pwb1EG6sAf;QTy#Cu?{`)+AyOOyn|iN=#ujRZ^&uBe@HwTJ^QK*vhy|bvICj z2Y$UGkF@LON$(^HGU;Pwx|Ge~)+9m;1@L57c^IBOMtabIFRPt%J0?*```fqxiW@`| z4H4QJJ5zU?p35DGd^z@!^?Vvrt@|T2^n8*B183l!ZfE!C4nz-RTmsu7d{ON_LkwnI z(_}!8GI6xnU!fHCsEuGNqS4lUW7;Z_b1qMK#;s52Ek=F6dQE)(uDZ)B0&zu&89$Ve zsjTbFRZJmU+vma+;RAnj9q>0wh$K3u5WHCl^dj*(F|7PksKS>ccVE~aRzvwg_p)2O zkW=X4M3gzMqtSU^_0ROL&)Y?cC)J;Zlvn&6#7~IcSQ`(8041DmwU}wpmzee&5-ZU; zrhzJPZ58}=j&PqxRZqJXE?GOz119c^Ty&%9nT#$G;2!IEjba>J2APhC`MMUiwM zsdVvA#9QxB$64z-H9sY@SMJ-ESS4%PC=fIq_0$0>`|vEHDbmP(tG|_z)2$L`tdi~- z1+}rBPprT_)IIclkd}`)ah{6-iP6U@0$7&^g0FtsstxA5Rdn!ZB<=D6bdE$Kj<#Zp zVopu-uN`i`6ZS}7qUzN3FMNEXFFW}2Jw8ku9X#GU?7`#N=GH~hiuK>3jZV9)V?$|_ za&rs26TY_N{x&n|2yn~bdA&gUokSt|w`vf7=^*JqoyJ$vey*Px7$ny6o(!vol}+(J$lU{#uVqcVLO)7O~>q zrqJzM=b!oLFRZu(_SY&nKuiAjP+hd^hN1PXb2bachxC~1x(x{}t$|3^T7Yr{x`Mkx zyh6=>K)52idUr(wOwV5530%c_w8*pv8JcH`-pB!bLIyq(c=Dkxix5~*tmjJ0xPzH$ zjff1SUOZ@>*9$H;b^I{w2uPg!W?TpdZpTryYP9GNQB9u)PjYFD#o46e>Er5+dn3YG zTnVcH`P!ynp0dFL4lNRGcz+Dl=k_Ea^{nC*TOi)#Hxg7YUHkRR!&+x^j)=DIAg9a0 z3`Tr=6>EVbTk?sn^Gt=|BJ*n-5@O<`=e#zHm_rOR$_5Usilw?RJl2+G{JD~4-@9Ei z;ta3oybsBLEZE+50km%IEtc_$1%iR`rE10!%>66QIZ6E=W*bEAiS499XNk=bGCr|C z7@723V&5&R)H(D=dIxxmCS+6&9mpK0ysVk$WR{ARYcY7HXKyw6b?VJcIt|FNOg!XM zSBel4%&OPM@?KY`Xs<%S4Qwm9U_0Dd#W~l>CH+0)DX!k?v6b_FbgX z+dljeQSBnxw5yXl87q`~+TaXaW@rm}tbeHz*J!pJMHU2dqgKKW3m6m_djQpp8~d)+ z%g~nl#c;F+6xT}vB$U<;BbJ!=@g)%@_)l8wLGJHDm;{7GeML{MfMrhDt_n5`EwLJSLFbBrW6 zTgh6Yj9L8$A!k?Yy@Bm6zO-vYuF$Uo3~=2$A;?$OpZ_hr+b2KF=I<~EdVlC2X%l^! zdRGj8C!cZhN@S=8`Q}NbaTUVXHXK~&1bfKZ@(I?5rDg`1`0@|30mj@rJG}NVJt8?J zqTK6nA$N7CS)tc$%pr764tBWE{Ej%U-sOJY9v-)P(%*eJXGBc@r3am76OR+aDcM=U zq3pSVRLE&ksM>YfXL>i7uqI%S@OngG=ON|{Wt7z3ZlTu}W9C#JB(yM$tHir$-)HDJ z>L+Fl$LG9<1+C$rliF3J+e1hupTsH_PRO#SiWF$pX^@g56k&9IyxiK#%O4R8afsuU zi1+F-w5E092UfC06pn?Z3Wg0J86RAYn&|Q%4f9f?91{)+kTP5@ztE^2dYpovl5vknX;^Y<>P@xHrWS;g&%eQ^Sj<-DwguY&| zW`qkt@P<@*SU#PIA;G2-bvB&nTpj$0yo%s7ZQh_D$?0EBD?~G8%`l}@cCnu@r(^=h z=yIn{HkD0B$!{B%%avdIr+#;N)cQ^ur9uYl_|vS-8snl4*mj$_{K#)neADIKQ)S)R zPXw8nE5PDDWD5a3W0_^LZa63s;f-W%uil}533MGIDKqvB!+Lb^s(wD-9(e>jM!CAf z{OakDFYZou{$;9?DZ4E1Q4Nzki10bBH~i0sVf zuTfAC%yoKZrf!bdOd$u+jCvl|4b%ELu4c(yqvV>L`xqaIV&*u{LYm1(E*$%0&SIN6 zAPUz=z*&!IDvGD19*Z}j@-_CIsWfotHyXAzAHay;Rz_BoSIF+WRNDcezNpZAOLMjX z%awj7d*LaT$p!;gL=fDY`zfMLB1K~81tzV!_Z<|B(p_=Ij&Q_*bj(PM`n^erz8@2? zxru&=wFh|wEP{cJH!t7BHgOR(Qo~|5kky>dy z*V`OX&j_PmRjG_dw3M`%5m>uMTYb@xfc!r4@nT;^#VFtXsnWQ6{N5F9DA5$d)i}On z_ry2n!_tLOlol#uB870mh;V9Rvy6;zvW#VAl%qCZYlwb977@zAws&F~t*3&K7u<4< z);)ddhqD7suXdKQwNBUG5$dXXD&dsTPxQgSX=q$Bh<*(d?2DOAb_IH`jN01!4~+OW zzfpjy?RjQuwF;qUHe20qtWxOp`BFpD1 zU7nCdI0=P}m=l>FXVcwu+~l`a4|QH~gh)cg@{$W7i5L8oN$laKuyr<}_KnrKrM?6f zi*pKd&kb^N*fps&`pI6c;(MKZ_IGnIgLM%`A6&Cgr zI-|a38MdkPE3>4PgvpV(aXM%Sy1V~PbnEjqiy%% zX+>(JTMpdXmPJG!GxIfcirPz;l+)&Cg0%0AKmJ~UcD3)>xsPKQ1V-MYQR7T|>=R(F zZwb87bglFMJM5+@HnpMre{ zyy^%2GynfG*tcdZXWO>W9`FSZ7AW?-EA)Br@_IklTB(QTVIe&LtpE75HI_vq^(GQ~k2FV=nO<^2^Xtcfcpv~p)nfMNFLtXr%?AgFflLX3Ije1WGA%;dFEJas z)P}u~*dq=F;03%C4`#v;MHX8j)l+!Hj}-ymss8WoLakAjYPH%SCM)(Giv=6}eWgWj z-i3oD9A{9>&I$Rm6C`f?PU$T5<5t0|eVbTMEiN#zpqDvlyEzN$@mAuRZRhs-Xi;Y~ z_dcmcGA3I#zWoQiIk+B>e8Ygm)KF~qho|OO6N8Ve7|lJ;Hon1mZLM*8e~_!MbJmA0 zb42k8EGpo%GQ}R7lcyHMZ4vop`V4Tw1xnm|T_5t!G*3q*Ri0k}N~Himsj)ZErecz_ zPV3{T9jyBY{oT#zmm!y4VvS@JI!kBGq^HJ&eDwtsuAgGFY_Swy?i$0uzSH=iX%^q! z(jhn@ACvJT_`vw3f~hyfNDb*CZ-=wrB@uK`9yX|4IX!=~Ny-m`m(PgnG#egZ;ji}- zsX*-AC%)N_P3^8}|J7%e$k;%+&1~9c5qRi%-7ia6@_Bb}nH@nMcffq1A}b7;fG)hH zlnHR@$KYTNrGw5J{Y_b&4_QnxO8DJgslW-ztje=>Yq*04d;C1-5g}~CfqrHrGn=1! z@1Z{~zjv38qqU($-I=~RoagE-V2e8M>~S}XKq)NYt}pQfCv(}A;k1ZJNa(a}e;P`@ zt+$+nkQh2X1_lOB8gVRAk7`uKP)a1JS}s7qrg(i-mmcgE3tgz5J53c{6gziYv~G=+ zc+|ZGT{nZQ1vlK|pMaeN_g(!V#(0*LMQQ4|`XQJ8rDvFvUMVp8Q@bVQ;sBq{rdR+7 z03K|dx5S)>aL!wz|JQ+!?rnVN^IXKul>Jwvt95@g>y!W-aDnh+6!I28xJSB28K~QW zxljCis^Y<-lUL%b^lDX`T%X3UTCI}b-d=ZqGG3t%_eXX->v(6eNs`Q&1)S z$&(^4`AvSJYv|b%=&gvX=$426y?TgzIm32TD^MI$eN~VN6512NMFiXXBvJ^|($P{Z zPRg1Fz?oR8_KVp7rnOqX5jo((HMirj6~HorgYedW`8+kw0;;5lpA(?6eaw75ovSm>Ws-=q%Y3 zH{auBhO>_UhK)^QNID|`uG0G|@Hzc0?W{8zGiI7~9O$#X2Vj39yCG6;$GsZmEgf{C zxY<^Qc%IOB2$>r~M0#ixCNsE$#YQ;LVEakbk?{Ce0kg6k!-sxtYXRLRhnUpP3y{Tv z@52ptV5ayaWE}GpzDTX?tr~4yLSwdifkl9Q2|>sJ?hdz2saqS{%9fD4u1=&{ItU;3 z)`9h>o~=tWQyaQx%ig3_qSGI!mARuZl4q!4v;EH_gjtRs`hOTrSA}L+7@dD68gg-A748qtFJLvDrO7&?uKo(};HO;P2^?VN4M3NuE4nL7pzno09 zVqc0mZQ_5Ozv(NNiSK_pVT1759}wmvF%DRSJ&ZV%LjA7oquh-o^Udf>&TDA&xZ@^aX^PjYPoL|J z@L&^;_lz)XQ=w_ECXm43kJy!Yp{ z9xPEjDAE0)+x>D+4f&?TlR9yjmnrVu6LgCC=FZ`^7F0&wqiP!B=*&sFMFfeE{!7JY zHc0XY^*13Lg5dYBd(CZUDi{_W3f7apzTphE~G^Rue{<#EN z2W<3B-=-2SuB!i4X4iFokx3XBk1J;B$e{3yNQ?b=;x)KJ)Zix;e1W9fp&h7~$Z0-D z3+4YU0+Qx=JvkgiaDp?K&ZXdTu*8s3XX|M?Z>aQ<>9)?6fo5%;=8HFy^z71kWvzX> z>VeR*5ki=DjRYP{GkQ|9v>YaPeE`d-R}eP`QQk`*B-PTn=5M7D5)x9dIt>~5gLGmw zIoIV$UAA>2g5D+N^6*1rML>j$t=*HBnwF?Bfr5g9VTEmRR8^f$+vB%OJDbYO*T zVa%VtDNdcF>)!SJ{CxjK`r>O9g|@3=sNdo>3oTf!pEFxwDC(=@t|ULtSvt>ts$#>L z9XI9DP~Y?ey_EiVXd3wq3$-~yGO_LqO}7`SdoaUghaX#55c&a~EWryt zW{^oh*!Aker%JsNG{JC?lhz*7?R66PgAgffq5JN|*6|62zAdxLn|&;MtIgD+2UZCn zT`t8K?=PCLNs#)EC|WnZ?|l!KiD4lx7ty=s3>4+pJHT_M>$Qhp+ql0zbY5ye<~%@v zVcn_-BfBsh$J^c!*hSkD)W~yuPD37bIwMLV*iVfD>Xq83ds}FdmHvLu!XCRqS;Dpu zW8}|^e%gAVBs4dEju_0*3HPt)LW#Aop2ZH^Jnh-@Zd@>V74&}E9+gI8F{P@-dmRqD zGU8Ti=Omqr!zReDhrcXg91Gx)0_~c2-P}9il^9Mfd=@XzK>eO62KG@>Ycc+R_A^M-C}a*=B;Co6o;bCF05 zzs5e1lH?NkKXzD`)5}W1U#g$y^^Cai%KxC3Y*x2+)hIj5V5=M#A9*iM0Q|oL8a#h# zuaPz;I*WU}u2W&aGhB@8E-poKO?yNk1>USjSf_SoWM-E*d)b*o^*u_QZz>_*NnWFhAvimedL^pG+uONBIW01pC3?h;5zD2B&z@ zc^pP^bi(i4k*YuB0Z6>buPv_dFAye%wb+4dhHLT|@0h&{#`;C-HsedqF}_;!estiz zRrvdVR$*HI{XgxGm#)Q>Ae>uW4sE9~-w?;+315jS;jT!2Rwmcg8i(Loaqmw$MN#YV zI)D*hQL(g-Sh~C1XEL-W-ZRnmze~*lw)r@51z|x1y$Q5hBV8T4_I+a=eDU5PA`^3T zz?WZ5?s41ObB zJO=MYM)pZk+b1WjcK`r(t8D$SJ_@)2G~wK&NWZl0{2AsolR6VLGfgBg8}v*pWnKrF z4s>+=0p=JJKTh%Qz#ac;0hT32E#*j#^gGSUt$W`}IC|end>%_7k~BMGNj)o{p*mzDcKQ& zj5i!5w+SbQBZ` z+0A9A@HNC7JV#gJ?=pzKWyS{ApCJfciPG$R-=nKX#JPF6i& zX&XN6Ph?fIyKWd_dEd$hz@rwYlMgGORQJ%}ak6z>8q=E$Q~QK0EJ`10_+CrzuZ zH-n|a1QxdCYoAA+L@uB9#xhm`Ox+Dh8-&F67D*>CF;2H!$~C8r0Du60Czr;{P(utC zax5urRKUPku)5(0VK{i5?o~uIAskjoDQCk^RQ~4PX$VYkrglp%W4*$?WcQPva>k-x z=C8VZb9~asYT&Gp(7@0bm;_;^{tphPo8ryx+rgO#=qbWA86r9&yx@6GKTKvf;$E(% z01yU9!wL>Ro)_Hq8JyNHG7=ZRutfmo>}rBeWQ(m-ARGGBngUFN@qfIQaywtK%MTw~ zvLo=A#swXE5oQKADdj1HV_5H+&a1n{9q`3-!hJOaFUW9Ud*<0`QIinGcP?^?ok_DE*x6SJ%T0^aK(TjrH%>l8A^MN?a8@(U`(I?S8T6wN$OR}$kHbT<^qIn zHcapJm|MCRVz`SL=~Rd3laC?+DI?IUZ}2}&*gI<3qkJ0N%J!qhX!Ki)Fjc56r3iuJp=@BApcUy@ya@PaeP2}=w+);@J?LPOYx35& zz(YR$bbInXkzPz1V;@0 z-|ARu6bbH3U!>}K(B2=p3b(ELv4A8I8w{b7iVN&2=FzcZJhG z>n#(g0#S*$dpD%o_m?Z)KdTsZT*K_Cy=*;sY*1UEkX{M9?|i>OSM_0)hjs1y#%&;9 z3iCS4`T`?u54jXiEt`0;LF){>yQ+Op@3Mdhp49I*_FV7@?<`+(lP>vF@8R4kEsvI4 zC!WT$zJmcG)p!@D$W!4(%&Tzu@z7@B)H!b?MquIYg}-)YcU%bEVVIbsFZG86&?$>F zp2@7)DnCxeZdO$t+wG5I(b_>}tz}Fb>1onD#GLxTbHedgBPK>$K^1Ph3nQ*g>dJAf zt&qEBsKWJh9O@$dGAL6kWvxKLwXVags89O;Qoc1kwNc-kCPQOcFGt|9>;RFK3y4F~ z6Jdyx3_n<2q#qT2t^RzxL4m(2^={04MBa$JENpVD1V2H#jeJzo(-mw}O<~sfs;AUS zer~n;E?;~=sq|C({LG45=4!$hj9vjBW;V7769X>m^$xusf->_JT9;ehMaai%@oce= z0q8>ZeQgyOWZt)V=<82S&l9yNX)8IdScEZT!s7s`r!GwG%RKm7y~M_ZByGZ-5_X=? z^IeH>cGC1lm}et)IGT4zSJ9_hN<}H!RD+KZoHj|_1F;DKn zXOVmo4~JR1-O0$uw5@0B}s)nm}9bq5>$EP zE~@MHcY4$691fo;o1IVdEI6?kTXS8E0zcT0qwzV&`?EjoT%r(YbKd^Z8QMP*;-|9# zqo)b@Jj>DfY^%egLXAQ)ROq+g9~{h-WOQ0~Rx4Nj{v#PhwBAQ=*F|qFN(K6r&Q*4L z&q4^DzZn(jpPHIF{40mU`e{;plj$emmY^TiunVe9Me7J6=5y%vnaCD=)@ic6210Y~ z!nY-WIc2%krTS&6KOUaseM}KtX_?x(xuX?<&pMZ z5at5V&cDqm12n>~hblv|Hpx8KMt^@JM4uY|<6U}B(IXEf4!tJ_{gjg1m+07)W>i3> zx?HuIQn?C#jr!F@BhntApl3g;{$3fwr{85ntQ0c)3t*KmG!j|J?@4N9Lmja5{?Rzr z_I;3|z)sTq)bW_F%cEnPr+6wdpo5^*AW0$Ogk&z#pUPz`Qjby=t2zOXq~sm{yaMeH z1lp$8-;re$@7JvlFeOO*l~y!)M2|&1IZV{1jvRNt_pzO3BrEhe_%2`7@I^ zssLZNH|z*#`d+v!&l+%D0W=f#J6EbY1x7SU?)%oNk=Q+AJ3!GT7;p?)g28M^z^&jmS3j#`zlaMOLiqQ>8KD3dAf2y zDGiz(J*?NcR39yO8cfzCPLHr6!9hm)O$zJChA=TvnR=*x)r=Jbx_&AkevA>lb_bfo@3Dq zbybHdo;}1<*WQ3diCvw1{lfnAnqlYmIHGBBAhbxI8r(=PxOo(ASCCBG-hZ;>+Eug^ zu+5q!YM1$fro)^B&y-yK@ba$6p3oRE(*vwD0GN%*&n%{SL<4-o;g=J4_T;yM`*=Zc z1sn8Bcy82h9$TRbHsaZlwm1;3==}8dbB3!N6~{D!Xlkku<>{zQF{q4XD3n2I*a5kk zLk2P_^e%cnf0%VWKhDvs_b$#oWE5U0KmHi1D^VPU^F1$vq|Dd+m@gVjD5K|n<&x~( z;E0H;hbVw@?*H2Rq~dX2bjF0kmTVV6XZjk8IOk$+l;p+zsY*?Lm!(JW^1{@aQYBoS z8`gXoEHib{Q>589rIPP}pLpd;r|t~Jsw|_HMk_%d7-k-ZsRH)+(Q*MiE%o3pS*uM> zQqH&BUgFnA>Jeu$4fFo@mk|Cb$MZ6|ir4X`l`uv5Y#LvLP*CtPUJ@$X&)H6Y!JVaMF4cDsG&G-Y_LVb_Iq`wsmCKumr*5_>Pk?Exj$^YRiYe=TkKJmZvi-~!6S)J=g#Kirs&R^%*QX4tpQ!k~X#VaLr4nYgCI} zdK-XU%1N?t;2I*r+ELKk=NRimR4=Co*eo9P>n~84j?q=VKT_et4ED5yF%Uzf+vS=pRhY5MlJUv;i@tNk=c zJr~dY+nD2xF+3OF=5vyNC0Ca0s?uwv7jY8=Q@jBg=L|ToT=HG+B)(~BNOD?P)8#+< zLeb^XnY6+XuaiiM3Qq{jiC}?mSTn*Q_tw+I3p9lp`PjpT-fnTAvKWQ=qE0)DRWk9B z3Kh!myjIwBLNt&yx{W@?Zl(KtK+3+qOWqaZo3YF$Po}S{Cb!M<=SzFaz%^_+4TSs< z>5y2A1AZ60Ht6Lfm)z@}sA=nNcS~0HqFKTY-7*wyDubH`b(t;KoqRo?WQr_v>AXp@ zq`wxJ=*t1Ta>pR>7t=03G9=A7#wH`|NfQx8$Sv=IKX1Ualb3yF7;UJ%Rv6$P1?)aE z?D1bPT(Pf?b?ZLK-!+OB3^*Thy6QKsETAL1-fI2{^0>oAtx&yL_ITJc*&ipVMShCX=$Kh2I&Xo4#PM7;UaX9j{|(U)VVajiq$X@I5S8|shN72^}xuKzW1{WGx`2D|Gm+$q1f1QDa(o2j1W;L(-#D2V5`d%^o z6?IW?X%q$7=z}xcTdDyd;Xy=Ked1pOc7mgGuIe|uzK1DDJiqROeg65au ziu~DoTnzm_g!CC0oyJq8e(-wJ3GJ!x1;&Q=P%X|I(yz)CRk}$GXZX5)%J%2?sKnk* zdY?9&J`lpvY*b}&_;fK0kh%1R9`jU)BOuzci27-svU-Hn=hUb}6+hE48KQ8a=rHx* zou>R2PyW~kiCiSdqJT5%2Ygg0w@#^ll?nV=THA$d{-U1+1nQXY5l@V1M6thN(iT7* zgQQuyq7Ikb{Xa&e_`0R?06WInJFEAu4Zf>i>4F9ukP;D5F;0v@cwQPSJ|j5D$}RN!u9he^spIUx_aQHxe-=YyuJW3v~oI+6@_}a zI#!ea+S}xV0I@#)x$>7vweMn?cooqq-U zq2U)*n_)OrZZjr7EZr5!9(%q~qHd}$-J!Li=a)G|ir&(An^OPCU&0ChOW8u7nIBA!PDL2xagFE zf+!2Z+U4Kj)H{!X=V#}j+vq21b#J>q^1;KEZLXMiy-o(Mr#py1faPBE;FQw5}Go>>| z0JAf7_^5aPe6)_l1+EDyw|e8kPwc-cer;T4!Lw~6>a24HbYV~Ai-nw9omM>6u3ApT z(Vf*_>AO-wt^bDPgB;(qzv7rn9VZN9L+G%+)UXtZ{MEdX?tkr392GO)6#zeAZ$-Si zp(dh+#&+vR*j&^F05&H@LTW1u)uG7^OA7UpqosV9dKV>}2h~0?BP~KVH@4((Dou)FAcHqhTUX^y?0&n2h~k#{jl7O&+*>BhMAp z;T)Nk;l_LwM-4>hiQ_0~HUv#6uQBM6_un3=iqS{=!K$FO$^)r_qX)u|lo#Ke@^KP9 zL~|UdWs(zX%|=4)^702(k?srCvY}7AMb~G`m`+Y$6-z$e83_q`9k837Ceo^ZF5x0^ z_aV*m5%RuL`j(q>yi%j57c*&f70iYN=&HjAgDhEo3Jn+1zj)k=l<7ixlh4IiD22?5 zM#OI*r~-AS(AQf;l`1|A?CA@29bUH9`)us3s{ZC8r1QFep`G!0RQEP$!-jiuNaM1~ zL+NF%k{pwY(8$Z)iu~K!2Wat+ zrsuRDs=?^^T``z6O`_A5;GAKbvVaM<)ez$oAAfAd$SLp59AB~`@(YlO-`78xEP^m? z`|rI?{yyTUQFZG7iUewUO8=_O`?ufFRzNpxF4>baik%Eg;DZ(MILbPB?(7CD!^y%w)@HvGY&H_8o z0FL>o@&xatMvNrT2_YEPl5lx*p|(h_N31%TDP6X%II8a@MA!($I`-Z6{P$A-$uynW z#_q84=#K~bmxY>5i|K5vB>iBu^WJ9otJjpE=#7TA=M5SEZ=c(rh)0p3@fj{BLujCi z8V+#)-#FMfd>VnfE#(m{m&PxFp{jd-bI6h<_8u|ccZg?wHqpxiy-R6{rE^q=)^VR1 z-`oZxHOdcv^w_E&Jd=_Q=}zfnvhi)!rl_!UQBQ`D_;xA(2NpX5@0&SPe>@;=H@PEA zEa!6`cpBt+sK12@rMO<)Cz~7_&x*7n(8k}~;^DQUQ@FFy zFP|ZM+~Q0vrBL!a`2aeH!W(B;1KV0X)B5$+#r!Q<0Cx3)B5k*fgjyy4r801Y`Ac`i z8pWw1O_6_glwm!2G&_;~IgA0#zrzts8xx3Y&pw74AoY%|6+NCt@!9QShYqRaV_ZH$ zRZ`?&@+wX5So@|zBxw!~!wlJBQ1MW1UR{y+e(ChAU7K3m?xa*UO&7HwDE_D#gyHyOCMvu(~23kYSaL7j>NmStK=YGoO4V}JVq--R}#mz z>I)R!E{<454!B^_Q!33+T3&9oZZ`}}+!rRTS~UWg6=#U;4NeLZvjr4?tT;_75Crp6 z4~@bw!DuC!u#YlYHEhMzyK~?hM>MMYU1OMtWvXB4i0_ zEn%!CL#2F zqNo@gBnm-~F#tP~h`>$imIx>RCK3Lm{*a-qQvMm$5+ZHxySj^11EKRn3ay^4 zc#({H(T4-}n~Ub={hH!1)s>yMzi%-l!Qb$Wm)WSnhej2AZZr6>Euw~hkaj{eAo_tu z@GUExfBC+81bl*KzvChMRb^0%0I$4ZCV*Nsq)IKZArV_j4#VogfN+ncmoq z#0UzsJ=6OSzq!#86jn=Qm;V5amGV{~RN#H3Tm~EudI$xP@IpeU(SqH|v#JJJzzh91 zhlXfYV5+vKes}(AOaGfit3&^FQ8%aYGvsHAH6ct|U1Qi+C!)6s+1u1PH)=zt50tFp z4sMZ{okEAK285Q7Id#ofcv7?%o=QjKL7yS(#?GFkFShmcX`dMv{h5Sm|EU+U?mIy8 zib7t;>@Q97bv6jNC^JLBqFSdbK0<3#FTd*K#?T@#0blV_i+^t~sYPth>90#U`8b1~ zFxeQXFEcRigg4{D`a)miOptHOEoSh)H%NXiIG3caCV<&on8TbEkO2e zJ5gQ4&}H)>X5J~lM>X)<+CxZ^p=4}}S;YStFD4n}qRMc{Ur5+#w&6uL!rl) z)X%6VWXJ^?UWNsx2C>UMIJr_=Mi3tche16a$`;o2>iek~>Mgs~$;2Q}QlRQD<2*{22})L1WkFYU;QG9i})K!GA(^!zo-AmkvJ=EzZDG-Q59h^b}G8ml*gq~I*dV#vu}BUgbY5Q~51pYEG41<5GK0nb`eX1rj%c9W z--}o>M(MNn+;VL)hH>Af-k$ZN1*ACBwpH}_VV<>o0oVsPgu$HRYTA3HGqiI2H>rLu zUK_!-9uf5h$!1aY#hm?CgirUSf7U$hp0hvc-JR?<)#LK-Io&4r-#)UV$MHL-XOj6m zhAEb*k!e6>0`F+nzqdTWvJoSPeELsko_Q|$ipG*CJr|SZ8O`(lNi?h2f$)Wm*NA6Z z;yMO(0ce+JmeEB1{}v#$#PCcja+bSb6r@fo6_%Uq!k|xTiOI8plSf3|D@^EuBP;fu z_+2j2TnG-0ytgYKw|o1f=HW!OnSLpej3G}#S(NH!SbhI4&(xcrvzu{T1j&~FQ1AHW z`YOk@i*x?&Enk4_({DL95xj&oV{gJBygW77-OY`4m+ku$k22rJgFJ=c}x6pI+8u9c= z!?LT&46~e~yz{6))ZZzy@sq#?fqg*V(UN<`>sw&Zps8+({3F|!qg!j8Z%1)wmnpkW z9||j0e`wjmHAjl(rbDg+4^;azbPEQ+%G`A&!bE4#(Wc@~OyJ?>AstQ3_oFdSFfv`Z z@F91c-Qfyfjt=FD+-8;BRmNnabP=dCfJglht0KzpyT=};=fs-9J-mn5K4V$sM$-;*o~&Q%;1+0GXmW4OXNq|7%$S=qkFCKO=(mb!QP zekzO|VH!BJVYVlnmeYF*InRy>Xy_BgS(z6-_-DVEn3fchRgxs7yYiLZNQ}z#u6j_h z%B-}r!X9!FYH%>#teL10qUXe^#P&m8B$u+wEWyYpL3MZq)oTUoXWQi^Ltnga^0_L0 zdk|&+4Y6fg=lk^slh!TKPqdEcwAU9v&XRv>2L7L!e;8fFt2X^vXXyRKq_+1C7m&wc zxTB*qEPU6=R%7)PVW@FObC;{Mf0&(`X-ODD>aruALdWL6#gCr43CHk1S?+i%cXZ6C25BzxH=m= z#nMNKqBUqC1sn_F`lx^{x*?nWNB{l+C8@)%xe+BLMBs~VfG+u=zkyPW(0H`Q zfSS>iJf_r<0xW8=ayc0uYyFArbJMZXn|{%kXxvL9$BBHETiYn*15k>0RYI@FI;7mLO#w$Fhca5NI3L{vpQ%6Ytt&< z?cY8I><_fc)LJbF-Jx2c7R$d#OQMjilGO{(qWY&~`=#{zUVrhS_&@cB7Y;8f`4*Ir`UYktQT z-fy2y9JP_H2qHBU-U5Nt*XM}RWswH?cWqKL6d1K}rUoO7HcNteRk#=wxb#Jav&l9k zbvF~zG8e^~r^&X^Oa1&}6u_dq>qq9W5J}L%X*OyRY~{D4o~iewxbJ*IkE$crjaC)6 zhuK+e3!`KiNC$FzV*)AH;~w1|9jhElJLGKgv%Sdh6Z5ESp9)NUdP9GG6+<+h6hW13 zL%FHa?q^OnH`t1i!xgQ2l+3%m+Y_nCP$`o<*AR1|j!K%}HY2HTw@1qJ#_pd=a=iD> zhiEKi3Z=8S#l@Z?UbUJ?PR5)5+WMQnQh80ZT|wmz0bs(5e|3z>0zQ?UW|iL^EK$5b z07B(2gL`n2afCI(bF4p03&>afWA>2o{>9MG{pwh0H^wmKY~VjPVy4yEkK%2yW}pZ= z0z1=WHyI*#I|LH;{;A~7sJT80g!NQNHt(Ps=^W3TcgCw4+>gAuTNw7~xT<^XImr@ena>MZ`cPnu8PgdC|~WP4SS!=$%@(xpdl0%047S1$pQ zJPJMuX!(*62vFu9b`AM1kw#tO|TVE%>wUty9=I!Y1}M3dZrLUY)4@ z-l*j+lHk`ZUfetqWy-qMRu`khMhTk|on{Bv#(Ab*`h^_W0UKk?`5aCZ+}{yM8eIvj zF3(VR&O_{rWZsf)@X=Y@YLJqv_;)$m+K?aUR*(vErDc5YJqCN&bOss~RVd%D8eh7C- zuM&V}K11Pc>ea$$l6;N!`Fl2qN5P4fsUJ2T5x=+1-}tVoRfGE;?@?Qppd$UH#S^wv zsV1M`r?y6(3T$cU!v)T;EUYWya3URLUpNky3%bkKkXBD3Ts1VbL+ZSC{-Hv|8Sa2T z11+Lw4(VWl6d#R@k?JS{Qm!1IiZTFb6TcB^S7c?%ap2tEfC8FPfRk!U5mok^K27d) z>YP^*W8wN#;9(W8u||3MD|`3XnqQN|x-rU1w9L2dlXg=c+x3t0`CbobsT8**iZ9O> z(8b}Np5c$#>wT9q3wk?235!&Ot$Y?R_|=*Gu74jwA|}3HVWBW1aw|Wh*q3kegz_0O z_PEN+5W{Tecf$jEC1E?%-f`j7@8NwKPSy=B*SyLH(3@rQAC@S&)n2d~c5!lP96o03 zW?XcpLr4L+*T0FI1I~Jcm63b|;i^n%q3t3`+s9-g3JK1;-lK3kEZOvyR0M+z6gN^B8sW7Zo4M=Hz(i{K&s)9IX zE~6D>{~6cuc~IRBO`CAZ&xxY3_A<#1Y$Q>5e41WjoNEe2Q;lMpHeb>@vqvV&a=(YwjWz~8^D@_8+9idhF~wK#A|-a4A1Pe1wZo4}odVdcap8SD|Q zP`?>1%iwQyqMevsE7M2Nkh0o`7EzH2uvZUfmyHc`=Tsijv`WUrscT-I(?e^} zRr8``N5mHz@%(_Vr~nmqebZRHu)KWlr4rS@_2-1bZoUA9l2A+6IrlFtW#y?M+w~}! zZ%=>5Od+#cQI2L?O9JK70-J}K@x4F>L#MybC5==)DBO#g>`A0lOt4>hVInt3^+9hp zstKSY-zya;&GRt#xFhX%e9onY3tOD?BeOM+q|I{R-C^aku)nledMm~JLSq{QPf_oI zj}4}!g^I-X;?>^4J+6__;uW{tVPS;}H|4}NMNi6f^N{@`pjV`K)3BxL$)D}9c?Rm* z66@QNmbemJnJ~)blAL1HLDdB>Db^zpWg41*1 zRE|~igNW7^+(F#^u*}!}FGOTa$$jiv+=t*-_&(90#p-zAGHz=Ya43_-lhS4iT@kb6 zn|5lnyiKtGJuv()hcnB$M`Xw@^EXgUUsHv^0Syr{`HMw(J)pvA+HfV#_*6M+f;2g5 zos2oNw?v>XlGh*aK+_U;pxd{1gD&mZ$91x3#6MXi?vD~Z%zxqF~Qd{wRp zX4vgM>=Yn1qCio?$uCoDkamOybpsRf!yU?V)W!SZ8Cy~+|?##<6$-b>Tx z#~?!Q0Sg~Y$$Qz&KL*jI5X`u`L6|RuAE0&1e>fcwUfZ7M=rGg$Iu=>=F^w zU_UzTl}Zts988HT-IY6Zh9Z}MD#bjsm9+^B<5e=#Q4?0=gK1y$-5m#pKvTQz&kd*V zov!}e(uCaHq-M!(_^#vy9CtbjM^iep!3lT%pN)LoJIImF`nh1aMjlD{p zA%65zy3GC85sQHwH87?Z*fOANs;?S^ z_z+D`XoR|6VGI<$xxAU^aullo5m*v`IRIxHD|rgE&|%WUcEvPQgk`D&8u{fO@5DyG~6gtD-9Ht)W%Fnt@ykd z&v0rubn;Wab_WHsbKGj~YI+N&1mn;Q4qJ|lHbpsInN?xx?2NR;!X1~Ca*j|gIn#~b zu&Q(Hb359a5K}ZNDQJ}Xx| z6AWGx`lp%q{LUEY6WqcC%Y^G*#d2wSz#Efn-|s6>DZ=t3epmxbTZ~=-gK^Gt%W3w@ zk@z$KjX@&&U^n)k{*~d*EhYk>zWm={V44@=21*y=>#uHpqnsLBo(J5A)IRc$IYTTa zOLCCr!VC?n(=H(D1MvdiR+g#r=tAVSw>fjdbe1Ehaa%n%-w(~N6-#d(Z53Q}reO^d zoQ^4|H;3&Z3u6LH28YAm%eihloN3;;4xTEl)?zyWJk=7BQ~VJ=qowVOY{ zLedj(Tr6ttkZ%+mRPoNDf(0COOL2qeRT}ub&LO()_*lr9?`UT&TW`Vm_yQ&q4C~9^ zGL0_bfvKYW!*?)WtuQ)l6eTLFJO&~4*hT{d#)D;;=DM9(WIH+SNTZO*NaD5v1O0x2_&NF<%S2tnOT zndW$jzSTbIm8{FMo^as!T*bGmv^+4LTgQOa{~uCdoCxd=kZ*B7(N_mEvd3`pMM_yh zTl$W{j2_c?Z#|F28D^PY8LcWN$DRe-^r_!Qld`79J4qFfah(Y zgw}U;n~jo$SBKR4pX{2FvKJnm`Z722yO(dq-UD!7_wQz|0Nl6vF$EZ=?2iZf%vvHC zJNDjhJd3*`oKPR$uez8-Q^fCFX=yS*X|45&%}qi=yFWDr^!2{-{X%MzcxF1^+!Mn2 zrBjG}5HmwbH0KoKkO7%`9>R4k3yhFcQS~C~^j;WG6-!G&-oVY(?OR`iVdM0?@~i1nKkVlcmVe$;~o1?wp%jo-;2-yDWD3db>NQNkr*H!666)^ zH82SMhv`p^W(ZNylj3DfPV+N4fz)b3qzS1^e@%?B$rbbv>s6KK6oZP8orlb;p^If^ zB?X1jRyMc`f6-?N4A>n0(nF>5O9Pz6RyC#OxvF}iz62e$n9;Y(gnG`+_u#v}x!IHi zYPY-lp8V*h~_gFSkUGN7~!#&w>Kw4%Y_FGo&G8 zV{k``@fa{hmN;j{t)G1}BIarsO-IZ>$`rDR-t1E|acPXA`CPYAmt12!0}0(>K2 zo3eOW#=Je5yJWM6;3}{e{oF$7bafU3eWYIQ%OX31whPkJkJHf2?PfEl z(cZ8rlGdBh4tRob{T~~;+l|N5k4>olAY*Jzu(|I)Wv#w6RYxAPzRZvtMmuqYdJHoi z1ag#QOU67b6E7e!Ab4S#tu|QyuZ)`Us>*)zyD~0?pj}#wDx>umagu zS|nCk8b9||Nf)V})VwML4<#XX?hYA6{lt2G3&GjoQ3^K4c&6rujR5v8#sT{zaeDTG z=gIn8+_8`6%*A!kxH)b?h10W*I7VkC1G4%YP>b&b%aT;-Mvk5)KeN*h2 zSX{MB7JLJUWpW8r>B&wLLCz*5S_`0P;STRZX%U^6a_TAK8R48TQlnQUzLK0;g(b!v^T$ArP=;FkBn_xoyqCC{&PZia8TMO6WA zY^8Sl<~@u3=?n(oNt?1~Bo+v1fW+H5N*g)Dw{Hi_H#-3FxWo_7BtZ|$p93}?)fu_l zD16@9+{Sg9sa{#1m!?Q%Ub+rl2!BGh)FJbUEDcyaY_d*@y7kKrz=AOUn+Y|{*z*40 znb2=is~D*vmcYTbK-sw6Uj0hqqf1_0aO(;}st&ZHeV!644l|Ek&^2k7pB; z-2(El@G~&cQE=V(_~dBU4|K0BUs)3mAq*cJ3jWzcz2(dYsp>VajT0}5^-53L1edMA zK?VwVyY-YfB`EP?#l+aIPzhH1K&SM2U3YS03V>M`2N!Ln|6!@R0OEV$dtD1E8^wh% z$A-=ZQIQlUwwLFP(ja9x#*zaQj0VB^uNNiR3 zu>8h!w!Q~81Td8&j^W_*A~vOQ&rgu3{s4DYm(^BQj&|IaDUm^Ayup5xq8LDrrvAw8 zQ-ir_zPz{L;)9XStNz-L?0qKaNwYmb1{s8;5XgQ@iafdTWt>N?cK?JytJWnEMGHDt zB)RN>ip2RTSuC$UPELu|VD~5>ZVzH830;zNWwvlr+de;EdMP{TopF_Cxaq{4^u-SH z&ryC1+w5b>-LIskz&E!eh4V!po#!+%=`5>r8G~ViIOnp(D@4T6B-a{~x8e+?Fw5_u zG+m{)CB(nyM`#U}0Bq&L{|m6_-*2$jNqfcnWy5kC>pIdu29N@q9RHc1^ZUYaZWsQQ zkcw!QAWh(8lQn4$Dd$wWpW5d6guA05K51NbtA~sfc6>jAyv|2m^5Fj)MU>b=&yPo}WE4@r1Q*-h;i@ou$mw{U2#B+(DE zxXn=W@n@|*d~#4jY%3zjH`WTS-qK%qiydyZJGYImk0cvXqa+h)?X7TVN*_MH-5->C zc6{hz4pup$P!R}WqUWHZ;QSCb@|d~&?EF59NYURF`nuJ(6`n^)&Rn&? z`T4loSbA4{$w!46S3JC&LhMTKsN}2>fFa=z=C&nLBHxSfX&0hVGfVj6f$)OMAA@_td%g*>Ouzbin&$F`zYinSL<^> zT}oWIC3DAj&3JI!NDwpH;la>1$s%FHKX|bj^COX5PVFW(gSLLtfuJf6^&@(mF}r(HQbU zaF|I4DJzn84pU{4>QdQLf4O%|T-6~1G-6wwg1Hx$KVZHr(V11HA({3v02;cqZ|Im_R0E^6cSaHI69$B0)RZ2mh}RRbJ(w_SM>) zJm^C~e~lfcb|U?nqH8EVLS|Ed48XJeUe@k7IZYMzt(xty@L^K8kRdwoM8Gi4>Gw^B zQ*YV5VMUqU`ms4;FQT^%W=SX0))jnx4!sQ&O@sj$CPP^1Cnl>2Hy$KKzYrcgb2mj- zk*tOhniFc{o2rmyA1sQauU4Dfh78d>YyM2?8D}<>P?(hoz(xe&;7ay}g8)e37j|J|)Ol=TUwCq;Jf{NC546h~jjw0ph{59hwoo>Zn-DrP zFp{91uNVs}Xj@_%`jrHRAGaWYRnz8#&`fM0pU+VY(>InOhw%r48z2_H+yJm2Lg-I` z#!b!;3qLqvV(T|8Vv;L}f#ehpou{4NuT9DmB}p3fd1-+QA)U06;<}*@?u`+~mEy2& z1J@Jpv{vGLlnzh4UZ)$!;`&0>J0fnQ?&_KSvCg?RuZOFbWKj%_NGRldlYj%8OmmSQ z7P1Xv=<78}f-p{`dm1i-SBjR=a(O9*l4t;($KeB7bF0Z!*a15|*69#Frtt(HZZaQ# zjM6Ywgt+;xO4Ztq3y#YNsq1&h)Lwg^ewN~p6VwF{rzml!b#xnxhX~0)^6{doaL!V2 zO*+9J`v(=%Yq*WKJ?)kg`%U4fd(o%1d1c@@4$eUjCv5JPlucgQt_fh+l_BxuOprtn zUJn+UOH)bn`tkyZd{y-~0YQ ze>`)Z^W5h?_qoq?@ff_|)+Epq7zr!{HUft;XH^^qL>tLmoI%jua_@8w<)xoFx5xLi zMCLI)>6ms@Hdx;YrpD^6khP98yu$&|hJ(+xB?AFRtU9p5O!2MS#dtCpi zsH`tXB&PY;syACM!iKOZ7qe!)*F=Xugd$?0qS$z!HT0BdH&?a)PHZY*c0!!gJ7I?n zOVK$KpNJ}X2dE`2%3rx`H7KcX*z79M->LDvg>Jk!_qrNVCxUy9dD1SLA@fJ11Jh^8 z<-*%nWq^aqPb?mH6fEy?E(B0&F)oA|bNkX?KQ|g~!*-7PX#%X0HdOob4UPl&J4%TU zS{LvM6q7YIFJAf&JJzU(FRtA|SYhVq)M>Rd9ruhu z#e)wO34)I<;AJ744Hg>ohHQ(z zA7fvz$%5pvJ!KdSoKl75pVb^rK7)9@%c4F!F8#49Q6tH~E*V4o2;A)616j!U3OM%3 zwha6K!bMN@0s^2?|1QUNH%z>w!gfivEVMtNXS(-@JFZ)3J7$s0jZ~Y4A?y$LjLEd} ze;0}JT?Cv_nNi{WvT*IE<0VdNjBptBZVf15y=QZlO=(wK6vYz|;(g_J_cGi)6stuvIi~c>IJM zvlTmR4Mi9X*YU^*i~v0Wo#S1;t7mYDQze9hgpPOmaPeRSLPW-yDOBq~YTna0IX2{bW)rKHs- z`o~jG(^$>CPztILep=ce#gWcAfCRfy){GAE$TM42?FPdhLB)S-b>o1ze5zH%Rc{@` zzN)L4?8M?>fGU)(a=wDz-7~&U9!oHIw zDjeuAhkxX*hNml7sn@~lVa@!q)hE4wuVu=37@aQNlY`%{3t}x6V{d%ZZ`OvhT`4Zen9#AQyZT4cHzROw z8)IQeO$pts{%6BVVX=J9G#RQXcYgZ*Y~-YRqfe)TbazJOd*_u>P+nX zN<(X}(v94t?H*uqLz&8MHUldXuD0^K-0*BF0Y%!_LC!uqE-(Hea(4H4l;9;b#^POv z`K3m;Hpx|T`>`{b>*#%p0jZu<5tXPAYHA;!<(eib)-!2iW!fYBn6!OMcZ90C$&*=* zWD*1-Z0Fg_gW7HJ+H)snwUS$$Sj26xK}3hbif!07a)`B!(!-RRdwu1xxL*acfwI7J z-&=JIIaQ$pNHJeYoCJM)yL+d^WeNEV>gIyHWr7h+A2hX|rttDarrU>61oDITy8*Ea zX**DfOSplU3mvcGoYA+U!9CF|>DhJ;3e6f&2=4n{>9^IvMh0D@!jENI$HkHv-_)FC zS)>mKQQOl&&9A;I$^l%eEYbJN5ASCs zhyvHU$ohgh#6agU&m*BzS1^X93CIGW7{zpUgLO2(rb_uc~|F|ZWA)#bEO8@|RIj7DWWDAtI{8hmM&i?(z& z*@3LWi|gI()&B+OD)kZKJahSD#>F$s)VHSH9(%Kk?aE1@|2P+EXJVH~MxQNhFbiS& zqV6-HNWya)f zKM<7jZfBE@)*+gTz0bIa?+^BKkqSE37BJ!%%K)k$x%Vq4 z-qw{!virBy%+doxmEe$9a+4?mWWEwRK56tA4w0UMP}66Ub~I^%q?~t8sLK4;P4<$w zURF{Xz{7y~^izIwjAFu)#xp?@@oI3xrD`1?lSz47llVQ6;e)U2@ZSRSOLi{72&<2u@WBI6lAVvgzV zPBJKB))U|loOz+ivyRDA`Hl6QId+cM5{53Kx;PdC|2%=fdUpz>a}d@eba%#NDz45@ z>`0`o+3y4fJ2aR)%-b&N-H!-LN6P=MxM(Hi85o$_P~EgS(HzFGgySp(hzoD5nnUy7 zOPr5ADJ%-)t6;Gp@u+D$&0R+H-7-oIv6oD0-yb5GevkqxnWjZ<^u0N|SPbmUATHz+I-wHm}fQAWI z*I|CRXG_DHmYuw>eJp^#V3v z@D^o0yYIuWD#!D$bg4G!a&%|({5D30GAq>}UoNPcE@T$G#>#~kkAnUm77OvoxbtGp z#{3*ttLXc=jA!b&TTWdM@^hj{>E^qV#J&dpLRUun>>uoYr0FC>By-gH;#^U&Vqrho z^YoC+RUcwpd$eTvt^;e%Q?eld@B{p3m^dla%0>@8aiy0zAC7|@2f2r56~Z;^x2ey6 z=$klpFS(|?kZ%^EUb3A4Yxsp(rITIf+C#?&3*|x68`&pC19FEpSNqf0E?sWoAzlOv zt*qixuFVso^;4Q*Ei1Z*+9{>mIoV6Qy@(SaHgQRHI8`Ub^%R*NKLT*r83*?uiH617 zF)49EHA?04bOPITo-ptOmsySjDx6@m`A^<@DW_xGv# z_A{j1d=Lq9Gr(PL92*EIS!g&HI)!KF-6NOuFQTPd>bBVasx?MG8t&mEfz6X2)d|RU z|Mx+fD>4?UxJSPWq}>+5G7Ola@lQ4!AugowY>jB7y9?6(QjV|p`!+YpqZ}jh{w8<` zWOG0}%$jzZ{Gm_Y9K05y4t5PR2h(*3RA%AR--q5>QkrYINi-4Dh6)y%4)CsJ7Qwui zsF2ruG{yF$dD5t#sVw~|3v)W5I`o)?B#|f5kaxRkHBbJ6eo8&<%lS_(3$$>$hfDhv zDT4a5Q=ku0-9`7ckVR#}C+L+)Q;7{(B z6S6e#xgwV50*~STmw2em4$+c(bpD9?nD#gtKw$$qk9BhZaSCvq{+yTV=!{?pudr;M zxa;DQsv2SZJ(flO`1jE*uct(KOro?|Q-p55X_{@ijnQ=s>sOWjB;haaeRRl1-7ik3 zbna$MJX)nW0t;q`8Xo15x&YzmaCg{I{M75kP|Emkhj=4I^Cj<(*Ch#oObJUnZ%g$W zXF<(u-{(YeFu$_^rKXf8?*^(O=BiKJVF{%~JJqa^j`;!cPd6YBs5a>6^zDkB$M^Xm zjZtf3ZlKPUEXd}wDR0e4Uy>XJqN)5%GFbv0G(c*6z^>IqHF5v7ZM!|tEt?hhcL(8- zYHOt}4Myi#Llb-*ok51PqpKj~)>|v`>8og61~dvPXp}2?ET2xEHvo3>M;F7vpVbci z$ypEGVNP>jq6(v!_|vO!S1zA{oX4DB1T~tsm>n5Z^}ZELI~}^3yWQ5|>Hcnh_901* zJ)G2IOy|D6-rxYMTm);dcr`ACit%fu7NB~pUSg!a-jU!eR57H#wc>oPmeI0hdhP88 z;{$HZeD;+V7l{Cv(OWi`dEP|J@|VKd4yPa?EP(7ym-9baP`*j^{C|Q zsBB$&M1}8GYJN_`*ZS*NH%apo!i3QU0LFiHN@9`#6n#8268OI;fEsEId?rmfman^X zTu$RSrB_coN4PZfDJ?anCkSfJtHB#Rg^hef%Db@pZC$K$RrE!Jdj9K-TNA=_&{@MD za;@SV!;KrzTfZVKRg&A}wgntv1O_wditu8$__6e^mgeJ0{AARnprhTDn;KLj+JZ#D z1FjlgGwpL~$+{rwuL+#X!Q0mWwo=hLhGv{~=*B|PSOPQxcs^vhJRw93n4q1p`{#eA zIvoTL5jgyx)65_Z))@popVh%1h4UE4Mf+{CY)M<0=Pl3f+aR8lWGZL7`tqtr87i6; zIF)`RirOorjUrUTx%iVpfTMzft)H$3soK~ov+1MZ(sl#jt2rm6OF{o+^?@-Y6w!e~ zj`dnZ@D93KsK+SX9UMM9o;rCeu%Ih1@b%NxAzsA-o6n~02b^Nz`$1zTzpD&5-}a83 zHWtE&KYa5wp4zF|S#1Z9{6KOCg_+2G974s^gNKi_0cuc1Cs(`pM&1k zAcug+9^6)-#()Gtk;2Gs@4M}6SR4W!2;Kkk&H#2`Nff>o>qf*?l5+Zk)+nG%aa?#% zU`k}>lCnrRneQrsg-kAMZ5zC|VfKpyu>3>Zu2sJ4c%pImW1@P=$@J$_LdXr$`yodW zBIU#1^E}Eya`_Y#6t@EmOuY2n?7e)gJ?tnb{3bj#klJd7KYBGawCU9}HHyzu2xndx VDZgB-3H+Ku^{LjAaz(4x{|C-{ImG|~ literal 122971 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 z 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

+B(AI(J(V}-n|`QE|QOb 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 EAN`sep#T5? literal 58452 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 diff --git a/browser/themes/winstripe/browser/Toolbar-small.png b/browser/themes/winstripe/browser/Toolbar-small.png index ebb1fbc41af9775b12dfbdbb4c52effd55ef4470..da65534fa8a48de6ded4ad43c59d3578da0e7807 100644 GIT binary patch literal 25087 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 z%0A0DEZqEAZ}wbaoBMPI*5Tp#hc5x-n`l}Gwd68tzl4cnQa9nF;TK7;%8=ov;lz!m zhQZmsB!1sRT|`qHWfPMUhxq`wu@58s zYugqP;L&lv&TYNwx!PRiJV3d-{<>N)3j@NOJAS~yBlU7(WEDr0mWtB;I;e1P{xpc5 zIG%>8n(utT>PL)v(4Lm(IM{7p{g2KL&G{Yd*uY=9*pMTJq9Hlqm%?Zkd(R1BH9Peg zoFa2bHt!od3(#Jxmj6q`0aPE@F+>+wU)-<5X#=zF{S5+1@E0S*MLqGZPzc&e?&A`5 zA-w2AC|3z2JDt5l$(Km6{xPk$`&*aazvbK?9{x2YhFz7EG&G$bGh7$Kr1Ii3NX-xN zz1(8Tl6sOlskq*=0hLhCWRA3GP()alIt4gG={DI9Fs@?^-R6PN^RLxqx_jbs)pRW| zTze7+B$LI|ej)t_X8P;U?eFhv2A<>1+4_x45s^U7@Ih}`+ltt5B*8I!H3V_nSt*WCEm0&k*x+N`_K8Q!r}(FElMxjwW*vE zpx5;D;!MkH|9hYpD*r#j8^^;>szGe)sR?t z)ls)2Q=HHL2rze)6bDzkr5h$q(d(Yc-$^pcCYDBtjvcK6(6L@)T9 zCsEspv4cqW_lh#0=w<$#{5jYI++6u}TWJu9KzN;N;9hPEfaVJ(x^jSjyeXbH6zyk} z7407)KA6GF`0t$ITHoKDVc)6S9Rwy-a6{>$q%~gCPU|PZ=0j=6eH+&!KN`RCo~v(t bySW#KfL@=W^ojU`9}W23I)BR( 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 diff --git a/browser/themes/winstripe/browser/Toolbar.png b/browser/themes/winstripe/browser/Toolbar.png index a25aea80abe7ba002e0b2cf395ee844eae43b5c1..3e6e60e2a2c15fed7cf95258ad09a2c8672565fd 100644 GIT binary patch literal 69200 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 H4ank- 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 u&C^xx$|>ZR5N@ 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 delta 1874 zcmV-Y2d((s4&e@vB!4JLL_t(og|(Mkj8#_|$A912d(W8*9Huja%y1i~%54ThX&a=4 zLW(wNs)TBc2~x1eCleEWFk)hSFfl&(h|$EC8m)<1jiJ$?Xj||S!bJwKTv`Sww}At5 zIRkTJ_GNuOtabJ|GYoyPu4HBJv)4Xr{lD-3|1MipmE&9Gd4CmNX(;kSSYU}5KGLBU zk}3MjBOESG^2W}8^EY5hRjnM`!t+V?|HMfwK&XS}L{PBwT zL#vx+{yqbn`F}$*uqkRYzn-BstzNBLm#{!Er=5?j?p)G&^yDt!IB?Z86nP;iHj|Fr zz$O!@S`>>^tf(B0^{{N!BlvX`#7(8@F{v1VqVYKC;QIsxSlY%@z#^bA3=1p~oA^V7 zrWb#J#uM1dd)V~&VN}{@r`1wv(9v^!E~%4z48g{^?#xx7ZGuXsoE;WD_wOH4!u~CT!~>XkS6t-t9J0Z<{J+*(S8P6WezXz5X^PG~Oe&MyxhJJP+H4 z0N4zSfC?s1sIzD?jNZ9ReCs&2HzjCaOR(fgqJOSukcMUtMv>w|!Y6ipR4i4RD7-y<8mM6miLq}Y*r!}PpN zI)5>Yp7|*zNI+xM#*igGF=exR03QVa4WIo9c5(!J|2EmkHFWqAI&=}y1VS)DhzTIQ zyq|dJBH_B7n2vQ$YO0v^yNL%cl3jR>ppM+AM~$2U=Ltbggfz8b8rv`ndQg<~_Brg$ zW2Bc4p!cq#Q$yIvVQl{qvhroZ&3g$JuYY%JOF*#xtE590u|xkNh&~*EO9?(_i>BTZ zT;Tz%f?3c_@Z_sV&mOYI#bjecfMOz$(jl_r`^bhqK&=nG)@4Y~POPnWd&!LX5P)d~ z#Z|nDz^DjKm1y-#MB9Fdtk{{eWvE)RCE=!TA*=Ra69_`E@BbEi?^Yfi(zy|B-w26w zxk!o(^m>54ytl5J9u2bs@PDokR=u1z5|!S-tlUmEpylJv1NtZcQpHelt?LK0nvi00H*4uw-g1E=^Sd1Y*VSQ0FIQVeRVXfT8qhrB zKbnH%{C)?bhUeteo722x%I{A1Kx-G)cVHqQll|BVMFQG1KkwcjN`FMTRlZ22r+YgAfz*STz<-|q7c|Oag?Q!Gd;kCd M07*qoM6N<$g6Oi1ssI20 diff --git a/browser/themes/winstripe/browser/feeds/audioFeedIcon.png b/browser/themes/winstripe/browser/feeds/audioFeedIcon.png index 399f098ce7545225f445d3abe886c2556c0fadad..e69bc4496139006ad20e34db308bfcc0cbc396c2 100755 GIT binary patch delta 1819 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 delta 1874 zcmV-Y2d((s4&e@vB!4JLL_t(og|(Mkj8#_|$A912d(W8*9Huja%y1i~%54ThX&a=4 zLW(wNs)TBc2~x1eCleEWFk)hSFfl&(h|$EC8m)<1jiJ$?Xj||S!bJwKTv`Sww}At5 zIRkTJ_GNuOtabJ|GYoyPu4HBJv)4Xr{lD-3|1MipmE&9Gd4CmNX(;kSSYU}5KGLBU zk}3MjBOESG^2W}8^EY5hRjnM`!t+V?|HMfwK&XS}L{PBwT zL#vx+{yqbn`F}$*uqkRYzn-BstzNBLm#{!Er=5?j?p)G&^yDt!IB?Z86nP;iHj|Fr zz$O!@S`>>^tf(B0^{{N!BlvX`#7(8@F{v1VqVYKC;QIsxSlY%@z#^bA3=1p~oA^V7 zrWb#J#uM1dd)V~&VN}{@r`1wv(9v^!E~%4z48g{^?#xx7ZGuXsoE;WD_wOH4!u~CT!~>XkS6t-t9J0Z<{J+*(S8P6WezXz5X^PG~Oe&MyxhJJP+H4 z0N4zSfC?s1sIzD?jNZ9ReCs&2HzjCaOR(fgqJOSukcMUtMv>w|!Y6ipR4i4RD7-y<8mM6miLq}Y*r!}PpN zI)5>Yp7|*zNI+xM#*igGF=exR03QVa4WIo9c5(!J|2EmkHFWqAI&=}y1VS)DhzTIQ zyq|dJBH_B7n2vQ$YO0v^yNL%cl3jR>ppM+AM~$2U=Ltbggfz8b8rv`ndQg<~_Brg$ zW2Bc4p!cq#Q$yIvVQl{qvhroZ&3g$JuYY%JOF*#xtE590u|xkNh&~*EO9?(_i>BTZ zT;Tz%f?3c_@Z_sV&mOYI#bjecfMOz$(jl_r`^bhqK&=nG)@4Y~POPnWd&!LX5P)d~ z#Z|nDz^DjKm1y-#MB9Fdtk{{eWvE)RCE=!TA*=Ra69_`E@BbEi?^Yfi(zy|B-w26w zxk!o(^m>54ytl5J9u2bs@PDokR=u1z5|!S-tlUmEpylJv1NtZcQpHelt?LK0nvi00H*4uw-g1E=^Sd1Y*VSQ0FIQVeRVXfT8qhrB zKbnH%{C)?bhUeteo722x%I{A1Kx-G)cVHqQll|BVMFQG1KkwcjN`FMTRlZ22r+YgAfz*STz<-|q7c|Oag?Q!Gd;kCd M07*qoM6N<$g6Oi1ssI20 diff --git a/browser/themes/winstripe/browser/feeds/feedIcon.png b/browser/themes/winstripe/browser/feeds/feedIcon.png index 399f098ce7545225f445d3abe886c2556c0fadad..e69bc4496139006ad20e34db308bfcc0cbc396c2 100755 GIT binary patch delta 1819 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 delta 1874 zcmV-Y2d((s4&e@vB!4JLL_t(og|(Mkj8#_|$A912d(W8*9Huja%y1i~%54ThX&a=4 zLW(wNs)TBc2~x1eCleEWFk)hSFfl&(h|$EC8m)<1jiJ$?Xj||S!bJwKTv`Sww}At5 zIRkTJ_GNuOtabJ|GYoyPu4HBJv)4Xr{lD-3|1MipmE&9Gd4CmNX(;kSSYU}5KGLBU zk}3MjBOESG^2W}8^EY5hRjnM`!t+V?|HMfwK&XS}L{PBwT zL#vx+{yqbn`F}$*uqkRYzn-BstzNBLm#{!Er=5?j?p)G&^yDt!IB?Z86nP;iHj|Fr zz$O!@S`>>^tf(B0^{{N!BlvX`#7(8@F{v1VqVYKC;QIsxSlY%@z#^bA3=1p~oA^V7 zrWb#J#uM1dd)V~&VN}{@r`1wv(9v^!E~%4z48g{^?#xx7ZGuXsoE;WD_wOH4!u~CT!~>XkS6t-t9J0Z<{J+*(S8P6WezXz5X^PG~Oe&MyxhJJP+H4 z0N4zSfC?s1sIzD?jNZ9ReCs&2HzjCaOR(fgqJOSukcMUtMv>w|!Y6ipR4i4RD7-y<8mM6miLq}Y*r!}PpN zI)5>Yp7|*zNI+xM#*igGF=exR03QVa4WIo9c5(!J|2EmkHFWqAI&=}y1VS)DhzTIQ zyq|dJBH_B7n2vQ$YO0v^yNL%cl3jR>ppM+AM~$2U=Ltbggfz8b8rv`ndQg<~_Brg$ zW2Bc4p!cq#Q$yIvVQl{qvhroZ&3g$JuYY%JOF*#xtE590u|xkNh&~*EO9?(_i>BTZ zT;Tz%f?3c_@Z_sV&mOYI#bjecfMOz$(jl_r`^bhqK&=nG)@4Y~POPnWd&!LX5P)d~ z#Z|nDz^DjKm1y-#MB9Fdtk{{eWvE)RCE=!TA*=Ra69_`E@BbEi?^Yfi(zy|B-w26w zxk!o(^m>54ytl5J9u2bs@PDokR=u1z5|!S-tlUmEpylJv1NtZcQpHelt?LK0nvi00H*4uw-g1E=^Sd1Y*VSQ0FIQVeRVXfT8qhrB zKbnH%{C)?bhUeteo722x%I{A1Kx-G)cVHqQll|BVMFQG1KkwcjN`FMTRlZ22r+YgAfz*STz<-|q7c|Oag?Q!Gd;kCd M07*qoM6N<$g6Oi1ssI20 diff --git a/browser/themes/winstripe/browser/feeds/videoFeedIcon.png b/browser/themes/winstripe/browser/feeds/videoFeedIcon.png index 399f098ce7545225f445d3abe886c2556c0fadad..e69bc4496139006ad20e34db308bfcc0cbc396c2 100755 GIT binary patch delta 1819 zcmV+$2juv<4yg{1BYy_)Nkla*^|#) zywfxH)GXJS6YkO9Ib&*_-tAoR%Fw{b!M@w2T`&EZZv$Y{*~~cmPV?IGrum;$HnlWa zmDMmTi`KaMqYxrs>}uw&eD-G$W9~U>7Vn;`g`wFiX#pH~B?s>9QS_g`)^(_J_~R{y z3wwysNW!YB*?&|)%#$^>lCk^~kvc>P;cF}p9a9+pTlg&ZNk!%E69U{Ik_^cZ=vXSX|eEKxu168SK$xA zLqEl59+`;@VO1SZf`o^wsuDG{Lr^9G(@+|?Hn^Q5TUjtO<0PSGR=|+uufe%;45i*b zQ0h4hIHUN_A>|P6<8p?yoC<1#eu6nsBB3PngQ;}S^UU&Eq?=kLIlV_5r1``j4vgGdWR{tBvh*KFp&PoNKRd*sNoS5JNLoqI~G@6Xer|YI*XWmSFxhr z{gDXsT1k0x+iLn+2D5T964i~cCd@{%c0Lld3+@smJ!=gT6Pr=!*o|Vxw}Ice76Ljj z4IR8(r*$NNkWc~Q1$i%WnwM_KfOH2=Yx^gVnt!?+sp%__YJ5_~haOh-1E^TO1!i^v z3MaSIe{&&o?SHN_!jSVF0w9vZYJuNvb6P9){3jG2#zl z36{T(!e3wOfb*HFnxW7&>H_XVs)_@{O2ewGmjsIRtkC-E3D}nopmbqBSn*cyXZzAY zS}Xud-XInI|&n7kZE~7#EIrs6wd6U+A>Toh?<{AT)=e@`X!by-o1Gq z_PHOB`{fgiw0}g5_QwBIK9PcLBU00rX}D$dcN>MXd%y}eLjf9BB0cjdQjkT0kj1jV zluSJ>z!)(gvLJWpQ{<0+LB(n~Vt`!I@KZE>`m`K0bCSb&D{ zAoLpuKL$7-v$%{B%8j1b786ovmzuLqF@Q=j`$GF2akBzub$tX6;%R6`I~#GfSw`kv z{1(Qq-yumn3z!vV8$G!V#WUZp`aF1(ZGfCam!@B#GzD+!rb3l)C{s$74b!CeI7I zsXMG}sx;9}BrT+8Jbic7oB2#2eW{N?Ni-x;oTy)i*2g#MdNYOvlndOTC$KNI-^JWM-xg^&8Qg1U z;tXnL1bHsV8|sOzTa|U1DGNH~uo$_zAu$ZuzZK8yk(<*qSIf;sVqQ4CJIG;S1$U_X zj&^O5vXH*Ou>4?b-4Oi)533{d!XPxxy*sV9x_L^2nY6T@bpICXV1HPU%YHN)diKA8 zMeh%h>L*>pwckBLMWFv8yS02Te~&)=Y!3C09CUM|@(?4!NOrTnKmmg3RHB&$8tdy? z>?Re?ob%9qq7)PuI{J7QF)tFiX5X;0YvBBiuF_DRveAX#q#||*3tK6_$@C#L#?TAy zl0nYvMufZMx)Fx%e}8yidq0j4bAj1K(V%CyKAwGb#yD%k^oEMX)s@K_*)Rv4i+@2? zw;Uc|d5G)E75*h8B9zP?E^EQ99B!Q^%?}Xs9hX6k1Vkiv8@fLicQe9EH260b{r!Fp zrp+!ize3a}E~kdZTZ~p$6~}+)obNW@Tp6YV%upF_!?c*{lvYq% z+iFV?qtS>ahL|>OP3()-_+;X%#>XZaAAAxLX>3iTm>82O6m3yK0w}i$0~Dt)%mBk} z=DVG9_F6vdea`ug1>-|^GTC#^I{RDyz1Dx-JXK}#m9ecs&wtVvJ5~%nUF@tb!}mc2 zR8UnA10tvz5QB;VHK?&WBB(^!H}1WPSh+E@7MoXY%`F_9xf8zewLjG+fR?I?clNs* zwswwg{CW52*l5t*ix&id+Jh=>iesld28q)hiBJ>SU1Bh?0~4brbO0hu7!lv8GkgBp z)Vq^+fAZ>~#(!R5p%C=+zt}Z8Hd^c-1k@ffq5BaFBDpaV-v>baexYwC*DHc{E&bAe3{iM+jdnv6m@(;g&=^Qo4}l-E8-VPFG|({Iu|{kzof z>OkO#={fSM3+pxlQLqFtY22%c(C`LQzfL@N%759vKxyR`N~@lrH1d??hg(7K$LQMf zDt^aO8Ygz6;bNxT`CnZ`cxoIW+W^oO!&Z<9(DX-g>$^C%p z_zQSJk=j3g1r9`dV;8nbX3V?5B^s5y;C?H*a)jvWG2-i!R5pHtpl3Lhbv&{YjhfUB z|9`?NlO+7CH7p>PnNk;s0f}rRsM7!Z1X7>J-1z`Ae~xJGB+=DlXjscxq;cxEn8jH- zKJjgegBw#(b^HaScAdsQf8z+3D7Q7kX4iHXXp&Mb54@mE&^<)ZJp?N^(*Z>66aO?ep5H;Yj?@&xg>IZZ@@_#L&8|Mh8|CTEEBymAL3VbytDwKTupT zPSQ=W_ae(6@??jbFzLO7>DtX&Qpk1|YLQoFs_* zuF}Zo==}5#sI1>^^SlU((zv-n-&Qt!iOT49`;BoCA+|JY&IKkZp_YX6yMMP5 zbS@(p7^S%Ulay9&#_t@=-LCrhE2s+1$v>nwYW(YU3Ik(Q#=e|>Ti&pp#+iLcco#2c z{tSR`$q{8GHmVcfJWuP~A6fj%Pg&UiW15q14up!pEus?UQH1Y&~ z?@(Jl$cLfd-r1nwR|lwWdYL6V_ON8f9;%yO#_w1PqSR09qIu@``5Uf#4u6VO+Xsr! zy6_Is%(2W;-76?9AGhvp>kBdfDmDyVJ*bR*h3ca(5iD6vuw*sWM_;1y&{y%WzH3hI zLl)<<8xB8CY3Q-cw5COLd$}30p&GcNYRHg$7xL; z%E^mE<1X!5D@1dr^8g0cr++2c@}S)XNhK7+{Spz7OCr(bqd8gOfro6x6I)lJ8|U)! zB_poh+`|Ia1##LFwBFB?2%vR-qOIW+;%jH}3i?;4agGY+)^tuDbT4;Glgik3R%6$Y zcpfTB^UPjQrM%`@Kxv+zpmFNWG=^1$_|~PI0>ASCYautlNNqkR_kSvV>5PF2VlonX z=f3yg<=zb|hW%pT{N(z#Tn8g*EGKOC+@8Ec+UJM1>Zb-3b$&NU2(uUE_LjHw`@o<5 zTeAxXnm4uRz`RpMC?9 zhcCXzH0jBQKTltNd;03f(|5noWUoH_cJ}M?P)5_^oK|$KttRTdr}x~vQ9#CuUIx&0-GA)x1zhzNDCNPT6&vXz^pw(x;;3&&5)&i)G#t z%e^O7@IXBFf_UO(@vK|odG{m&k4l7|kcd1Z>9j-Ab(f^)K1tt$QubS=y!J`?9W41T zauyiSu_Zx%!3>Nn>>Qk2Jp6(p67q^l>iUM}7FO17?w;Ph{=uQ)kw6fikXT;Z1q3se z0KrZm*tP2*2wb>u>C*lCkDda-3lMk(0-u233lRJU0##`lc3@PRc)B=-Xq-<@P!KlQ z^pV5!)JadSj~fh&y16zSJ~FfNNpB33vNCgQ&y&_GkKeK^c%;)*wXZPXK{mHa%7Ry{ zzRt;k4Ms<5;F4Eg5rC>Vo~-7I6#t4U;J(LaD_yfGoh__`)0UYa0@nCxbKpJsG*xJT5 z6ARRqzF>j1<-j~`z36E@u)-jbCwX#`=Q-#5ecpc0?+BSphJVA9BZrC(6z|~^01+?& z7N80+sJ;ZS0)&7lAOmKgLG{h6&s_<0fF-b=YWZ$%v)2{)$L3yE$^vUC5um2BNVYv$ z9DlmzG53XM^+PokMSlXF)$fHq=y{>U<+xDZ1Kb7>3iLn^Gz~hF{Wm(-j1`{Bq^Ohkvh|-UViW7+^UmJzoCKx1qNW znt{c&DBDm{c|*r3Ls$jBL3Zpcz zWwL9dV2M_2Rxz$kb#iXC5jcb9;Aq4Ew0$(Zc=gSX?_U4>s{d=CgY3@Ax2b4gU?88( z;_`-layHf=q|*rLG`_%wVJ)FN|H^a51vRn^*?(0c0qyU9HSZYtDO5M_Pa1x4t<_D; zt#(+=`d^Ql^*$iIvqaJEw(6nD-(sgHW@9E)w8863^-F=|moJ?*dRtFbP6JHcS+h^h z#u{(l`g_|!6N?3Et8^(1<~9OZGU=RMcH^jTDSqA`mP>OaW6rR7%o#QVZ3RjNfYmG} zyMOG)(RxYr0(lZ`4>CaL(mAW+;#tXQHR+P1((FgACSCI4S;=|noYg^git>5wx~_*t z7W;pg3U^M-tn9h2+s;%)yIReoz1?*V;CEnC>n}tA>V*@G$Sosd!Cv>hb(`mp`(?q1 zECNW?qTGC}JZ?K);qHD_8j`9-ryBXzPA8z<2;ksXWus2^uLOK0fR$=`ywW` Q0ssI207*qoM6N<$g2EQh00000 diff --git a/browser/themes/winstripe/browser/icon.png b/browser/themes/winstripe/browser/icon.png index 5addb8fe70f6de4fab6f57dc7f927f4c5a6b6f81..d4769c3b8e44117ee7dd50730403f56cf7abfa9c 100644 GIT binary patch delta 849 zcmV-X1Frm&2i*pc8Gi!+007si&B_1(0k%*~R7L;){{S(z06EG4ET}tMxJhTd057rt zDy0B1wj)QdI$F2@G`s*e#sDm+05P@zFR}nR%0y$l05-u*YQIfw!7EO)04=RLTDU)7 zx=LuiRdK=rF|;R3u{vD20W+}!K+aio!vHO<0Wz=xJGKQuz<)Mdx&k-41V6tAM$b25 zzFm9A057sdZNf%-%tdU%S$xP@eaQkpvH+7f5n6m{VhXX6!l;}&z{8Fc3veCZi~>K%CPAA;{7 zfbt-P@gjxwD^<5EVZSVB#4KyZEPm50fz>ivxif9XGj+@}e9$w1(=&zEJ8i@~bI3e^ z(L93EJcQIdir7SX%S3$5M19Rfjo3tw*-d}VO^ek{k$>4ul-f;{+f{|nRfy45jMP<< z*j1O?RhZmWncZEB(p{C=U6$Ehm)c#L++CgBU7p@#jL>9`(q)s@Wt-b&oZDre-esZR zZHmp(qKe%B002XDQchC<3JMDi4igy}9UnzSR8&@0R#{nDUt(otZf}2zke8R5p`xRs zrK_u}v466(wY9v#!OhLp)z#kN;_>nG_x}F={{H^I%cM{M009$8L_t(2&tqVqK46v7 zGPAKU(~@FkV3??Y5Es_(>Fu8|p})7sK%~2`3ob5c(b~}o1|4lJ?VZgqaY6I?#)kU3 z+SPT>LN$5IN13@`dLVvuZwA4Ws%q%V~1A-!`glb-4z9yKJ zQ&0#3xljqytn3U?5F;%!8w}E+64oiH$($gDOkxrkBtRuBU0j{nvH9B2-NTI+#$iU1 zkn{HSQHF68mBio@{9XY8cG3{Gw5^|~HXBreQ9URu#9oDugM&}SJ|rwqjS;4W+c-Qb zGD7{o-F2q8O+Mc00000NkvXXu0mjfTcUxD delta 904 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 literal 19137 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 literal 19684 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 delta 516 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 delta 439 zcmV;o0Z9I`1I7c88Gi-<001BJ|6u?C0gXvSK~y-6os%($6HyR`zn9&+WZ9%Uav*}N zi2=L2?yk7TDuTroHk!s-Ma4)!kSh+ai8eMi)+byLu}dX#*w`qdV6$!%6cH;0*EQzt zj>RVGKC|)82UEOx^M7w_>KRBLV1EL+Ts!-!9S+3?K}1n56?Aa>XcKq{VCSiSr8v^4VS*@72v}C;Jr7U? zTJ4x898`2KAj-~y(EB|a_6*zt5tdWtElarN;i;I?*n3FVw2>+HY^78cb_4fAm_aJ>uivR!s8FW%kQvg&{YHYi^zrVk~%F4{l z&CSiv&(P4)`TIYu5dQ!G09Q#wK~xyiV_?7vSVU0y%o56CC<6Qnh8m(MBEo70szN9t zf-3q-0w^MUia@&ZyeJ|(+In)_$O2sII@0V&d`?*{84eQoY*Lyid Z1OQJ|1>RKTfKLDb002ovPDHLkV1l?+uVDZH delta 354 zcmV-o0iFKW0`dZo8Gi-<001BJ|6u?C0Xa!TK~y-6WBmXBKLaIz37cSVZ*R`DY11wc zWy1ge|50#9M@QDNW5<5qzJ2@uk|j$oq06IV3>PpnGbalR3$sW|%P`p4+3GG_v5Kf|ikYfim<_4faVkKg{E zzi{<`MP>CVWO)`svGn};%dbCv{$^lcWM%m9@e{+XTerUw3`7{t%`4b{{N%a+PoBN~ zf8^Mi|5@4j`&)_j0x_C#8bGXOtOoe`2khRtYybbpPu~#Kj4Kdl-n)O#?(e^UY+E*O zIxuz01V@rnqK|Jth>x%TZbDJ~|NnmmMoP0Y0DWo%kK13_OaK4?07*qoM6N<$g1>IS AO#lD@ diff --git a/browser/themes/winstripe/browser/pageInfo-aero.png b/browser/themes/winstripe/browser/pageInfo-aero.png index 7e19b476e048a0059cd43aa1c2aa41543ebdc9d8..7544cb78e1996a35bcb82135a4321a21c755a1d8 100644 GIT binary patch literal 8628 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 literal 24643 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 delta 325 zcmV-L0lNO$0{8-u83+ad001BJ|6!3KCw~DNNklbsseQb*+9ee%^VmQV2(tJqksQE zb=VE~`=4P(-FC1*dXooSFIY1pBixk#|8aQX@87?0fq#GhF4JoAQ#NKd*gH(33_HBa~S{s|4)$%00ImE XoKbM#w!>cx00000NkvXXu0mjfQ^l64 diff --git a/browser/themes/winstripe/browser/places/bookmarksMenu.png b/browser/themes/winstripe/browser/places/bookmarksMenu.png index 258c069b7c11cbf61ff7cddab403e83e568477c8..b76d849b91f3927f3d657063dd3571c641d5c6d0 100755 GIT binary patch delta 320 zcmV-G0l)tA0`mfp83+Ra001a04^xpLCw~BbP)t-s|NsBoStXXw^}H z4*&myR?kBd!kT0rc5-MtL;3W#-ouLW8M0GiDYBxJgdie85Jshj&ChN?V17N{%%7ea z!5ee!x|@I8J;KG97LyjiHRr}TcP)w!q1L)8%PL-tP-tCXazr>J%OSH#Mhm`x+6`rg S<}iT(0000=1_}VnwHtRB0z=cV zO3q!pn8CrxAD{jP#&xS^Qse@LJ&Cj~&&Gr%wl$Pf_2XUa{mfm?FaK_XD&8Ii2| zkH&|F0mOiRaDjh7_MZI*Fcc~&$TKJ@Dq=U_-@kth8#9%`7X1JBm%+u}7HA(M!ha1Q z@&6#Xe>e;P+S*dG3oKC6?S}9IR5v47HzNq)@B+|QxKDxX14oZz^@5zV6mBn6wmX7t z1F`L_%u$058h-!&|HI`1paI7hfd$&E;(#iVA_3xhuoxo)1FkUmkK~2_3`b9%!RiG` zaS`0n*kT^d0ApL38DULy|NmnqS}rCA3IWIko3CCt=u3j0&Bz=^Y|bJD00bBSzCNt% T)@qGw00000NkvXXu0mjfeV&ds diff --git a/browser/themes/winstripe/browser/places/bookmarksToolbar.png b/browser/themes/winstripe/browser/places/bookmarksToolbar.png index 62a4fb0c3de0c4184994f80157772fc0f9f1217c..1e36e1177e846b779bf7b59037ba4732c1617746 100755 GIT binary patch delta 219 zcmZ3$G=XV?BnLAC1A~SxfAB;_je45^pAgso|NjGpZd}?6M4vvr19B(z*2CG$7ENrc zo;|5;)w)$P4{g7CXzwbZ)U7KIAu50Enb-!@%v}=X7tElPR$pH~2aZFVdQ I&MBb@0J;5Zwg3PC delta 235 zcmVbdpt-rZy}iA^zrVu5!o|hK$H&LZ%gfEp&Ct-$($dn@)YR72*4Nk9*x1lq)=jZ6?=;`U{?Ck9D@bK3xl7G7Z000AYQchC0@X|Nk@;2}J@53J32Rx|GboKM|2^JZhXz zY@UyrQv)LL0H#-E2x5QZx(*m5l3ZqcE|x^1u5$0t??qiCQY@X_j=qFMVk62l6@*Pi yUN70+91m_56(!pre$)U{-41M;BO=*&@Yffrbw^?J8t_m60000UqK~y-6#gna$!ax*-zs@uRK_e=73S?Cs z4uxQK17;s#d6SyDMWC7>nkEZxL4rmgXaY0=`UfjEJE4%>ghlL?bI6IF(%+xmVZT(B-Ln!fs_(}vMjmX zm1S7~j`=Of^ISKD5Y+2+f*=5(+wF2Xoj9M*TBDQ#zyv6Yf-K9lxzT7aolY4JhX6<^ z>2x|A4hIdX)oNe*Yd}#HD5VI)5Z86}ZLaGQh9OF+idF;iJSR<4gb+kgq|LtXu~;CbBuNt1>ooxFcAMpL zNm-U`x7(iqS(dTi@42nx@yKSgshnK{=5ZW5&1Un?_*=zs3@|r=$;WI4e|*ZuzyHQh XroOwin~Gp$00000NkvXXu0mjf>G`iN diff --git a/browser/themes/winstripe/browser/places/collapse.png b/browser/themes/winstripe/browser/places/collapse.png index 43d78853941f7e1e21c3fdb9313a5d54d92b0dfd..fcff99520cd98a3d3bf1defe7985c9070be88638 100755 GIT binary patch delta 319 zcmV-F0l@yU1J44G8Gi!+001a04^sdD0D(|UR7L;)|AdRFl$o-Zow%5vxu~qbsja~Z zY}hq{(>#XNn7`|)$m*`M$*;`pv9`;x&h4|$?Xhz{J$U#?-^d z)y2rx%FNl)*X82o@#N_8<>~Y1>-6aA@9ORK?eO>T^7!-h`G5BK`}q0$`TG3&`~3U- z{r&#_CcHyu00007bW%=J0BdW%zrVj~C8!nv004GLL_t&-8HLZs5`!=dMbSscG}AkT zVEX@mU~DpYV8xk{bhiRtsb*12g{i_AwnN$m1KG0QEE%fx6o&s>p_~Ou2tA`jK5;(b zd{H@4#+Yl{t~eN;DUxw?EX%oeg82IoBj`RiT>!mld#P=7D4G{Zo~FG1iXT2H6bb%z RJ?j7f002ovPDHLkV1k>evWNfx delta 419 zcmV;U0bKsi00g!V>Tw*5j6%Z?1dHB6}CafxnqG52^u${@Fr7C z?)h%cncQJYDU4ITv1kDN==fxBc1BMv%twrgfaVE$>j^y9T7PDv*)H&zNGP?rv1){; zgYf&k8IqDThADj#v1r)fn#O;HOO-YNU}r`DafqgI za8e5L2l%|&LH4W;03ZcyFNa1nq!hT63R2QgwMWNat)+8X7W*7?SZIlJOui zi5Myk4e6YXeA)fd6DhFb<(*nzTO7&frEc$^z`I?6o{*k*V342C?F#s6mTlUO3n3)v z)7D={2npM9QL}85H=D18>zfBe=cbK-$5rn21gsawY#iC`0{i#h_yK2y)TR^XJbM5D N002ovPDHLkV1nc1#H#=R diff --git a/browser/themes/winstripe/browser/places/expand-aero.png b/browser/themes/winstripe/browser/places/expand-aero.png index 2699ea34118bb481561435bdda37e0659a2a852c..b5d9d66736b86378cc673e956807934894f53849 100755 GIT binary patch delta 309 zcmV-50m}Z01H}T68Gi!+001a04^sdD0CG@FR7L;)|9gCVdwhHV004V@e3X=woSdAU zot>bdpt-rZyu7@uz*>FMd}>gw$5?0@j^@ZH`v%>V!Z19VbO zQvhqfC!yG{0001gNkln0LXnVfaSry`Mv z&@yJocj delta 378 zcmV-=0fqj>0*V8W8Gi-<001BJ|6u?C0Z~arK~y-6#gj2^!Y~wuKSwB0n5`%ScVLW^ z0dfcix*?IRM`(}1n9OD99w|f1VOS9IfLLNX#$6hu7ImN<`o<@H-~0V+3-3LDso+mE zAfBF|AAto>+{x~M*AcLIST2jnWO5h1-|vf;?UoTxq-o0ee1E=6kftd>5db*nu-4+e zCyFBCI3@@JoO3wm2!en(j)|fO?>*L9oO8hE68pZ#7=sXkBuS7`(liZW7!rmdP17Ky zBuNs45Ex_V`~Fs-wWg{n0LrqYZCl#5r7TMTs;WY3{Y5YWu-2lr##+mKKBum0*6TH^ z)#`fYx~`ecW^#XNn7`|s!||%f>aMfNugvVRw#%{3?Xhz{J$U#?-^d z)y2rx%FNl)*X82o@#N_8<>~Y1>-6aA@9ORK?eO>T^7!-h`G5BK`}q0$`TG3&`~3U- z{r&#_D`8rn00007bW%=J0BdW%zrVj~C8!nv004GLL_t&-m4(m85`!=dMbSr(X(sgE zVhHg6ABYWu2UeUJNp~yYm1<_Cl$k1we%Yj@H;~Nh&77e4KNQHPDIg@cc8-)W<`d$J z;h7@-aqfq6ML5NXM!~i$`-lkPaB!UShM-M%(@^MD-AZ+(L(#mi5o0;~g&8Gi-<001BJ|6u?C0dq-2K~y-6#gorUTTu{)zhlmgP_9N3+nf3T z8eI4W;#JWW3SC&=!d;86;3nvSzlXw2!%abr`fBDc73 zU^c_|8-8=njPc&{m>7DL8n7Qf?XEwcD6LJtti;2`AeZQ}?|(RHwv+SLMZ->1M%U)& zX5;es2!%pELn2Dn>Bh;I@7QWoj>k$N#u!xdy@xS|u~JAiD#tbm?0<=GHVFcYRqv5& z@!|1L>U*aEY`m_rJTv-WUA@POctjL{#pw{$h^>Q^`rhfl)z(1@z=xHH#p!Usi+HT6 zN93>lg{cttTYstVr)++14(c1PA{M5?e^}K&4Q|c9R2w1tWq7~S24MSLg{4|}hg0=f zQ5{&i8LP9;u(k-m+ZlT=BdXY5&(U{s?+(1F6|TX%KO~~`dXAxHnk8AMi*tgi&y~&z zS*J@g%@W&c{b+psc0}}IJTB&3<$m9ho^_ITcF{0Tein^as(RLoPaH)B00000NkvXX Hu0mjfZMV-+ diff --git a/browser/themes/winstripe/browser/places/minus-aero.png b/browser/themes/winstripe/browser/places/minus-aero.png index 6d3a2170aa7117dab07f6b34a4fd7268726a0dd7..f141c79d1b5688f171c3e4493d971a94c05d4ac2 100755 GIT binary patch delta 254 zcmVlw+ z=jrL`>+9?6?CkLH@aR9|`Tzg`19VbOQvhqfC!yG{0001FNq0m+R2UhB!AllEFc1X5 z&S)e^1|h!pKPS&>cB+71PH2dOq}xaWUd6Zw9@#huZmRQszV=ylBe=v^s!xe=AvlGQ zt4|JLBBTp8I4mP}maRa4CS=1DUX&GXDV`gqF?M2F+?3)lf_ zqqhdm0@!`-_o}L@P42Gi)c5Ix0F;!HzV9~yq?76jz!*c*G)u&r zthE?pmcEAs_W=O_we%g^Y!`m`1|XNpotWG375J(aOERub9ZrlO#qq z+uO5qhT2>oriMBL3hfbS(d@C`Vp60>JD+-00000NkvXXu0mjfwb7pv delta 316 zcmV-C0mJ^K0?Y!C8Gi-<001BJ|6u?C0TW3?K~y-6#gjcw!$1&)-zMwO1e`x`pr+;q zh;8X}3yPeDf`&7=qkz&vf*#RQV;P(^ksHUWnW0J)hZGy7;7MDoM&H{vqgf>)*hj6s zXaM@|{^90$6i&`ghvuLYctMNW;WM2j-}yY&qv6ry>hi)2`hSOLxBUVUF>Fzq_RC8X1{qTrO*qz7)Jx6gFx>DubTvchGr4aj_^_}0!<_!;zr^6_G2sXI6ZIN zi3FNiK-5gIa81K?ppk%=1{*CrZM?KH;4KEk{HFz95i@jEIn<84cVGn*qpBQQX=W2! zlyHu~EMCVsf;BBlq?t{0p8v!zukVOX`ljQ#%609KeHF>f&SUlOzwsA~DXTAb+xtKO O0000+{)YsS7*x1FMg~>g??7?d|RG@bLHd_xk$!Z>Ke?00003bbnG#QvhqfC!yG{0001a zNklkOMPcFp|Cfn{C4@-O*@ubEmYf4;%*<(Ygk7#Q^AbMp zfCnjHTmuP+C$|Jdprk7WioTVOKuP}s9!xuhpeEu^Nu~4tOAgb*-M53-0|~8y`3;Dm p3fKlV0TuJ;X&gRjW=^AnQ$OXsG~*AvKXm{A002ovPDHLkV1jGXn_U0^ delta 330 zcmV-Q0k!_K0@?zQ8Gi-<001BJ|6u?C0U=35K~y-6#gjjdfM2W*p+zP_%YT;V!t6uW`dEa}PncQwSUa9FzYGCrQ z*}MZQAbC=I0Coacy{*?t9LG^u*a|oX25r!cEWm(d;t%LXG0>Bu9)*67>Y{p`-AP9ni90UQ@S}vE%Fv#<~`v$)6 z6GhS8X<3$WKA-6|gF)AIT(4L9{!!iIO~(ne*3@;4Qp(x6ZCjL5)O9`ZoCM<)wAM6D z<6QlCJW>>elSAgAL0_lSi8M`z{wF>*I8;@YESJk)JC6_R`@Vx!RRwSm!0v0mhd(~$ c$-n=`Z|J77jI)@~^#A|>07*qoM6N<$g35rK7XSbN diff --git a/browser/themes/winstripe/browser/places/plus.png b/browser/themes/winstripe/browser/places/plus.png index 24a5807db96cbf5b78ef86ee59f71d2b14f3c51a..2ed4bc477de5087315c305f5002317299a515543 100755 GIT binary patch delta 292 zcmV+<0o(rd0<;2<8Gi!+001a04^sdD0CiAIR7L;)|AdRFl$o-Zow%5vxu~qbsja~T zXVDOI-!*~LJciY-v&pfx%e1-9xxUc6z|y|L)4;>hz{J$U#?-^d)y2rx%FNl)*X82o z@#N_8<>~Y1>-6aA@9ORK?eO>T^7!-h`S$qx`1$+!`uzI){D1rW{r&#_DhYHP00007 zbW%=J0BdW%zrVj~C8!nv003u6L_t&-8HK?`5`aJu1hB?oaCevgKas6IY;hw2ewl9B zXr*hynXX5>CI|U(e;hgLlSEFcQSBtMQ-xwvgf^u>wkiRwN``bH&s!)(GL!GmlpyNI qk3NFkc7xWnHXRHrjJ41*@aqLeH4;ZnzsqL;00005kNo%H*ngAlR<*aax#2b&izt_i z1tMaoFmnCd2gt6|bn7)6LI^Mydk-N5>NOi(r|C+|k~78IC(i(Yn}hXS6U&m2Yz*iR z@~l1^14(2+#F@tK*=y#$bNT`RxY}RM8k2!!HXzCpCOT{QU64t@slktk*He;n_(cwm z*K$W;Hju>pYhHx3Y`Z!o&q%}!8OIulrraHPI_l(-Q`0!sDD?y7t1yDr1ZGp{XiZRI zgnpoWIUIg?clVEQmKtuQ;3_AHMlcBdks5pA-+$vLXCu8++|u`H00000NkvXXu0mjf DEViSb diff --git a/browser/themes/winstripe/browser/places/starPage-aero.png b/browser/themes/winstripe/browser/places/starPage-aero.png index 1b804b612de8728491d584f5f397b6b4fae1a2d0..f7732541510bba79a92307a7f008c751e7cdf0bf 100644 GIT binary patch delta 377 zcmV-<0fzq01&ITY8Gi%-006c6H|hWY0Z>UqK~yMHb&4 zSV{7@KRP8C45bIoa?baB&bjv-VvIp2OQ+Me*7^egP)eVt(|_qkCmrip4Z!#Px#8jA zX8@4T=W_twchb>LK_P_87+XlCQka~a1Y>ML2;u%W!1w*xWHQ;`)6;`kEQVw<+3)-Q z>_4Bdva;f6tsg0+`i(L3_%Iv}2Y>qd`Yb_BJh15Qc5VLS|DQ# zIOix9i`dxMXx!f3K3!W|%aZ1pOG``B(P;GJ%*;$zcXv0GQfp-{*T27@S-O4#4u$NBmBZvYq=7>JFIj-t1>7okwdtyZfE0L3-{fI-eVwzs!Y zC=~p9z5b4K{ssU}Pfr&-&wDjAH1vRT4giAyzB;r47-L5l7Z*9t^E}4b+x7MJuXo_{ nLWoZX2M4b?=LyExQ8V!uD;qf^wK_Qy00000NkvXXu0mjf+P+O7 diff --git a/browser/themes/winstripe/browser/places/starPage.png b/browser/themes/winstripe/browser/places/starPage.png index b29218fd62dcca4025f35886c725e20803445c3f..744a0780b83c9cc4d43f8a4ae7c016bd1d86bc5e 100644 GIT binary patch delta 336 zcmV-W0k8i51mFUY8Gi%-006c6H|hWY0VhdBK~yMHb+ArBs%wQez>L-x z9so8r03P*)8A;s$BiRHTx=2SlT^yi^k=%k}n;x~b*03U0L~GR6J=z$>4NwWy*IP3F i`+phNTdJ=T2*ekfzg(BV!qFrE0000Pw)cJC?}zu`NkoKEmCNNG_`d%h0AyKynSaaWZbtdo$TR@Y^Ij}2 zEB1)~Ut_G%+l@(Z)mD<_a`NHO~Z`%NPHDDCdpR%|R{z5E0Vp^qFN@V*!?BQ97MI8_ooOAcP2W&g0Q&bnN=kXcV0DxDX;d&;o$( z`%{{xP3XEF1Z>-eZQDVw>pC<|oA7;qYM`+pKs*wOXqR|8}dEGN8GPoV(00000 LNkvXXu0mjf`I$Bb diff --git a/browser/themes/winstripe/browser/places/starred48-aero.png b/browser/themes/winstripe/browser/places/starred48-aero.png index b00e040de7edd398b670b9041380981070be48f8..2f7e878a7366e37b4b92887de73813c36672dcc6 100755 GIT binary patch delta 1859 zcmV-J2fX-?5BCm`Nq-qhL_t(&-tC!bY!y`)hEbz&Nr?K-KSmON=|2N4685D<6akeA z1qv#nfD+WmqGC`HK~dbrmVFg%#YzQa7qlX#rL{;m+S}!pTj+9^nLD?)wEcX(nIRe! zV=LUWNq;l}BcXv>k#2Qh8*$ z2FTHCT_M2K6Kn4kt8T4rUfT9c_*|;!Ij&9V)B!MfBm7cvXqrgtKKLH?z%KC|Owj;8 z!wsD|z{C@4`+v5XzEn)_h28L-jp_SPPORzMN}ESJWdI#n_@R71RnoHCB@4cVOp)_D zqr+VVQ~@w_6=a>>^{`{S zS;2Vo4#0M))R^uCU)A}4mV+*_h;~^eyzbpX|x(BAi68H*^>6YN+wqaIr<{0tpn<6#YPm8~J zv6$5>rGF);Ce?U`YyJz72<9W4k8FhXz}jG~mh*uR#He^h8h)Q6-lLPGe9t&3%1Drc zEdvAGqXZ7aT9^mPaCb)n%r49rBbA3|iSO41;xAbtrgxP@8#YO+sV1rOrYz^*2qhiC ze1wvTP%;rUPsv!D0rM8-tu>G)68;=k!Kd&Me19Nfz9%h>OQp%TNDR+BsV^YdPfv(v zf3p1kWulhcYeq#JKs1i19K162N#L-i3GgdxaAyvdS(uY2GTH15*Sqn>+Lba#H(9 z&42L)Zh+$m9z~cHHp1d$QR^0?9>#c>Q4dotVamniUM4p;*8!t$V%}in4FVXSiG(m6 zTrLt=EaFGIagIpCOpYP&EN$ka`?|DQ%Xs>a>gady2{=>ZD=Og2T|@{CkWGMt1la8a zFfng3>L%t*%o~ilfq8?GHwa)5AjF6V7=PKumqh9@ST|MVT$0GyhhPjm$hk+j&iUXo z=qzM1ctfgxoT$c|VaETOg%Eg)nMP`JU*#!eyJf^4$I5g97?=++>LF^~fDi$KY$g25 zF#J3QF;>g^;Je@D0T}I2JC^I1uTLT5Z1i{{k=MkVZLiqpVebE)M%}soZ4FU(a(@XS z2oU8xuy#5DLX3Qnkq=_tPhHn7#2BV)7+LRq4mB9BdEoDy(Et-Dp(oLKff8KAgpqQg zY+k%<>wp{L^W4?(Qh(}AN{IjwW+0Q7SEtX0_b@^&dnt?RL>G)#kNOuhl$KDkQ~&0C zsm;+BwvU=$df68;M6ZMOy0336UVrMm$RTE!vy@2{qg^>15@6(igb-d0Fo^)Oq%Lo= zu{f+w<1<7yqf}C>8eoRgAP}1TgBJgmystDt#X&NJHLuU76MVXK?Km z-3#fDbKOGZua6h&6lG9BfU@BogT7YbXi+URH|f4ACYw2KbQd@EnFW+V8GoZ$I`k3@ zbGgKI`l^O%sb{}J+^}mb=q8LPhZtgE!B)=fH$l540cQvVx(}O8vui+ z^#$eKsAi6@8SkLSdQPutn|~s=kM>1FwNx`E0o*Od2H&9}jv3p$jyz>jHqx0=&tSTa z`Mn{$9m4brfsyX_R+p*sFrG~b}Rz)JGr^9(R`Yk_EHi)whwiD>S<&}4Wx+aNfOWA z;e36tSJi!r9_u;1rfuxD+DH4Mp<1e`+OY^Qz9^%=w47mwS%;xU$|5*ftm-7GI+P%J z>*B=y`8ip?|G4P!F@L?LZM3cSvHPN-TB@nqu?VoTd^ff0rxXIo50T?)w%SMgs)lN*rfOg5uM#=~tvvhdC~2XVeaA-fL)`voTMqN#w*R1U zo7=Wr`>KX&sitbTcP46ofVAE#3)2Tgi@xq3;%~ps-_WZAPdu`h+t;sJs;SynK0s>k xhyFs`W%#NWcai2*(*2)&-2u7-bO-1%`~mjT<~~#IxpDvi002ovPDHLkV1h(ZlsNzZ delta 1883 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 G2~7ZLpJGS= delta 707 zcmV;!0zCbs1@i@v83+ad001BJ|6!3KCw~H!Nkl|H>Fn&#d%O$C?y$H`N*0%VXtk9lk@9Uw zBogSleCeV_qp^2(baYi$*9ad)B7YI6)oN&OZ|})*91Iu?{q&CA=LzotFE<(uqt`o+ z;c!^EIgun^5(%95c<^T+fS+e)(P*(AP$K5tjz*)PI9vrf-7!#9DImw?U?-J=FJEV1 zHdX4Y-(m|YHRfs6_p?oi-99~ z5+Y<627jL&I1-Z++Y#bc4e{@gd!s;q6{tDo?6+gcJG=<&0*ZG@I610VB z9Nert3At@|y4*P9^_46Z@{6u#p2T1>+a1rI16z0R-@5z2_B{u7?LDw(-vJ;vbm9yUtiAGW-IZ@!Z+zQ! z0m%sB*d0fA6 zZoa0|;(KSGSW7nS7ZA8?8ojXPk=>20(phQE+4 zGv7F?L!4pdySbaPd;`TeY)ltry>hUKVCoR+Q#%y%GKI52L#E}d+y9>o2};YYs_rtV oy!tn_jIaE;&_ipTy7G6tH&Cv}G1v-zx)78&qol`;+03(?wlK=n! delta 498 zcmVjfg_T8og5&}60NPvF2!T9+iXVjp0uqzO#vB|Lezu~hjiTt@ZE}~~I>Y78 z3nW^2Fx-Cr=0CGDij7ngY+8bUa(}^3 zPFWuID4ywLU16B6>nxYcZJbwhR)@%@W;MF9x|V4w{9OTh_Pyc%tYVa3Emz*Z34T=Q ztRw(%kX8tv)pS4YNTb4sLFwHuN+ zuufn+8lR^)hj2(Zv3?F%1>$#HNq;8d395AWstz2s8ze9ZkfBM9CYD-rqWE=yiz}W31H)8HsCDc1KkQ#;B$a-s=FXRjcOXjgC2BEg^(I3}0t)Ihh%b zVK|Tv*Gnc|ez?`y-Ki(PBfy6wmXevl2~Yx%YSZ&w>F07#NSzGdeS4qf53eo0wO4Li o2g+aF7;3b(jivmzoxcSb0HSVy%SX4xNB{r;07*qoM6N<$g1)rm3jhEB diff --git a/browser/themes/winstripe/browser/places/view-aero.png b/browser/themes/winstripe/browser/places/view-aero.png index e05bfe885a4c8f272a615a0cb37cc111dafd2036..f37258ef8df0a113708156e8e648693dabc41d54 100644 GIT binary patch delta 128 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 literal 26592 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%0DN$5((an^a=@Ug?hJQEM0HQ*t1FGz* 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 AasU7T literal 26801 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 diff --git a/browser/themes/winstripe/browser/preferences/alwaysAsk.png b/browser/themes/winstripe/browser/preferences/alwaysAsk.png index 0f7d3ec1ec3a06c00e577dff5f617ea692ce9741..ddd4cb2130b28944644838a11f4050da251dfbc6 100644 GIT binary patch delta 395 zcmV;60d)TB1HJ>083+Ra001a04^xpLCw~C3P)t-s|NsAnkD{BXzN@~?0cXq)Z_hS{ z*EfgQP?p_cpx}J3=6wp2O~^$nmev@U_wKx6jzT*73d7_rTZp z!Pxb~*!RQP_r}}z$J_VH-S^7f_|D(>&fxgY;Q7zt_R{0|)8qNq<@wj;`q$?A+kfc# z-01q?>iXd7`{3*P;OqP3?fc~J`{nNY>G1pM@cilV{Oa=h?eqNb_5Jbn{q*dW3=;s>3V72uwv(?X{(f4Z>TuyazV{1(s(pPPZ@1nN$aS>!|<$ delta 441 zcmV;q0Y?751M35j83+ad001BJ|6!3KCw~ErNklmM*fBztIlKiY-&42zf;5Ohd)P~>xAci$=eFnDK zRGyom&`AQU8DuDK7yN~2{PPE*5T;!cEPjve;KYny~m&+rUdZ@(6(98N(}ElKWF&x zHa5X=y0~ zLxGBlimIxrwzjsOo}Q_xslC0ugM)*kqob3PlZS_gr>AE?KtNDXP)JBfR#sMac6M=b zaambeLqkJbTU$p*M`veeS65eGU*CiY6DCcXGKCUym^8`wZ5Ut{Oc1o zhGgvt&)pAn5`%ODgLET^fW7b&ihbay`F= zhW<;vQ#bjfZV%7j5}Ch0wR(R}(}Db^69uh@ids&Tb)Kl`K2_O$vbyg?P4C&--m`TR zPu5R7(>e3v6WO_CK#R0Xg8YIR9Gtv;>V16cfzHJPTBc2(F_W#_DyeL?k?wY-0#m!G}( z{HdPab+N-iHxI|mIG=pkGw|&0{qJ5D8V9faoOg9Xgh9&+5o6BjC583-`DTAjx)S=v zgfV}m_+F*H1EN!D03>GPuN&m}m7iWhEBdGzjl SEyE2*xn=oULQRvknXLeI{np+9 delta 763 zcmVP;7bKj3SAV5I&~5peE9_K?n+lb zfKUfPts@2{`_){mXye`d4UY&N^Jl*wc=natwi|IXW2@Z@A9;`eWE#^X~{EW5R} zva+#pcXxF)Y+$Fj;cz${4$sU)qtR$IIy;+Ar_<^5@S+FJ+gGsH>-7=>_Kk(}1_PX0zSi*%=?7m^ePJR;yJ> zIz2r)vcXPqbGckDm*coVAP@)y0L!v0%ld6%7=~dOK+`l$(*Q}5BuN4kMNt%GZZ45X zBoc{6qfjUm3WbLUf2Z@hgTXG4Wm(qk1`NYADFr@1MX_G*T~*aE8Vx|#4Z}16S@!!~ zuERq@2st=tw<)Fc{QTs^DXuNnUQN?9O%o7BQ541ARo8W0*8#&Y48yP+GCv=QL?V$$ zry~f0APD)qQ+eGlFYoWF3e@Y}jjyjCABqB0DypjM!02fAe@GC*Fr5xynyps1gNmZ- z0KoH#!f`gx?wnKHVzF2(7Qe;uJkRsIJ)zwr?DGMH5JCvhY&M(CCLqhQEX#nZs;a8y z^R`&0^OAngv|w<0`r?ApP$(2~xd1_^RCFD%tf!~1uU_DvmQ&nhGMP*!IgVvnmSw-M zh*GIkDwTT0Q97O1-4Cp3qNpfL;Me3stNW~qL zD?X=Nb5SqW2w_SIRKE0T3(QS3cwN%?>_Q#-$*KMz!e--mAtYVJZ z>k7dv&wH+a>+X6#-xOjpGsk@O1qsoB&yNah#b%yf>u)??BXx_)dnN`Q@0F@s^~nDi*S}-_*e?7`$X@?6&`nBJArX_=n2iA#aH#VD delta 719 zcmV;=0xh>e3)5Hke_yGXYHb(im&b9ZGL6bjYPO_b$F;IQ-rx&-*J>=g zyL)j_t9@JJgt(PTrBbQre|o7@DwRsQ{=fC|aR)XxmzM>>FbE+eody_Yd;9DRp!DWu zfB)oUR>4Ve^Z9%}pVxIk5ClO0ip65FSOl8QX0zF>*Z;NN*aT-XnM^7Le13`|A;7}I z`uft6VK9uQou1B~yrj62BuSD4a2&^R9FWW9a=DzY7Yc zJE|&4K)3ty5(I$jetZmvfa6fgalrGl=S2}<+i!1S2mqG#{ti(3_}Fe62Br7+hli6% zuB{y(-`;*dw_2@Mt5w6$G)>bqpx^KJ`+Z5kFPD(F325xO_Y-F>5qO7dQG7tpmG$DTiegEqV0C=9`03e$c zMF3EgY<7B*NpZ)^ExrI$ZH zzq)F-fxEkhhu2r2+qJA9030U_DFu9gw95cOQYio!4o3|ff5-O$pwn@j>B%LEnxjOTft2cjs7q6i3rAQ&ambzOHl!Aa?5;+|Wxg0ZDU5ySH8+@8EfjomX${iukGd>K9M546@-J!u^xO0Xiu) BPa*&S diff --git a/browser/themes/winstripe/browser/tabbrowser/tab-arrow-start-aero.png b/browser/themes/winstripe/browser/tabbrowser/tab-arrow-start-aero.png index 949c36ff3e7946333b7c3648f8579b83c6826ff3..e9ddb34f89f5b5bcb62d431490358ac5241d9e83 100644 GIT binary patch delta 535 zcmeyw_JL)B1SbbG0|SHc=lOdl8tc?Ed<*aiasB`Qzl4N@w6wIMqN2LGdT?-XNl8g* zX(mU4)%RK(ma{)RcR$d144h>Qg7pltZ47E14C?Kyn!UV+lZ8yDO4`hnwOgR< zI!oPcp{B=tZO_GeK1&S!ml*}DGznN^6}HhTd`&>+)}ZVi+4V;XT22(T9xZJ@UD18A zuK!&91Ry%!F!6lrv~z9KE_BSecvZ9hgbC0x{gNQRU&m9HoW0y$GXT^vIs!jlseL|?p2O5U_NG4#RPzSfiLmi72H#xD?8n;h#L zE!xd=pP`;#yqeotM6G`Ju4&6QHErS0?^>~LdH?Lyo9FgUH8h&+>l*7B=;!6sBOf`X z(ee1niwAGrxpIV|^`w@*wz8g%#(`#~QwI*@W@hu13JFbi4GEG6p3>NO`V0s6+p<=Q(vpN7WTg^5A delta 776 zcmV+j1NZ#!1o8%u7#k1<0000~y|c^!000JJOGiWi000000Qp0^e~}?9e*(`*L_t(Y z$L*ItPwG$@#-A!spafYQP>6sU>t@o;iOEIXNc0mBV}gr;L>KF5ayJ+K5>9@AE-a2F zCM=YQ*dowU{~P&-tDAJbCh#ux;D6ZTt+6#>__>_Vqx2{vzR4SE9r5Hw4RaI4;)!W-?@%r8qTwh;ViN*5yV2~tdW&m9`O@jDWOz(7^ z!e%m=OeVuHfj}S-2mpp*7=|%@Uc$*>N06qMmt(Pfo+JYSf&gqAe;AJeN$PfAUjd$P zG!zARd=!LU4`?%b0Na*jmUR)l(sc@(PN&o9G{gA)e!t%jIQLN$MNt%> z(P%Up4L}eCK@b2*k|aq2YPDLeR&!>S^@`W$WXjUg;$kF{&jS;&=jWFfRRu(`(-{td zW^*zRhpIXn0fu3ke}(~s!=cdR+Vk_Fko$68={ngOkH_QjIKw#KTdh{B)dJe>cDvmM zI-O3Z(*ZP1(=^R>G)a;qNdn<;I2;ap&-=&08ynl(H#fh2QB)-2^Bo`Sx~?0>xw;ySvTQU;QM0p?7wq=| zNxHi`Jp6oWdZkO#G)>dlY%-ZlCX?ALMNt$*xlS&Z%jI&}E#Uv={i{v0Z9ym$&d;Bo z?(YSGW$X23UQkD-_X#|!otGE#l_3Z%irHWARvH2 zYcYe_YR2$GjEN_he0DJ7on>=~)^y$;*&!4|^>C!c8)&T8fFj~Q2yMfVj2cyp}#(=$y@y8kKlTR|H zpW%);AXs=_x8|Z={z=2e%O-8tY--Ng)SmO`xRS8oe)fX9Wy>Gbt$Wi8~dhpbqR3^uLyIC>6kxX+;z(76K5jgql1Hk zS!bTq($!a1)lyPA)UR{uz=7Na%h#@ByVh|eW!e-0Q6ZMuJt{!ag-aK*l?n+>_VkDl t2%gf|7#k|dJvp#}zguI%;lAFJCpvtmaAz delta 731 zcmV<10wn#91jPoB7#k1<0000~y|c^!000JJOGiWi000000Qp0^e~}?9e*&UOL_t(Y z$L*IfOY2Y=hTo)Vt2C{3Xz9|$#X+RdrF8Nj1Pevlf}n$wZqDvW|A>>LVAtXja3~qt zL3FSbv5i=YttOhpR6}wHZzxwO;%#%igWnPYhvz)J-^a-b=ktVox9`}1eZJjYN#gmvy_J<%Oc0ir6Nz9@ z5GED%id!m`N~IDZxm+%n%Mp@HCX>nJ#f$~e z(r6;5?aR1l%i7xFBFhTG%uF!o^NoP#=eM`d&%n)%uG=UqND2f6w48t%C5RFEo(dhU|^U9a8?Sq3%rd;;< z*4Ix?-a7m8A_%(f_xt_8^|hi{7N98i_ivq2Rl@*);qdkKW9QuRid(5vDwT>TavaBT z9H8sEuIq%@wr$%s(C_#A{XU?os;a7hX_}^K0+wZ2mi2Lhf4%ml-e1!wDw8=n;`vZ$ zVIdY11j7i0W@iClFwiu>wvUfjSKs&P^YV(D&1SRNEFtlDJRXk|Len%&(|}0cXqxO}Yt0v)Bx&hYTHa`H%Huo!FntM9~zP)9E!~OGanZxB6 s?4M(1))KHQHERhV%1{CzP60rGKOi~-Th)RLwEzGB07*qoM6N<$f|B81&;S4c delta 308 zcmV-40n7fT0_Osd83+ad00611cP5b`Cw~D6NklIcK0*FPCJpL{`&4C`K_EWc44Y!WSQZGyMMZ54YlPzyC9QfGYg<3#gEt6-6;4qxY_Q9)ITl z4HDA448OQI7~cG1fG7lkAHRXteP;Oo>>Y^R!1Qm6YvbqFUmHGt|I6_D+h2r2u)RPp zu`q)b{=XX2$OsEMM%`ugj4Bch48lAR1%LhmP5r{~|JF0GLa-X-aAwqAQqQO+)xf~d z#lZ0K8;U|O04YYs3|fop85}qL2O-fIa_9mu4cNp10t^6OlfB+aKw94b0000g($3?BV6<FMd}>g((E`TF|$)H=c*0002iNkliFboX06@$HQ#AktfIU-*(KIPQfJk|>`@wPf zFysse_DA#W_r=LuoUM`?lb>8}2IR!M&AjmBoZPlXzFQk8E?!iaMzEhw@Z4cv6FaGD z6KhZLlv1)G3P7&^Bp^W50a9#Z^U-n*9F)ONM-#QG7oQx0x!9OG@ay%exN{2nae>00000NkvXXu0mjfy$UX6 delta 714 zcmV;*0yX`X1^NY$83+ad001BJ|6!3KCw~H*NklVC9YD2 zif!hP{a$lBJNl7&=4l)~ArE$DYwoJB|N`Ixo zh5pJvu+!u5Ty&lez{Q4*QmVWgc1=;EZ;>+L(;($+HZ zIa@XPZUw>Rn7FI8m!idGLu*~}+T_dU6W!h2LnQLnjDTNe_;6#p``U0&-HN3VPh~MP z+yq5Y(9koDg_Rh_C-+nh_Fi&(y?=s`6Wp%jE=atM4`fzhGL-8M=VSV%6DNFlzJ6u-@0tHol~DLpBlhpZHt zckH#!eLh;V7tzQDqMHoMuolU?0t6_E3Rza6$O?`*?P4~VWdSiHmzy-CGusq}OpXe2 zx&?N-O_&MOYN7RN+d(kHEPo3u@`Sl+l(4JbVF<{$-+RQ2p!Il}A)>(5=z#Np9%hDF zF^R??-EO_$cHbBYsvkbCqFCKVG?5hoW#t-mH;;z;eHifU|NYwUdq&fEM+_1>@PApigX07*qoM6N<$g3fkhK>z>% diff --git a/toolkit/themes/winstripe/global/console/console-toolbar-aero.png b/toolkit/themes/winstripe/global/console/console-toolbar-aero.png index 9f820400b6221d5c3a9989757705d07e4540bf3e..9b5cead05930f2f01b7b925af7519b2178132978 100644 GIT binary patch literal 5806 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 ChA+DS literal 9567 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 diff --git a/toolkit/themes/winstripe/global/console/console-toolbar.png b/toolkit/themes/winstripe/global/console/console-toolbar.png index ed2ca01ae0c1de3d9e32a57544ca1537a4e0b914..b231733a398a558f9b1193ffeccab1336d126232 100755 GIT binary patch literal 5060 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 literal 8269 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 delta 463 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%0DtWE#-of@f&c&j07*qo IM6N<$g6oJ+_y7O^ diff --git a/toolkit/themes/winstripe/global/icons/Error.png b/toolkit/themes/winstripe/global/icons/Error.png index 289cdeb6fe409903b1598bb5340502a86507957c..053da2bf8ee1fd7e0b12c2834a2ff6bcbedf55f2 100644 GIT binary patch delta 2086 zcmV+>2-)|f5!VoqNPh?UNkl-Omw|rw{L#lY6n>O*!}7GK%I0R#XZ!S%RX zy>uJ~BWYu=)t*TE}rKVmOzULnLS4s-?A;LaP?iY*>MNxmaFrL8%Q&Y*6l5+W3 zO?yF$1fao`jkBlBzv(w$w1@@}bvMj=SSAzon9bCKNqeJc8WQ7sF}|0txIcu997Z6AJGU`BIm!^>yld`%(g|S`+z<>DB@o^f;%Ofw~eVB)VdjQb}hz%A? zlSPtj(*TOqDsqg*@3_;`FZHLVQ#;IAZFrHqnC#qz3&ia*G*Dbjt+(7l9mqrnChZK0 zpMjBg-8wq=>8DfUzx<%x(F(e>rkfDbZ28cF9*oLvKFz;Numd;(gc-{CbQ2%q!QL9cj4crQ? zHyC_zLd5w25@k7acUsz+?%QuC417ISlOKOfz4zZwO)zgkraYY407NZ(R?2doAK*2sbz3vmo=p$J zd|J4#$HN}%%>R46exFH*cz^MF zTwHStGEk3obfbe+9}o|8BNL5)I3FPsk=hq0Pm*`pGIC4ObpbVSW}&9Q?>vLyuw96G z;_dkOP7l_*767&AVAX|bKOh=V=<<-@>)b*9}-9~m;)g|Z)w`;cu86! zw#3DK*npC|7cbsEbcAYuK($Dl3x5$E;1~1g(TL_(uU@70RjbG)1l3`DU4%eFv-^&w zeU>Omx#CT`y}SO_Tge3g7dlvb!{ox2+XFSd^b(y%k%`o?uV5gTo`_F8111^_i&C_=P{ulRcvwpuf`+E}2-L~Fb|dW(w4g?~EXG8k?M zWN%1zU(>YVSV>wW)>n35Gz$tN}y~%62f2pctYG z+weubzBNXObn%p?{i+1zlK=QYh<4-QT}V5d|2u;D1onB$!w=J0w>xqs08xqMs6r;H z@lI63xH*$--(W$FyD#DcXBa`lJ-k5KZvbXh8J!R zw&=MCb;6$sRLn{&F9*ZftqeeHHJPqt>2$yL7ou7C9Q?s-t}h2b1GB^anT*_rCH9?MFp);xk-|dCCI)n~lb689LpIQ!5{#-h^82>t+ z`=wrgCPR{5#(#XNUm1C%W|pMPr8?b4?2wN(V!|!hLfbI;yKE9B{`=eL=jHpks-9RX z%lRm^Ia8ZV=*0if6wI*TYm)SvT%>ZfUhn;#!7%zqd`{PC+Qqe+_BrlPKd-7joOY|S zB)|7{jTl?8+4_>w(hm!wCb$8f(A#~-VOC~A&?=}kxcUnBwQ<>-1) QPyhe`07*qoM6N<$g1ap6PXGV_ delta 2163 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 B=q3OF delta 686 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 O0000%RO&~xH(geui<|KA5?092) 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 diff --git a/toolkit/themes/winstripe/global/icons/autoscroll-aero.png b/toolkit/themes/winstripe/global/icons/autoscroll-aero.png index 868a0ba6e943791ec0e055d0ff109c1dd1f59205..1fb36b2950fba126b564617b3b918ee5d3ee2104 100644 GIT binary patch delta 3103 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 diff --git a/toolkit/themes/winstripe/global/icons/autoscroll.png b/toolkit/themes/winstripe/global/icons/autoscroll.png index e9b7515fa261c70cccefde23f3c96b3f44367fd8..fcc1c3fd4d1861a1c7695e3c09443f0072cbb801 100644 GIT binary patch delta 2244 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 Y$Q02`HZj-V0BTd17?|rf>3X352XJH)i2wiq diff --git a/toolkit/themes/winstripe/global/icons/blacklist_large-aero.png b/toolkit/themes/winstripe/global/icons/blacklist_large-aero.png index bbb4c92f3a6d373758647595653aa5de2f72059e..4840765d3e25f38d1a3bb1b711680d55f6a8898c 100755 GIT binary patch delta 5418 zcmV+_71ip2E5Ry|NPiULNkl;`dvBoO2T14iSg5f^*g%Z(X>4JU?9DRkusLuMvV}CmE8K7NOz`670&E>cEu4j07_+`2LS{wRm{WP1+bAWFGTgnPpGC^U^mV}Ai~aIXULS31+s+R`nA7x51q z6+x~Wr1V8Z;cq429D?@0h2ncjf#Q@Gnv!Cr^wxMm(P6*B;legmeCFr5(zWAy`3H1m z7xu6I3JCT%y8no0q5OgG`Vi@B-iet#2R(fT0Cx8fc5pkLU)@A!?e`!}3+?0rM@9Hg zaT;(Wr+=Krv`elbnST_LW&Yt@klyH^Tp6Qnu@;pkD5V+Q_y~iSevr=Q#}KW(LL^^? z;)CVbKQjH|l}MuxXKi6pT7M(Xfl_{(@++>i2Ip`}p_Iar;D!@i z+oBo@RLMmtyOUHFvw{ud3LiDLcq#Q2t4U8d2{8%daR%ock|fk$bt=uvZ$!^K0Xi*j zx+*@1199F0f?-P5W%TCnF!GCA!CJI2sQ6Y2Z46p#zdig`N`cm>pa7MoSPQO$NBYv^ zxqmW-g$L1-vVg4kTL0L$NRB?9$&e)xp|*Gl?$YZRIsbGR=psp4tOl-x86cuS8%DnQ zS*Q)5XU+Cl;#__`qP2zaMroT;ihWN#h268qgRY0F+>0pTLB8;lQh@d+Cd)rWdi;qK z3g5d=L})B~7435_qL`fPbEK7y}ot#2mf=Yi+N8Q5IdS1+6Oz=2Y=-N{Q=U&@Qg3?%Dg>Lr)Zw`^HhF(3O? zL~ao<##=$)2|22(5dX_JK?REJ$&AP(!l0BPR0(!)JLZr%^qqb>&FAf;!eD&0w`?gc z<*FPbf6n$OorfRr$iEL7XMeqcz9mb%pjqZgkJi1853abNwAHMXGs#cQjc#9rmqRgX;6@6<3&ld=nBCOoHx9P%{(kp6y7d z;|WfZx4$p1-Flt#4dJ=MNhur39rE`+om>hA+Mt`alhUBx!zW z(cw+WDngDRPSf4^2!GFg<95A6Hwdugq|7uD_N9DEEJ>UJ5q=N?|X-~#L)HlU}2q{gps zIReA@Zt;DyM8?k4`TqMHCibQ!00F=4}U($)-Qa4=fC}JvClp+;#&mt+@f$ zDj-BWbH+>qT?5htr+mnB!2*i-ta7)od6qq)1r%Y>SATCbqC#oKB&a^)x&2hBxPh7p zYC4GV4i*e2uN~|xkQpN>9H=2w*cpuN- z^gTo;WH|JU*`6J?MzMg6ieVB=uxtU*Kl3V1jKQ_qSoCWEef3JYEXUKpnI&X|YWhL+ zFTaq1H-DZ-diZ=uYvb~W$)w+Q*Djv>1Z4}F39af{J25B8<)Za0t3 z6$Qj+32C#lHZQ*`W02ju*?8%tY`^6e(i#{P2Y;XT8Wvpe5gJDxP4g8e(mdigHr?^4_6g~ivo_7S(FZmjcB`4vO z#&)}T1j(s(D1j-hy};IbB#*RMDKGr+Fq^Ksj=?+c!~nVuQx~7e!p~hvZNZUb-7d)? zhkr2l-S5Ua$D^08KsVifiO|?6Kq(5~NKSYq%@1Em?bt=Q)+qZPybI@CjsxYAQ?wS3 zC&5<_K9qwl`<53zRCARv)gotz_oB5&{8$GJbwZV<{=8O;UANuF<{$nL85tp&0*yI` zam+ugpt*R7&nT6`S&Q!PXX?_WbUToya)02WXapL`3_=G%V~#k6=10FqeaSK;Nzp+6 z>(4E+G^KJCNQJEi>@W#aKlxRfC!dB>x+r|cm3GdfdzRs{%nKe@$vH24;%kvcDR$p` zFOOYw4f4VZq8f7?-ENmG%W&4>vJ8w5pGs^0 zHbpp9BIs_H|GD~VTAMa`4$!AK{Ot2M>f zts-?;m6-U<{Nfjxa@jSg!;e6+0)I0^p!v3UF@5>RP}67RK;}aJZrg2KtL2$ND0E0q zK}4Lxb-O-x55L6YS6#*Kd+#MNVESOjDW`GNCq9SN>cz9ibF(aePFKkV^ns~xtk?=* zw{6C~Fof1c9j+Xzq`#l(@4JwLuDF5Z_>+-t2N8=o_IRee{e76j=aXd_S%0U4wHBLY zpf#;0pX7zxZ$}4?pV$0@;1YaU*J{Y<^rOX?+%&WX@uDnhZ*DFCe&`+jsC-T&Iaz>1aB7cchhFM8_i zO3_%dgmlG~?0e)~`c8c{8AXUw+LyeN)nPJVfg<0 z+4$A3vhT?!NgJT*u;BdnbJ%%*N7gO+mwBpejK`QP8^1$5aW+_LAxcpkB~9r(`tJ2siNAhmk;SwxcYlFitird<_m>Nd#ei5> zE4P@8M$#Ih+q8c5qr5KQTCJ*omkXBoY)>0QwsR*>U3C>N-g6I04RnK?o)RL2G6ro7 z#yNKU=_Bd>(lShrb3|G2uBu`Xwi$5X?h?L6968MOV zy*C4mG{5n-uYZ3Xw`-SQwGy9?zNn2sJIBr+|CpV(-inb7-7NO!=QxKph9pgR{;s=t z{QB#0Lqnu}pi;$A7k-q3&pO*HTY2}&nP`X@kt*vn&8x*R3{I{lm~-;pPEpb377Z;| z2>SH3*RtjFpQpWH1I8G1lH~5BltL@T&>eTMb=4|VyMK)y09Dhug7e0UNzhue_o0V* z^h;l&wRtmX-CN3nzyAPp&%XetRF3+}m^^)sE)>~iCB5z`LQa?smP=yJ7TF+9hol5X zGhs9!PDnt`4b5w8o@_ z0isGZ0if#~qnV;@izY*U@zgT>(A_-sneEIt>untTj(4CM4MrY$gr}~(mc1J{k~V-k zVTvQBPu^^kdJQ`~%rm##!nSqmNbtfp4xPhMAAkM?jU$hy+v(&cQ+A)6IAs|+O>wcG zpi~tDm`p`T$}KFHcYnIp(aMC5>z%eJDqSkkw01thj#XE)^}6e@O8Mlb(;;nwY2X_k zv1=1623kYA&Gxlx+4!}u!Amb;`XCu-a{P)bIOz1(VPp0fD6T}t7bi#n9SSv(OXN!E z34eo=Dv0-RgjH5O04yTaB25JYCa?gTV}S1qbTY?i z2G&Y3&=77AFH|jjDo`4gYIGW#Q(=@X3V%*@%&z;)4j#YuT1GZ*^p%|k9D3%PIO-#x zL=6o1^f`2j;>uUb@#Xv>fS-;oGL8#OToZIfSFIDkE_15rw3K}R>2G|QtW}*T$(|RJ}fQc=rFq5ZxrrUZ37eM*Eqifmq zum4Qa2c)19Lu1Zd_B{3kJMaDvvXCR>&6A$mVQ!VqF>Bc}W}R}1Pl|dHwsJ^6KwrRX zwbd26At7=lbCr-Ih*FRk%oOVtYkzdn_>f{KfwIpNTh*%MGJ-N1)d&`=;F&vq&eK2p zIo)<~Z`n_Koznc!!uPy~*{7cB3$0n^`A8`YGN}oXXaQE`=3Kq02QEQSS|K{gr$nm0 zEuke<)D;TWSH7k~v_h47dT5QVJ5tlrR1rTQ)r;!!d%d1k=LN=}{hYWc8hUAK8^F30pDy(&|?MFPdR#W;cXDRjc#otJh-N-HOYUa|DIznN5~4^L`>i z-~0urG_6#HR4Gz1nJ7>sLw|9GuNX3Pipuo3^k}xKn4ZQ;*+QhS3Y22nvQuEnz@!H; z$7{*w|5FGlc)0*0lPHLctq4_6du*do%5=HcA1T0+yje+!14t#ZsCu0&R&tH03_(eV z=|#)V<;hOu{84CKN{I4fBSETAVI~@parvZ36yA@h$6 zC^bNfa3_`Nth}Z;4u3}|hb7f3U?<=K0 zABd7-07+C&L@2k)q%wG!UoW_sYPT_=iQ$6jMn8|KZKc2&@IgoF8!|$1F1H9(>ND8U zQF_J)CowB5RD|#40@2K?p-z<$z6^wMPEW>|W7Znwmf6#2wSWCYZSQ3G{@5Qq$GPIa z9pfHXBhd8&@_-0}Jp;#4C^serE{(l}*d7b1qDuRF2~^1qbj{CKxIpu)j5Cnk8$!o0 z%IZF(*Uj*=&IeGyMw?}ev^H#7dE@`<-`P~LK$!o-`^106wOXyM<0;^$9oxCQuht*P zg)dp5eCSYGp?^a*rIfG7YpqJ3I{&S-_J4KJz9^diRtjx&b(>abtx-y2Ot_EoesALS z!#O&3jpKDo_spL`DgTWA!9)4pul(@vFx$3mXK--vZeVY(0#*&~+%dh`Y@QSTSNF1e zwOXyMgM)*2uUoh7cHp_(0^_iQFI#dL{!fMdygXlfgCp>RBGS$k@TdIJ{E5H*7xcnb Ut!R!cOaK4?07*qoM6N<$g3eKe8vpwMqdXYb$s?Y++xT7PSNlK%uNV8x0R6X^Rw z+RmhH=EqdlHMBiK+p_ud=Wq2BUvMWE9y)90)srSo#PH$6_c(&4|M;I$+UzMBL@Naz z%x`>7tL&W8%Iv59x>T8SiqDzrlso43l|83gxJfPQR21T1stbZEZb+c5kEY-BrBazfyW^S_5dK*B z>bvz!c;hP~Qv`x;prbGRLiSO{N9h03?i+#J_eg! z2YyD{D}QF%2?BdX*iWsbIafIPSd6&jRum>rgKjkJ%PA*)BAs$|KW*zYg(wyvghcO} z*U_=~o2adSlZKa8Av#P$cAMJ~Li7{2FfiCTx#^4i)Ety9z8%FGhtbtVYl7ad#_xw@ zp9v_=oP)v%^U!FK z0RwRcgTjRZ%10i9)~oM@oOCEqt6I|){zZ(#TMKZ8sT+0l-hU^$pL&!`DTPcD2)~hV zynioAU>WV38Kh&vDL|0LvEEb-7U`qcQ!$3Q7m-7Id;6o5~ad;@Yd$S8=_;ZfS$E$k?z`M zLDxc6@FGNb5GH;|3Xt~3!o2g1*$*as^M5(sugpCXeP=90-xJFqTBS8#WBM|{k`~ri z`BUxaz|KWyApL+0p=y!8DaZs6OPh|Hr?=80hB2d)0k`^Hs6M!i?x$!{E;+%aixfH!ZX!YX)RR&E{OM4;dyS%0E*!W!n13ua zNCiTg=di2P*1dyWPyPz^54Q&^=og{*iDFL5dHPowR`6H%Nz8M>PejL?~^Dg&c9)))U`E=FB?3zA7w_h?mnQht5I2K4;?71TPn zXYZu*Gw(y?UM)aH58|7AsAChB6o1`7E{Y26I#MHIZF>_dxsW-2Jan(OCWq+W4m~O2 zGh_EdJ4JzH|0x7!X|sPJ7M;T%17NIx8u@>ti$W;7PC`~j)}%#b2_jR9y+`id1^OwR zUxa*2j-s#S7Bi?7Ub#=1p^elz6i!s;fI8+D9A5W703)ux3vEY!+6XTlpMN)TUdoVL zu%J3;q82CxMIQc4i9?u(31q_a!==L+c01u>fgFkjIO@qHhhuy|Wsy-fFLX?at&iJl z8}Gf>&pn#Ir|)gUN4G4-&cbL4i7gm@$t7r+JJ-#ajs3zSw;@M~wF1Wz0;&ra|Ko=k zrl^f28^_Z_2!lF?P|_GPJbzX|%W=n{bw@g+FzEmK-hDS4O6565c+b9G)LwhpB7YBg z*QqC=W%g_n-!6hmnawS`c){ZGqJl|}dX9y0Nw|^Ht2ZBy`BM2#J z*P1oxTfg4eedb9tHf_v3&zn4d`tPh91Atq%qVwK+A=p|9_F3L7gVMCfVULu9 zQQ_bMiRJG^Gpj#Zgn!x}R}V=EhME2059qr1Vt}!-9fk?|p-pxd;iYv2>Gmb+l-Rs~ z-KC_2P1#GioPcA#p}^E*^Hs$m= zNElSP?7^k5r1^BiYV0CzUp;*x%Ea&rL~;rfCt9@Myx9O=m3+RJ%-+mAQ~GxH<0P7G zH#_W;%;c0ycYn3Z_q~bGJ$^XETDo%~)B z!4ynYO47!EWnC)FU&slvBx%qvn1P`8QOm7$iP%qj4K?ESeGe^zrrcxSF3Xpt!H!->?{Q3M^$HfmRoiWIO2}p{R-oB4rkAK~Rk5=3RRm~toTjq>p1dIYu zESS{T)F7P&Wbs)9w@5>lJ*Wj_VbE4@ShKFQLgp!263gv}>zo^iF|@JCC-&t%anXVL z3QI<`3O=7qpMlC}PC{||>@4f^pWb3PvT&g!wMACMxWFHkR&s}zu;ad;ks=F3I!TSA z$6Iz-?SD0iQ|c9iAuz$%0=$2QDvpoArBZ+NBLhK8Iae+Vctkr_?4;LD zLO7IzxF5m zX@9*QB1oXxt^~#kQ7-OlPtkn^h=r%*g;(z-(psN#d>C4*S{M#)7MPOjS8FnrD&)N4#>^xli29%yuf!&lABesaJ;Xua@8lxNR1 zq=xm^_W3ijEKP`@0-a;44m$`uhky5av>tV=nfXxo^fS#g+B~ztof|8-pCzTN@P7qc zi%jUA4_|x{Z{B(<^amfH$dRYDh>2&-!>Hp=%s|{TM;d4J;fI@yJaMT^G8h$3RpbKB zB$GprKyk`}hNPHw6AxT01{Y{uw1|{Y2uQ6|l={-pZGZO-v>o$VBYe)U!Q81%biQH6 zWZ{`}7^cUJkGCWXr-Gg(>H7b@<$o4b*R8W0phaN+)6c@RZ!aM;Xt6HIO7y8R-$S6C zMwU5fE)aY%s!nUJgv3bgX2mByW3IUd!>+s)f^vJ^$S{NNZ~f9&F>>BTg#4oekSUkH zr%mZllM<0DGrhVu8#8b-IyMOz8S)smH znac&_-l?#!*ct+{X+6{jo#sZ5z;US3Hlw>JEJ0M*~+BF_kEqLEYPf^>;7By1VZ-pvR=E?ZAUD z{qi58G-+emt3j+F7nH9_mY%~V$5D%UWMlD30 z6-Qa%+8h6Y&aZy~-G5I#1=ZP^g%cmH7}VIW+uKq8tIrtW*?&W*bLQ7g>Fb+Im!h_D zBT8e-`7vA+VBsZ!E@yuKbHfez@a30L5UCMekGBSVW4o|%kJC~e`&MOyZ3UExVPNv>qA19%e3x8>`P(1Usx8KHFBv6fJ zzR*UeO9->(i=c2VFzoKey1VYeju&14+Z(66!w#N~LoQotB9d}gB7D8j3GG2ThgGmG z^F8GP{V~AT)#4Tt=i3wwwCqFmH@^&Z0Y>tif5!z&*ldpl;sVB6Lh+r?KM(GkO3oh~ zJ%x)9d_P~C(0_Pa9(o9G{q(1X_#{MjN@K@h`uDCx<={h*lCpi&2xYkFxt=^Bms|V^ zQ9$dcysRA`QNH&^FI_2y2XDIRCMZfuq!Zr1jQ2&;;G_YzJ@_EDJ^CmT-7vH1&xd>H z8ostb>FthZpEbg>t1;OTMS*DxFT}W0Pq)ez*1ZA~b$=1VQ)S5*<-pp9!J*Xz11E3p z6lHC0=K58Y3A*veKgPRPT!FsTtBskFCnd`NR|0uxuFwVT5dF)0aWPq4C1S zQF^)EufB#ie((cS*RMyhY%OKVKb(h&^B0)B-=n?(OmF(mg*>~=rPobG$U(EgxFn|1 zEE_a+0e_e8^ft8FLbxKJ>RkB<>Ydv$@!Q`c%6pUnP2o(xn^64i>#jp>%NCTlfmxIm zQ?#qu8TOW5sb9jluY83v#|pY%e;sSd zLUylNV?r3paH}|c`ee=GZzP4bSWy7>Ixa_i^t?KgsJv~dzn9!6^cnyQ$^baQq8FDzn9C!{Ca_b z*M1IO6!jKhn5oX}SU0aA2^JA8b;3px%j7AhavWEML=>qolqirTLw*fkw#ZNkXB)14kyO^G}>{Lj0Jm>d9%P1iV*Ls4Kqrw<$iHr&>MZEBKiMn5G zFaX&3q(*qu76Bhrzc8qS@B3(xw6sR6nsw+6_}V}yna2#!U(3x8t{yqW4;Aak{Qoo} zlx9@YqP=J;kL9(gVt@bC(b^pJ2hhxVbe=-{WpOTzHo`=HZmghC7-%_)Ij*A&(KA5p zl@M7#z?n8(ISt!%_pRYteJ}~WOA0@PCiU@J5Oy?F}hVh)6aet8{aZL>6OxOFlPi=Dr zPKOWDQ(u=6nq$r)MAT@MQ!uS@IA3VG+n2%-*yamok^6Fq3{3?f=vsKy-=!O3LGtaak1SOQniTAHxsDH z4YnOrI$F)0cQe?v&U;b7nzYfF$v-Vycf-B^uRmuK*#sf^ zGd{=vDy~|sZWu@bkMNHQ`FC}eT-cJ8`NuiF6eeEsr`cx|mLmF;Vc*mPrQMhDzKPc| ze~hm&^?hlY7Uns^`hDWZclSu&HTL61&kXNi#uo0~-DCR*JM%33rcImC(b4f7FF0#f zz%u?tCI6_<{jTm~_s28O!mnJp@^RXIKUkn&>|o25*bnwcg>CqF{_S?ccaYqDK>?rS gzfZgZ{!f4b05p(XqeJ7_1ONa407*qoM6N<$g3+AD`2YX_ diff --git a/toolkit/themes/winstripe/global/icons/close-aero.png b/toolkit/themes/winstripe/global/icons/close-aero.png index 09a1f84c7c0a73325991b952fa33053ff857027f..9821a821a09d9e7640bd6de1d0cc5a2620d319ec 100644 GIT binary patch delta 1175 zcmca9@R@Uh1SbbG0|SF^wf>xm#ya&(ECD_tuK&S6R9sqATt-wvPE0}`C?M^zQO>?M zI(BY;;a)VUE7xvcxqj#B^?O%u+yhD}s^}=H>ME%jD5)DNsT&1H=Lg3YhQyVG#+QdB zR)r;L~pHVdLo&ADIAcayg31f77*1|E}4LbjNB zPqy}*VjZ#7F<_c=%r>{+>E7`>d_rdiM$8II-WeJ-J1Tt_(9nde-D$ZXbG_SE$FIKC zJ7Ld;%@2T{1v*h&DL_&wL`ExF#xPROE<#=_LtZaWQK>#2&FxBhMJnD|YA#jkmL2Nh z>6%()T9$oUVHLXi&H5QNM(GpG%6l!W7FpQDS~|pAx|Lfs&a!q$vT>`ibxN^yPPg?= zwGV4_aL9D*U*!~C;OtT0>ek^pf1Ue+^&WvW9z~Nq{VO~J>%9XjeS+(K6I$v6;^qZx zyc`(R6%@BPI6NN`biossheUOT#PmYKFtlPaBpAa=R)y+nJW$eZ5mp_D$L~d(n-# zOCBy-@o4d~lS@{d+Frls<=G3L&tLw0`Qk-jls{BrJ`4;m&ypa&U{mx)XCz!bkeulwo^~D-C8+5Jde+0I}*KilD;YPqq*mdPpK&U z-KBnYu6pZ>Zolp2=^H<^2P!g^e7|4M`dxON{>+Z7tCo2W{EF`#nH|p3(vV)0ZTN4B z|AG)z-@T4c46FO6y!#uwJmlFyp?D#wj^J#voD#bua!$+3ZGh9uK0JM!om6Y$rSJCB{?%l1svR*=~qt!pjE#-lL1{-%x9turZ%sjcFg^X7>~@naa^pyP%>2#HYR9IOCEsqb)!W{=lPhEU zdXukmwM`9A4iz75_-LpSNbla8gXs4P3Y;{TPHhk`3ISDXSS R2BoTyh?3y^w8>f=`T&Y=7n}e9 delta 2041 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 BpYs3! diff --git a/toolkit/themes/winstripe/global/icons/find-aero.png b/toolkit/themes/winstripe/global/icons/find-aero.png index 248d2ba853133b79d5353695bbcdf0a8b948cbd8..f98dfac1f0e18365f8279eb4f7906b9821a3eccf 100644 GIT binary patch delta 975 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 diff --git a/toolkit/themes/winstripe/global/icons/folder-item-aero.png b/toolkit/themes/winstripe/global/icons/folder-item-aero.png index 697c63ac4af1888f7fcafeca897590b45cc09237..12d51a45d05d26b19f076ad735387a52e87cedc7 100644 GIT binary patch delta 1573 zcmV+=2HN?96PFE;7zqdl0001RtaxvcGc1uK5`P8sNkl6h80GAH)3c zBOnZMI!J)h#>AvCBn@K3#OPwE8yBukx^wBqMAL;*x-rI0S4|X?cHu%p!^%Vfi;*Ic z#K=#yB9Zc67=CA%_ujppb7wBR_vQ!6?SYp&@9*C4eCOQr&N*JrIgE^qa5zOQl&-F> zkAK7A@J;tUzSTdpzP6FnH66S@FK~nDBocfIn*tKHoI z8qEeLV_trpn1Gg+7SH(j_@@^yT})kg;lgeEB&#diNlSkY-)jcu2|}bU4uQ%#@OT3b zpsRm=nGCzY3jhKs{%KrujCN^gXrMzM9e*ADBAdw`wzai=E$^A81r3QyU>MKC!R|7w z{PO@A$bhbM2!_H?AAbq_{s5R6tAJSnfFVZ&f;4xGMI@0(_!kxyzOn;A>wqs11%IU% z!Znwn0j`4PX%_dUf4mN%+64G(1Hgb62Ot*Xd7W*el)b$@K+TWObzOJ*fJF*yBY$%T zz}XYT@58Hq19)BoA8HQl5K$hY8}RZBXn8Pll=4RJ>#)4Ma(q5JH|KItW=%-9Z4jSg0B1N3V0-%J-YEeBM`r0RWc^ z6bNHZDovB)LI(N(j*OJS1NXhI8(<?nmhfI;lVH<6-l`0KZClFe=tc}+P4Tm$7{@K0uyQCZq>_BK+ih>5r54`84NtS zFb8@ZSoprjk0!wwVP(_E0?S1>1Yj|(NFXY+3p97=b%7&=$k_lVX6Oew26AR0Aj~+x zBL{$Ekh9FF6Tr^SPC*QC`k-?`dfov5wPZ#b?F~5}KoF4k2fD}2G@6KpSz~SLxo_ftO zo|wRifS$L@(b3W3!(XOimXU>uU+9FT&lU1;kMXjmn` zg*G>^JfF7L39YTIV)3o5Ets91#oWLUid0rs5_lkh?s}rII)5&~fU7^?!T!KIb^sI! zgTbHxK#R4vw*#6=+#4Jm6pYl?))t-9QJ9os;k5n$DS)g9Ael@?+~3{Zg;*?htT`R- zlJ3mqd2eqo_6L@a&*xm_xqV{#O@}P^2o!-MVCM#q>kl-Q1duE5c>$nQDh1hW_H+RD z3CcNQ$^JlI0e?A9cfiq=5W&r@Qv&Z9c0HDL} zgd%4|0Cp2P`vWE7fc%V>V?;6_S)ga+)*}G49gF$UNq>LfDSV)yKY$aGw@Z2@0LcIW zk@t%NkoEpqeW0K}kWTMyZf-{CTVS`bWWyco>?U;f2hM1MBK?8Xepg%A$FmUdCU}$LQ4vooVGPb?F9mA;ExVX63Ff}z*h2M@U XEdNV>?h5}05k>@zcU$0flSv6W!ZhvT literal 2435 zcmY+`dpy(o9|!QyY_4HTLJ~_0Nf{w0%a*fbV`%9p!XhU-Zga~*HjdoIahpVRA@_S1 zNtTR6ctS}*Qvm>= zM6kn?MTry*G(tvvhPi7b3K?(v6L?XItpD7`5QRL=?rfMS?Igpt*WX%v@e=LWMNuL} z0}WnTUh4-yZkm8U=HfT`%8eATlcUa<^k8tjQm76ya--DTyVL}i1n0X3u&pSVN;z%X zxz298`oXuyj+UCW?>< zqhG(>A+%i~n`$l%Ec7pJOy0PDc#xyvlMd;BC1xUXPnExEDzP#d{fvUvP@H@;RI$sa z_3iBJ!ougz0|S$uhI>O`#pNWZS<^EdWsCbxSN{T@XgdMiH8HfiFcRO5 zc7`Oz1y>oG#*qP$l!E}k1B-!C(hUlHZ@-=vUS2wLQ z_qM5AYnUt(@%*(J7&c4i`ha1hythFYTn<^|40V`Pw-R;Mb+?Gd*+KujCk(4wswJmV zxA~@%Z5oQtg95$XiE&GL#0u)&BfAp-;`Y3(tQ^i7UTP4BbAq!MC;0r)I+IJQL3;ep zZOzTA9466ba>_GqHCR6Z(W&A10{vQ+QcSMXFbXMVp$Mjmz$WXb+C~<++lMjj!u-l`gH&T6tXSaI-L0RNPQ(2o}&13-ri^CPd#I_SU@6M1$1Z zG+X2;OK5m88IUH%)>rIdxa{S2x2a9IXnNusi&zV->5U0!SLHcFs%B958hd>buAe%^ z^36;_1SGLPKCaT;wuV2sTaHN$ojMO?`Zd?qNeNoK>Weu*%OdhOU`ZhksplRled}V0 z%+>7fmCyeG(1|-Ohfyf4Iw<>@*fFkPDpp0H|Kj^YSzu16JYQirZqZ4(4ooZlJiL4< zee3NiKbs0PtNPr&a%y25ZWmay?Jo5DFzHp}>eOK^Tl2#|t?IYJa^L24VSBWd6_1WY z$gOSsyWpH-dEOu6_dPvj{>t8*R)n|4qs#_KsrYZ<5MPEVys1j-ESZpBnsOwTkt?VFC(2epw0C{lgBG)83xawKMn$f1uVq19MV| zb3f|QW#^R_UC<(x9xlW&jmrb~I6OLYc!rK)Q$sM?(=C?TaGG0Dsw~D7B=Z1Kekfuj zpfUl_NdB6p&kky54f2vpCzV|9riA&$Dh%ezTfYEHtuSOHc(Z#YV$BS zQ-Z;}`Yy8CffAs|hd$cYXyct1aWX&uB_E2C=R@`M5+%$Ih$^I#5X5&K3Kx11s-%hIN`=qk=sUZu? zsTe5~0VGKP9$nOVUHyw#8Fe$7rlqHWo&*|;yiptb^uaHiQE!9T!bs0lSGtygvX<<^ zt^c*FwzdfHvVP8AVC-1oEUKwA@EDEo=wJX;8>A>=%o1Blh6u0xG5%J5CA;HZmB=qU zl#`ynN3;7S1oO=juJzV58M8vl9+_lSbrKF{_hq|KMuFwkcll0mm8aVFHpqh`Jlnw= z(zuZtIp)7x@G_6y1wEWlYG@MkhEP^F^j4q)wwkqlw-4p`p3V1-26XBitd#~992y*B zasJ-{Z|!o2;?^BV)40_=2P3t>Q=@T6z!qkn&N3wi#}xuCF3_D6P=<>k8YI9nebD=zlKMi5A_9r qJ|5=K>qI=g+)r|FQX-NZDq+C5NP47Bv63XZ8xW2=;_GZE@&5rtc4_MX diff --git a/toolkit/themes/winstripe/global/icons/folder-item.png b/toolkit/themes/winstripe/global/icons/folder-item.png index 1a0813463172b18984e5ba98cf2277525a21825a..6ae74fe045cadaecdeaa7cabbc4f06a0c78e074b 100644 GIT binary patch delta 1434 zcmV;L1!elD5sD0u7zqdl0001RtaxvcGc1uK5`P6}NklW=d&W18+S;}Q(NzN)EP1U8Qvn{tbV%wKzKEE7?;}jw=|I1%dtBgdx zxNH5m61P75WO?m_cc(AVH^*z^=lR+5O>irF@wwP``lt7gOD0o4OeW0Ft5+bHcu^P2B`^E0my39FoC91AE80n4MgYC20{+1!r*Y=EtsOIDv4U*$sz)Zhtry z=y<9DR2@LUO|)9ASf5l1EKz{u?gP-(!-|35+;b5Uw_mdk68EmL7|=qbogcVPpa?Ew zGeu{;*pU*b=_DNP?ZLTMua`y^THIlB^Clc5K6>9Fpc#^GS_mxIe&@a?a9eXW)^Tk3 zdDJu^m)e7x`g*YTzbrmZ;0akK2Y;JCQ@3ps&^2AsxX(=ol!MC*ln5CDS;_KM?%+`z zPB(Wr<`N*^@7_}g0VmA~oQP4JDfYWQ=-Djjau&kjQ%*2qf^mTb zf%S|Hc7`s4q0w%zY!fhaQ_>5;`Iv!IuUc%M0!csK#SJw$)$|fTsOE|KHh&4GGJVLt z&F=jPf*1zNQ0_PcOe@5FPQYpbxWWUH_Vcm8&c+{bw(|wZJ^bwnU>O3*M^Vfj+6^3L zYyyg+3uFO>Y0iDFGjKOHa9%7XaCLuUeFWQ)@1OeC8cY}B527Tf5({DpBmo2jkwTQ& zu&3ODWJ2tjd`~ZnP?fhC%YSH*|9Tlp>_!wn8@&N1Ap%{ACn+MFut-5S2wD#Wu4tm) zJYBMqVr!KvqM#DE9tbQ!>w&-$v>pf^$^q+vz!J0`I1UL^4+NH=^*~SwTn_}5!1X{t z2~-dKe;e8^SX^AZ(%9J8lFQ{FlgWtK1nTkGZkncvt*xzpudlCvKYuYXkvet)RaI4W z0|NtfrCyqunSq|3p7ZM({z5HcXoEd&d$!6t*xy~ z!^6XK)6>(BX?}cs{B`X5OYDDVbaZs7A^|dS;ew98!w8&6kc7iw=88Z|DsoUi z&H0=+F?of2Pk-y}?d>)RuDw@duN5$%;g8-BeUsn>1P)HXg_?6~lyU*y5zy7u1(+p^ z0R0GH@XM&GmcAiOj{pDwB9n0lHU=xAkpKVy delta 2120 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 delta 714 zcmV;*0yX`X1^NY$83+ad001BJ|6!3KCw~H*NklVC9YD2 zif!hP{a$lBJNl7&=4l)~ArE$DYwoJB|N`Ixo zh5pJvu+!u5Ty&lez{Q4*QmVWgc1=;EZ;>+L(;($+HZ zIa@XPZUw>Rn7FI8m!idGLu*~}+T_dU6W!h2LnQLnjDTNe_;6#p``U0&-HN3VPh~MP z+yq5Y(9koDg_Rh_C-+nh_Fi&(y?=s`6Wp%jE=atM4`fzhGL-8M=VSV%6DNFlzJ6u-@0tHol~DLpBlhpZHt zckH#!eLh;V7tzQDqMHoMuolU?0t6_E3Rza6$O?`*?P4~VWdSiHmzy-CGusq}OpXe2 zx&?N-O_&MOYN7RN+d(kHEPo3u@`Sl+l(4JbVF<{$-+RQ2p!Il}A)>(5=z#Np9%hDF zF^R??-EO_$cHbBYsvkbCqFCKVG?5hoW#t-mH;;z;eHifU|NYwUdq&fEM+_1>@PApigX07*qoM6N<$g3fkhK>z>% diff --git a/toolkit/themes/winstripe/global/icons/warning-large.png b/toolkit/themes/winstripe/global/icons/warning-large.png index 844f93dde9b766fa3b8ec579f275b683faec414a..0ec8e79f68f4cc5427b15d3db5b62405aad76b2b 100644 GIT binary patch delta 2076 zcmV+%2;=wj5X}&fNPh?KNklA z6^Q}OPoZgvLBT0!%`aD3gphIhGhKi_zRmiD$}5X7)VBuT-1Wn~JO1dbkHoo;tdwL~ zS(CBpMN>VGCh-=}AoAwqYvFS7qE*F*-G zc`(uX&;=YF9jC>UXwp25q@i{;>69}KqJvVy(M z&L}}R&O!{_4#PmJ4S!2|stw%S+(rxc_V#Ak{r=M7&$JDH zuA?d#Y5Ofy8-OGCH7SZws1c`KbCcCm!r4dY9d5dU4QF|+~W$YUn&SSC03^^K!37X7%8QoPq>J)`XNiT`sPY9s0``~3%zJ6h`@g&h}|@sjnCDqSF?ZXphs9;WsmX;uK4{1ew;C} zYN`Mywd#h>8zTLbP9!)u7^jnc(N!uoEPp*tzC-1S zuM#DAIgC4Lw`!~aeRw@Ts^FwOy6e76iXsDCH`k?PBAq27mX}rrA^(fHhNbn%ms#Le zt`Ab;_)5~P8jMw=1jthc!MUCMlD4wv$rL-_c9C!b9mVDbIg>mem6O2$3jAsr-|ou~Me2@PmmKT@|1$ZyfoCIl9|Y=SR)=S2&m?&&m>!mVY82r0wEso^j_) zh*iA;Ok^_bh~{}@956>$Wfb`$F1SmMhS~*V`G37A-6s8-@sGrkJyx zC{s8C(+jcvP(qMV@_*xJxwUXUE|HrVvyj$_Rf9|DqqTHoP7*n+DkIndTC#XrzM6s& z(Px(gj26xi9UYBRpZZKGuaCB?VpJ=?gJZ98l%%}ThX95Icqe1&teclTal3dnnlrg* zzC1$a6l7`n*Pq!v+H{do^5bDvKvT8?>3@59*tmpV&YZ2235d?V zL*rJKGx<_Jnl5pM$(V%89IfOS3O|?Q#GxRh|HauP`TLBW`Nj+$@)9}N6GJE5-wTEW zB>&h#p)`eu`U^zl-!vMO`rzntQJ2QCq));n2JWOZq;pZ7%0S~h delta 2114 zcmV-I2)*~s5c3d_NPh?wNklR5Eep z((DhO{#o)3(mr=DJWy)@Y*#1qoAw%h>Li1j5T z5;9(TS%1c3PsliYM8<`oOej&r6(-vxV%_#bPi^C(p8_siG(xY}Lli}DY!a{iI)zYcTD4bVtQqhA?xVMR2WEQ7vlH1s zt9m6~jR$ydPkVPzsu|= zLw~gYYY#B-Hu123L%W%wuR|8*a>}g@$sp`f07A*F21{~*S`}JF3JuKy;&J`)?d{yE zXf;Qpi9}-A!DJ=Hsc$nuZ=~T^y`zpO|Guht{uKb<2Zf{zRo7& zzU{+@{`^7u7-^cRCZSjA0VW)jU-HJ+l7Ga#3`r0(ise~16i5|#z}~>a?V2iFot1m! z6wHkxqH*)V{oD9hwUzNo08l^QkB7Z6*Dgc704eoFPU(EbI@itStgn2=W3x+?Ur6W? zxT7xY+CrZqC5f?`YPDhjHk*y}wa{nQL?eJOtkPyNr5=ilYIUk8Z!j3J##w0n{C^UI zBn+X|2|}y(p67bm9o5ikr2wdNeN+AZ?v|KFn}9esQPQeSjS}qExg3CyZ@eJHa%_|p z8WR~>?WUh6+t3x$YDI&O?A0l>Ip_%ZAkALP(dLr4&RVy#Etvxl^xP^5RuwXrMmvVq zxH~fVB;CJKTCD^C9gm2I1M7o?Hh({bl%6Y8IIr@Yw{F0b0T2sMFDb2yfuN*mQmu06 z?9>iyYhyesN$9cwltt*p$2B2u#B|KkY=@ZqgjftklQ&<&0YP04Jgz$nipxd3l{XK| zjKJUFH16x64=SZur3t;92iS0nbk5gJXj8aKm?u?S=|#$IhzTI^46EsGp?{a8(%?yA zq29rwEv7xxx0$J!R?7jPe%dE*_eO2I>nvIbcW)L~yo6=fIAt{3CrgG+G4Pah1KxH& z_HLzLAR$;0t(F8}GMPAU0B78>HnPPXBC#(PPudce-QPO_i*dTV;!D6w&>JTa?6CG6 z-Ah+Qt8_{0@4MR{=<>!i`hPhH$=k(~wv1)J(teWwm?_y`6uhW}(k()(RnXtGyO5^;89L|5hm1eAxv?`JMX%a0Rw(#J0 zmakUXqMP)HblBhRCA2w)RB|fw&;tLIp70NU(c#oDE$SMeToK;{et&gx9J!q`wM@yT z^rt7#=ntVIIyUgNu>98FE=$9tRVeELg)$X6`3*MYZsDJ^dAtzrTv4rGNz%^C%dcAD zbUM|;;`;h}{O7h8Z@z6WpU8{mQbLK5ufyNzF@0+*rO>Lr(hy?Twn}FM8`_8!u0x!i zD^R{H9g_Y_*GXAVn}1Xaov%if@A^7tMc@ni$v&gL5rkIxL;E&TB@Y2|08)hG2OmxM zc-l;RjCKoBQ`ZU>t#S+3yo5YySjjcN`wH8r6l!ha&(GF(vzEfG?-==3vi z`{^aZ<4@kkr5j#2EmyGC^J(TN zL@JZC^5Uk9p_OJ?9EZUuA=rf7?fcpWT4TDuSYw4N0jd7Mv_C>2(;# z;b_GlAH#nlk!}4?_2;mAAm4)4aazmaN6P^9UQW;Tx9ZU zPWh?QiY|CFuT{x$l7lmZ#Xq@i1aVcpkf3Th zR3=0synY_H6L2`r+&Q;q3e6?)>KO`{wWb>hb*Q^8D`e{qFSq?)3ff_Wknp{qpwx_4xhu z`2P6%{rLL+`uqMqiD_H_0004WQchCL%EK|zk$wmP|56r?#8+3qBnG{Cj7(1DKx dkX_gOL`<&qjmrQ002ovPDHLkV1hT=)Q127 delta 434 zcmV;j0Zsn01LOmc83+ad001BJ|6!3KCw~EkNklV`-6s{Afmycp~NX_)72rA)FP$uneX-9?cS5gdx#V` zbm4G0KfdpL=Ws9MoMV{d!jQ-PTS0KYz?ULkR9`-jy{({ew!j7|kj2vMu}`f7%YU$- z_(q{9V|@*ns;WIeNr}=u-MH>6JiMR5WBCoo%TN6yB$Dgo9Av9#zIU(^OTn~6cT1B;jNPWsXEcmN*|+P(oV)o^zebM8RY z61ZH|1ekX_bL_1K(b7fI?dsYH(tm3aQqdd15^uq@7=bJGHc2@g zw&usN5f3{FOp?qATz_rT2tNuW(N0PNijWurQ{J{jQ+5+c36_g8gkwm8t_n%AnGE+- znWWgJ;Ntv*9IYJy0$xm|b3n(S7_T*{8ngceHhaq1gx^sh3HU>t{U3?oUp~{& c1YZIS0IPZ5r&qJ1U;qFB07*qoM6N<$g0_UsWB>pF diff --git a/toolkit/themes/winstripe/mozapps/downloads/downloadIcon-aero.png b/toolkit/themes/winstripe/mozapps/downloads/downloadIcon-aero.png index 475303680bf2868a7282e2f9797d8f411cebefad..fd01949cbb98a78d1d18bf1142c9c7b7047e5603 100644 GIT binary patch delta 1328 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 JPDHLkV1n}HcToTU delta 1305 zcmV+!1?KwT3g!xsNq-1QL_t(|+N@SfY?M_L{{H8@{^`6QEmqn>iw$kk78;5V2n01T z8cdat_}a*#3A*xyA#vkQTxg7j1l^M0L=6Gi7$sq06VQr85)7e88%W=;na=$4KRxHp zOo4>Zg`VW(-nsYw-*?V;&b=AQ_kBFfdOmz4V#GrwSF-L~FMlnSP+qc)TVJiLKJ0rH z>sZJLgc*G3#U4~Dt1zt!Y`=m_Cr#)PH%vz!N+2~d7#SJaACG50Xl`k1)^$a!SvF8{ zi^_M_vDV(F+XO+?Heq`vuAVO9wcI_)0OUUP9kW~|}7W(lZf)g)agj)rwRu#7Gz@ibpg|Xkx{kpO| zy@yCFxt__!_KvL`TRNMuuxR4!*>gC5{sKHdjLx>CI8e1Klu<>DHj%J(b!REA_Eha z!*WH#J2Ks*wbRRwSuLu&a9?j_&vp zB(gN(35Kd8Gq#r z)MO3(&e_3Lx-3Q=%61Y*=mzS4o1e%JO>0671!pZMBgJdF^?+As$BIU&;;GfA_ z227%<3Z5Gn#=CuAVD*MBB0oBO412e}MEeQ?0gV*UFgrVoVzF3neuay@iDnrtaw?T> z*{o?Hp?^~pn7nP`&#OMtsSr{Lh<}J)7#ybBxNy6HXZnUIVwDOHEG<_+Dxh303nI>d zrEZF)xdReR(2_``3{_P{)a$ z3umdg9({d%wGO2{{(a@jA1vz>Vq!vk&$VD|)v_vgJkQAv4GoFIb8~Z;pPye# zm+QjX2dS&s6N!ZQm`C2@%(+ITQb~L>IyzdX;#RKQkq#ez`|C|zd)|yEn(2dJJzC|y zvEhw~8!g(9u`%)<*JjT&E4V#*9XD@W_(pXc>%`*x^(VVJTepO%ij5lFHLvauGP&^} zuNjkQijAek8-Fu4-{gxk)8lWPIX%9O<~jU7HckFJ`6X$+zb*gO{uN*VF1U?NLMYe* P00000NkvXXu0mjfmaly* diff --git a/toolkit/themes/winstripe/mozapps/extensions/extensionIcons-aero.png b/toolkit/themes/winstripe/mozapps/extensions/extensionIcons-aero.png index dbf2610b5f61fb86dfe76f69b84f65c8de1979ef..a88723a24dd5109acc19edc3ef7735f05e6c7cf1 100755 GIT binary patch delta 1163 zcmV;61a$k@5X%XW7zqdl0001Y0DW1JGc1uK5`P3%Nkl zWFKJMoFGBdk<< z5ou>F9kkq9c`5V)6tLXXwIY}Q-ZE+kmjR#l=KbZI_kW(}Isf;ZoZ|w(<^N>EfQbCj z(tpVOF@&;4inda?tgOsWBoYNFRew<*N=5r$Nn-9yvVsS;Y#^FDipabXgy&eWQ7o6s zeS^>EpVnwJ60>=DY<$wTF#Tc{R(&&GR(}O0J8_&}fB)v)$|{e|uR!jw>I8cjq1i*q z|B5RrD)MS=ZEc#FnZdu$H2HF1Gckaccz^U|g+txm1-tzfv^`p)xVU)Vng(e3!|XVo z1+j$|kbRtD58?QoAsl56BIK4ChcZl{rWrw@8#0_Z91drjO4TY~ni&fuFULw@*9Kuu z5r&DJgOFD7&^K(v3;Q$7&d-80tI5mD+rG-ckK7@|<`03!8AMc$87FR=5teDfw|_T{ zIGk?4=cxk-ruXB(75(cisjaPzu-WXGpRvRIupZAxM)1t~027Lnn6Lc~s;u*Dy@blW-r>);(zemr~zc>KwLY5mL>@rdw$17VHA=Z;$X1oVf)*L zhK2^-Dg#l>0i4Vnz}IPgpj^};;A}U1V>{QxnNwF+7jK_mz^J$yl26?s3EhRcN0%{` z^BIKfOmz3^VYV32Mkt^+cVT*B99F9pjg5`s#R6g1dy6A(5ICMew1&`i*nj^^7k2-k zhA*vsE$EIMvZXo=WMyUT>g?>Cn4g=2S@8fw?Ny8wAA~G91|q2p0|o=eMl9$X7{#rc ze*7xZVQka_p-`w;EO0DU2M59DJMqEyZSaXwt;>3+fXQTj@rOVl(whgL7M7JG_j(G1 zd_Fq5yJ0jMF=#TP;y!_+*MHPV$Wy{VYQNp96D%elzSLQGAfEiY$j4Hjh{xD~#T6i1 z>RLwRa+%;lVv>zpTrLp^h4TbKpttu4x=ACY4IN0}C{R-04xLVm!b0wqRRw&G|B21A zGFPi?4!Oa|hNj0Hw|G2r*|}=98YLwqtnBRUQ{pBep(k|c@9TB!|9{i;^mMOP2E328 zUnD?AoX=%v?u~>|hl$3XuZc3(BtA$dj1dGL@t$7i7 zhc;t5n;ql+w6C5`^Pl^~fA?OemYJE!P^nZXC@5et7>sCvKrkqm%V(34k}j=#6?=ap zrITP8)Fqv|LSI}NH*{B5*Fdj#jzkB&ClB!0e#XVc#gk-@qoq=*2^AF;vo$p};PH4! zPEKy4P$)Ea@>$owR&f~c-MKCBEjL%kq;Hb!Tw;fto7)Z#508)h{QM4idU^(u-*1z; dyCcq-{|}imYsWjVJNEzp002ovPDHLkV1g~jHKG6j delta 2095 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 diff --git a/toolkit/themes/winstripe/mozapps/extensions/notifyBadges-aero.png b/toolkit/themes/winstripe/mozapps/extensions/notifyBadges-aero.png index 3540f3758d8c1ad515cfb8ec463f0680b547b59d..c5cb8cec9598a1765d8fdc454ff23d79bb61b1dc 100644 GIT binary patch delta 1450 zcmV;b1y%a66rBu^7zqdl0001{=XoiSGc1uK5`P7HNklV6vrO~S%`vA zq!ilQTlxa!MFZJ%$wpkzknu(Run$X?EHP$tVa{aEMYk_ticCdO1l<@+CumVinbgwC zcr7ndoOG_k;6#LCS}2-IF_nm8Jv+~}kU{qCmM8h=-ahwfd;h<4&U5Z1H}(@kwJ>bQ z#ec+fD2kMPNJ!h)Ymc-QDRNaR714jPn%pXu6QNMZ$$Wrt0svl`W?Aw8e}6DJnLJRd ziCH8{sg_DLXT)OL36|wlf#*N7tmdXj6wCMjmWwO{@CE|tMgVUjfVjsO)4h%>Z#fV^ zC<4eu06H`uvQhwQ7^dQwRO}AS(&wtH^Nz=9gwOSow3YZTjfGUZ^P$idxDK!;Z($fA{2DO?4ah_oe z!3L0pW^%&A!=pWQEWnK<@LS&lcf+)_m*z~E zHfO`r>)BvADnE$geFL|iG0AQ%jM#<9Do7Wmda$lVC)H`U?->ekuuQ?G|2&) zlE7V?3CoA`LMHfc$N)?#7(C7NrGKTRg`#)^pqm?w=zonbXkcJ~Q+q}Rr#75x4X6^o zqh*-=yaAX$Uqh~ZMiiEVaeZK9V5&w9{yFaw^M1b{=3aQfd76b+CE?Il5T~vCB1B** zh~^EToM9|iag$pxP0e*|*Z^G{H!cEbVi>qC5`k|0dZ>$yg-ZefoLRRHPJgnjB^UsX zOz1G;cXQ#1E^E;|H9bE+4|8*K;Pd&w>-EAD=Lo#0R>FK^IylcKdl3Nd2$W)*)8pnw z&C@7Tcu*>W+1Xi`nVA8P$A1HEw;S%4DB!PS>)~a26gUeAbQLC^EZ-9;b48ShXh=0*Fp}|%(+9?(< z0=OlSKrgBXMd#^tEw24uspMY*_4%u*a-X%n4Paagpe5icBQP>D0z*SXV7J@3I&>b# z_2*GPg~HP-Xs|_sf|y8T%^0vq!lyaj#LUZmWAI@^hiI``ECSp z0n0$YX%p{ONIEo8RDYGjTE=QUM65FxSHZ+t0+W-ITn3DfkHhHbD7a1$m^c;oy#D~{ z8?B7CwiOBwqId&n7K>xQ69{~I1VAH8&D}G_|hNPp+IM2i5p7p3~I)_jBj$Vvck;G1CMjvbn6 ziNt5b2;W5rLumLB0&t*tD+0Nek>R_!dw0e2q9U?V00;tDJg?b9Hf#401&SL8fUG0{ zPkuh3b=|aOi>4tj&(@$)+3*F(*0g=Qtu-%C)7{;j@(;4Om;@8RzYdw{U)&$^Uz7F; EI;rKK-2eap delta 2516 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 diff --git a/toolkit/themes/winstripe/mozapps/extensions/notifyBadges.png b/toolkit/themes/winstripe/mozapps/extensions/notifyBadges.png index 8fa7ef4e305573deb4d5b06e7f510b9fa4bbe4e9..666c827e45e1b1a5a7dce827e67fe3a6ef0450df 100755 GIT binary patch delta 1337 zcmV-91;+Y}6Riu77zqdl0001{=XoiSGc1uK5`P5>Nkl-_KrP{ z^SFRPz!*^hLEb7y8)d-P)R7V`lSE z@`bp6VB$^T>LS=KyoEmxME}%tF%geS7S{Uu`Z`;d7zaZ@WU;@0gBbj7a4_mTJ#ouq z!fiXhczK~dFc8HfN8XOtXojjSAd&>c8Vm-$IcoxNdOC1z8E|Gf)k}b?6+r21{C|}d zQ@uZKh$jh%rSOp|3NRh_^J{1rKOQ$cJn-X?ArkVqPPNDl;-=Y*TyO8&3s}}e6#=zL z!$kIWmn}fgxdilIOaSu70Vfj&79iCH<6%1+kDl}Iprdp?syByjA{<`89-~ntxqiX~ z)KJ&2QAiniR8d{6z)Cw}t6ra~ihqENX?hXQhv^ZmD4Yx&i>0t}_}?gaoqmgfaAFF6 z`y$-p=jX=}4liIe?SP_yfR-CUL8zo~GFKD=u2QYULVU;b_vy&;j_-hFUQERTx8Z+m z52+M#Uj=fe0ln@2$u0;2gePqfa;C#}Xe{cI$K;f~?dE=ct-l%qVysb7sDGfXeZgpy zxM)Wnm#7x0P;kOvz&w_XRztwn=Ip5uE-wbozdsOO3QhF)_rqqh;px+-=<8~RaOzF; zUrNN^hi9~qfOU>8U=zp1R?!>&EQJy&Q_$4ZByo;vk@E^pySX8rW#>99AnP?g_||8k z1s&-j!1oh@^wAP>@V>r2^ndpD0=xeGUdWC{)6P-2wk140ZI-9EqYFqP0hj5mf0{!5 z@C=QOjS?kPpHWb1-vM(}5+MHlIsd#NAWz7qBk)Z)@NM`&@SdI?ba!_H`@U0pHS$tlQT0e{v6qsZj0yqQ4e zSYYoM2{CwAR~I@vJJHe60c3;$`-lUPXv>@3T9G((1fhliW|zs-aFhbe98+*yL7{?V zovvP$m!LJ#OJv{O?UB|yYrHL8Uy{_XL!{8{?d@o5YeQ>mE3i8hk5fjq-&s4 zg7NtCK(uTNLNg)O!meOEOdD6t^E_*xE8e4)0A{03mz_oD`Va*aIjlGWIaJGtb5?O& z5j|R`rT}?x54VM&ZmEZ*{0&3ulN}?_vgJh-&Cq}F`&#e1dw(fWwLU&R&dM89T!3?u zR(oiVUXOzmQYK5mZtDDUjw__O1~tMzPXJpUZ(d1Pjkus+mwH^OO)%x!yR9vW_juRU z)zyg@3;_%YU=lQ%=^J#qk`$gt8p#kzadE+iT5b7EmYpXyNv-hD6Tpywfx39A%h)3^ vx>53H62OSz2Oe1fV;9cHX|?{VU0lMbHj2$rGq}t@vI(U)B~93ylTryfjHi5m delta 2351 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 delta 764 zcmV0uBKG4&-vG^3;yqgm;2 zw(aWv>;Ac&&Tq{ry>{Wpx%Zym=X<{AcYa4;jA8RrT3TAkhiV==9-6}MAP+B(xqn0= z5!jqB{R8VQ7RyDG$yCRmTCG+~B9LX->vTHZcDvolbNaZ*mvu&1cfco_tXAvo7Gs-n z^lPSKY-$m1Z!AAoTU7?5L5GudB}-$&Z$>*hI(oRsM9~4QOz_^uQ|4>W-O5NTi3=yH zaL2rdFCk!YDTyZoE)0%ssp!6O)_-iZ=9zfjiCV3$Y;SMxn)mtxt@kF_flDK7{KGs8 z27@dfkF#Vl$qzc2+VTh6vLN3QgRS_cxK|1ICHRXuPAw6@0wXwiCn%^qD1*=#s`&>QK68`2z<{Oe!4j{Ht5i0*`6M8*lEXYHd|l*UQjDj z@TO?$?d=^1$V>kBt|+_pYL>NhPP5~8XV`;&51X2evOqxgQx4^>b47uIh@Lvk;cyIj uJf81-g%t{Vr+Yv00001aa6hD1e!K^JEcnZ4vT(so4H%s~;9ZKK+PRad+2qAZGTDq8A- zqN2i9>@eCQGNH02Ih2Z}Q41IS9((dMEpX~Q$M<Gxre1CZFJ6EbL=^X7icF1|E<`JNGPVXSs-nu5+UyJePms`d+MK+iM zItQTl%&%RwPw+jkh8sgdNVvPvbYXv)XYLemyL|9k{r!MtOpqsF(U0=l>>mQP%L~Su zo08x+@7(P-OM>AxZ_I8$?echM?}MA-J`#*3a9s8&JD^2IlHv{TcZ^c%$xg z^>CFrdp4+@gGHJ@A4tQ=gu9Ws)kM>G@6GH{iLkbs*ren)xRWC6tQOa`cK3h!z457^ zpCLKZAM*^@yRB;&SbZcu@%{bmG<W*y-?udH7bS4NZtDAo;j%T7z{+`6R{i68Py7~XM8q4qntj05Z0ju#0FKRWm z;YF>+HoU0S*oK#|8rSd=R^u98!fIT@OIVF-cnPa<4gdG7uGDaqR#$GgN~R+wrln_fSJ6n^$2RbbWkhA~* literal 2042 zcmZwI2{fD89suyX8I3ZvOlu@nwUkG6NR_DYh-K_eP)h|Vp|nITA=XhDQ$?h0nn^p1 zE=sp&Y9Ad!F{s@zrZqHUt4K4dsM4{P`R;x1o%7x~?|06Z|GnS2H~0SUcfb2_Jl&lY zt8goksuf6;-7#-7kD}KM3KPF zq&T~?NQC`SLA@=%qENDat`2rSDWdrT3Rx{s7I<+6uRzh(p6y4*xu`e|i`s_0sin+w;ZHuU;MiEG2k8>w#4}bKT=k~-j zi}3h<^TzkYcIz9=dQ;6ytNlW01{J3wf6*SRx=?T%zzbY;_i`LUO_)L&KL7LlqQptI z^`Y&KceB(2`VTM89Xrq^fXoVOpz`ujfcm%)+cmI1mu->0QJE9P$g(f?#Dy6L1Ok)I zlBE7=4T>6cptxKDF6{YjVq z`0VOerEtAo+g!N+!(dW@I!gL?+ir{)F{#Oa9tj}*z+o!#i9dKAHJ*s14c$e zj~*Qcxm3S^{andRTsAM1de5ch}AQh&W>ioFX3H~*BVq@k=6mMjdD zYQ_o}QNZJXi{Ndo4S>(Ore?R9)00*QWw~GA36PS6u(@*NsYKQS_kmIW{vySUvl@O(HO9X(~=5gJ#F_p2Y%ebo2&e`pFL@|>TZ zBE*kl`gjFgr;5$^wNI0Wx)Xy9ciO;hmELX?v3>HfGb655v z^;OBcBjb)bBj<%%Vsqk6?t}>N!qJV&{y91UR8*ib<0G;=Dfx4TnDawhMU6B?Sq)lw zc7J85_CTv7p6GdWU@otc1g0V@ImN1NjOlGa2GPbXmfRgreD)g3V0B!b-78l=6IgdA zu$^gakZB8#5~)ay;Ogz&GFQ^mrXp^7F zpUJ0Iilzk<$gC;M|CiFLodw8jHN6+)%I99`wZ(7bE%Uh#aGJtDa4&T*lz3A7kct#3 zFp_epYz$>L?anWQwIg zG<^MUEj!tGk5XOQ=QB#YoHf1#{{6?g?{k#k*=m$wgEK3BTN(Sef#s*8wsOQ1tbZMY zSyAWzEPDuaMd&u8)bZ2KdH%RaVm*YqP diff --git a/toolkit/themes/winstripe/mozapps/extensions/ratings.png b/toolkit/themes/winstripe/mozapps/extensions/ratings.png index 538d27b05e861aa7fb352a3e9156f3f15abaf73d..f6039ed8065a3235d9f31bd02d9ce15ba1d9966d 100644 GIT binary patch delta 745 zcmVcDcbkop6Kq`{B}nY0@est4n1+C5_0~g$;K4{B{A}2bLYhr8oB2(#GJDwl&JO$JBY~t1x!-@0 za2%~3{T*1nnk~u;I_G#LTWU^6>(vRLD_SOfPi0@t0<8 zEiAhLy-P~!~OL~8_yLs)gCuOVtL!kD`gtL1^CGXtfD=~M9biI|G z`U2Emneg|_2kvyoJC?iR!?$}DWxu`vweM^;cju~ou5ur;Q+aG(wYjwgxLtyM8h>_Z z|HaJ6G2vEIODMKbI=@0iTTOk_=`u{`sW_{L`@E5JPcEd@A4SOi8qbVHy;pySdIeY= z*jU=mmI_dW0&GDR-jrs)pUDfb+CO$TSJp49LJrp9`sUejAyyAX?q|34%YKBLdG9qr zR#R&*{Y`(`H3;UYD66S+;*$z#h?SC%f{8p8Wi|ER+L$k1{^E~c%13|R_)0}tecBWH zJhD)EPU;N29L=0M@qb&5W%z#{R^u7Iht+t78(NKRxS`e9h8tRqZFmE#aSd-^HLl?e ztj0CGfz`N%H?SJl@PE(hRt-04b?b(kw7PY}nXTq!IJ4Ef3}?2Qm*FO?=3}@CtN9pi z!fHN-o3NUX;U=u+WB9?bx>>_HTiv|joULx&aBfz!8qUpXR>Qej&1z9NN2}Qk=V&#X z;T)}IGn}KE*eY|xzzaHbH4q)=X<{2^StvvGtZg-Iqy0D_q^HOo-P=) z4jP3*VGg;Hk05a$a=ETwhkP!Nx=kTr9mCy)j6}qeqaYaxs;687qLAncFK1ym3H%s) z>HrIg@c*cwuGT&jO8M>~@&VuYA;}eYSKVXUDJI`D8c05G%^s3(btpTBa?{D~w#~IP zzqNW<17TW)HQwuSHZk7{3UC)0-}#yTRD(-3HOO*mbKa!prkkT(owdpKkS zWS9SFLK<&-a!3*@5aSE~w#%DX%+(Eogu+XZM4}97`$G$p?o6QC7d=m~Qr7@t_Gs%| z>}rIHw{*nqEZ^`YU}Lj=6FU9i*o)f?FwyDg0Eow{g+gRlG1My{G`@MmgBZK0sByvh-mDzJ+&ryP-!?7*Se6_!V0xar1-gHpCHMqU0rN{G zk3;GQM}`G=f%i*$z_D7R-#f4=i*=KF7I(4gneAgI!iPtIoLun$K)cgv6%r0`{;(?cFy`(cZhk0l zBHk5llLodsG@hSg+e5j|1IYomI8a1v6m(EASfv!>$a#k5C~~uJB+EGL7h&z}Op!8d$ym)tHDDiqfX_SymQ5{etpHE{VJB>GhVm~B#ICCOJ$qCl2N8r&xh zt`Ka*k8^X`fNK2~;}w^Dn&;*6Oia^$lu6S2v^Hcta{lzLA_YVmw1h9J9Sp6kU|Cu$ zABcr06el2^5_kk)uPl@|qdGeq8ZJYH8|>VSvQ}A(*Dz`r&P2t-urMnEprlAFMYf@w zw7n~N_Q7gWk$a3h9lz%*;B2pjDL}h34l$V7@4Np(`K+Fdm{+iAe2qzu@~7GiY6)xI_bj}$ME0wl<4>H%51 z^7vYKhe&N!nA~f6@)#JDkk@ee-s1#nMLWHIFoHNNhzsW0`vu~kEwQK#w;{2*Nrz?p zr!>0dqoD|LuM+D#eJ;_M3o0-#0blg?69KRD<5&dIV>~g@GJATyV3)hQ0<`Zc*#LQN zsF5^4AE{pSXDX8V5k{?;d1t@lZmi{ph50SH&efu$-`HA04jQSB`r0}`f*gyz;jK~} zOyo`)!#Q<2_3xw3R25FQP+GdF)@<>UF~NwF;fphkpUmP!oiY6*PL68~UPy2x*)@(_ zYDfaEe#$qA5_LnYzz=>huV$+H^(Mf-`l}VDr(ongz|LLwR4+5C#jIxAYF8kVJaQZv zDOOV}mwGR1$rI$?TQqBpe6?kZOzZSd%vOoTG5ybx@i7MywInljr3z^2&t@4;xvoaw z4B1_-w;7mvrTl=N+*%3H=?d5zZu2~R3GTGjH)=IIck`Q}-?rvl2pSy%x+YW2@D|Ef zDW7@xWiRQDS!5bDe2#P7%4xZjsJgA+K1mJ#VayTMou+2xG*`grjFz;D`uc{Ur_l-c ziamNk{)XK2G$4!o?{h`ZVR;e2Zo9x|fCEU_)kW*LT+%l^pYWS}KAa^Do%qi^e-u`f zfiaEBiFh4;6ty{@wPHyk9?B}-?VlrD36|$0(*5h?DW|k8c{qf3l0x8Mo z%*(3PBP6yc@_`G!Wc>8Ys?aA$V+v`A)AFg-kC!@~1gd)c6D6`jPR$Oav8f3CKb`*D z`=5peDtYxUc*Lbm&^)WE_QxJ?^}OGb+0*!7FQI`_=6SvUO-X56WmCg?lNA0MY2Y9K zjP`$tq#C4@9jSX$wq_!)a)SilqtRcV42h1Tv%f{5;)kLO>_45U54*zIJt9Z0aOz%d<2D*&+oL&Tm{c?=AU zn*)48T>t<7FXNQymC+$8tzZ+J9a_}SDimf8vw66`Q=%33gA_e4Y#Pn*X&(bSeZdknuC?#tV zWD{ExUp2)wsZrHFQpLY6u4;;+o|SEQVRpw7$C%RW&c*pH(=uD;=X5MoF?RA!txIp5 zozXN~#jh5qJ-dBTe&<5p%=W~pDUPuf1)U3vdY79!`4;ys&u*EM(>gDtKDns0p{KNE za$WD7rit?$V#(_6;fB*jTw`%@g1E86VN#5=*?g@KORs%VoJY5_^G|nd{G%)C;+Gf`(hOxyogsX2^ zVPJd4O`zRod01X_dU$qy@HAQBGFGjNPctoVUOl_@O-l#coe za-9**e)Y;LNLZ^|_CU}+E*>7PeUCU;-8S~x>X!cGOg%a+Vc(v98v(`0g(8=(+b`U$ zr>Getq@?itt#11pHo4U+zTIm(vqPequcKkj^yxa2Y&N?sh%Sh8^IFo%Qt#q$ESRn1 z!KXWZf^1ByX0_ew(h*=Zs=fV$w3gQffy@)L)CA;q7q`yWV9q=6 z{F0zTkNdoXhISq-^KF{ftrdx@WGK35XrB@0ItS=~rK*sKlHmNblJdl&R0f8MTg5&n o{k=jzobmPX=k@aSS;@knKZo^-z&f6lzCh&+p00i_>zopr0LI?0n*aa+ delta 936 zcmV;Z16TZ_2eSu|8Gi-<004IYeOUki00DDSM?wIu&K&6g000JJOGiWi{{a60|De66 zlK=n!32;bRa{vGf6951U69E94oEQKA00(qQO+^RT0~H7rAEt0q#sB~VGf6~2R7l6Y zQ(b6NXBd9YNn&i0)BKnIWKC;Rtz%RT9lh9O8iqfNwAJdwKYthqf>#b{>R?U9ByJb2 z#bHsDbqsbf7*;RJWJH9rYDKG694bv)omSM?Hd&hHBt1DNuNO_B*3(h^=?m}0_q^Zx zJK%X#8>AXKPjz+bm!i z1}w`$6h%mx3`U+saHH>^$p?dvzxwm^;lJNS04oQEMiFr5Pv1`$tm!uDLfsG;>Dx@hE>3z z=fH8f)pL8Re8F&)FX)%S{Z+nTctHZx>Ln^hRO2I~1$L_$cB>gCofb-k0*T}uHpIGeg=;06G#{Q8Cu#K7Z)R#l1e@!Ca`t+@bkummj@st)Z{W4f z=N&cP@LW7gZmaVIPNpwjAE0&aouo4r_!mOLL!7zb=wgu* z5wLCFA-<#Y5`9^>hd6WLqLLF4a4>KxR3Yth$2m)3%VLug5ncg3qt4z~Jf@8R0000< KMNUMnLSTaM4#Nrn diff --git a/toolkit/themes/winstripe/mozapps/extensions/searchIcons.png b/toolkit/themes/winstripe/mozapps/extensions/searchIcons.png index d49320d63e6ca2efb3cbca76fe82160c9dfaacd6..d894e972f8da7e358051a21c460b7e560e54f233 100644 GIT binary patch literal 812 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!3-oF?)7E^Db50q$YLPv0mg18v+Y2FWd)Au zKw1Ha1sEdstjc3xU~~`g32_a~ZU29B#sB~RYns>9wQp#jy1R4cJ_f(pT;cP9;taks z8T@82_|B+pUEeW%uU5}{?anubMc06&PU}nE#wYqU_YKN#14V$^>pM5KPTmRB?w8#e zkkf6He+ekq*uAA?!gin_&;*G25OW~1O?}&dQaM@GmDxo#x#d||)djh=<=G(jV_E@p zYFJTkZu|V&+@iX?qRDy5Q?}flvFp){{kLWwyfgFA+u6rH%sG00;g$ajZ~R+w?f=qS z@0Z>Fu*;dgofU0v&Bs666;Qq-}t}!OJ%&I5Z}vxw*L;4Elgz&XRQ(fZ#e1 zynOld=g&WX{`~v*@2OCQEl?L@lDE5yk;5gQ6F|;iPZ!4!jq}L~O$=$AmA;jnX=*$N z7#3Dcm9=HIm7Q8ysF4updB&%#ytp_l@!&d#OPZ>8&mPu4a6V3GHxujn6!ZBPK6Dhs zvkHXIm3R5HT3IB6bys!EF*Oxcm(0c;Ovjvje4LIkaj?B1(eu z(@M${i&7aFDsC0~ob>k!{cy(D$Dh~B*JmXQgZ>=WE9-bx`T|umc)I$ztaD0e0ss#+ BgPi~X delta 848 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 M07*qoM6N<$f|#QT0{{R3 delta 2261 zcmV;`2rBok5a1DzBYy~|Nkl3&28HS&G?~L#4-p0mk#%A%Df>{D>NkX9w zB_!&PA{9kdXbGfJO1gw7Ko>|tBM54Rpi-+wr9x~~LTDldq9%&mI4TK=2?^9;u|3$> z#y0khXKZH1GoCwhm(w5E12%3JDOEn{`*H7g^u6zS&wCb02!Fv>8S+<({(m9x_CqVF zd#E+^!uL;qp5eAH75vTBQz$AvN>685x+m-ZQVASAdUOHsfY0Zval73Chr@x(e8i4SNZ+^9Pr3EVMHPM79#Z?nt!G-q|c);9>$i5lKl7+8q8&I z&l)C8nuOo)M^#lcO{1}~@kVoV^U4hyHk`X1Z`8C79z5tND=T~d!3Q5)Ra#n_lXwK& zvJ4nJft-2;*}RTyg>ZDegUv25uQt;W@spYRUGnqu@pwGg>^2ld!R2x>ckbN6S+i!< z9Xxn&=70Yr;B-0)AnbdX6#3@WYi*A^hy(Zq$h0q-&)UFY#cmPjv z2|k~XygWOWu*m8eOw%M!&7-=yI=`TxVE?!T4jeeJe9@vsYg{f@u4w34hGP9#mWdDo zNpUfhijzpD84Ra!<;{h`D1$AXbg&R<)_f9DgnthswR8*yX^S^ga=n@Dzdv6^GXAq zJsy%Z_v6d=5!BApt~JpZ`12jNT_hs| zc&q0lhk|&EilD!P!7JD3(&k{@y%d+njelj!;CD};Kh{eu(TkSqz$ttA`qbq(Y|dP7 zx7)2)mQ@3s$`R0YJ!x51z9dNi#Lm^B2#ZXln`~Am(b|g^?Zn&n7WgM%G@YTV$49JY z1qDS#ReuG* z7FfdI**6fe2x(0qrYyqN@Mo0ilc4!sLLE9i1>ZrQQjWvnz;4UKqfVksnM$Bw{w*&F z3&XetK0-i}q{>kq=qR6sL;k<8kOfq9bZ>y2apJTbe+L!K(QlDknIB+^Omr zrNE|5n>sICxbWMirY6$qG?rx{kPx0C+;hIo8;Sea@xmqALVm8>=VMN*z<=lS;c~gg zoqcz|N%w$>Btb_+=UPO|)eOVHFpTsl1puCW^2t5>_U-Eo27|jQDk^5WTrO-j8~)NV zjvap;;jG43`3RB53lw?1jMRq}9G)F$S?KCF5tfC^ZsAfS+QVt?4R`=<-XTLn?RO9W zcag^xs@`#5q_Y+uUd_@P z(izHH@1#Fi5A<3=R&G$z)Jfm12*V zhwr)hhLDgLK3cFWi+DWFwQJW7Z{4~zJ<5b*<3>EW_2kLdtKK{P0l(S4>s?t^o(9;n zXHP>o99}jsFpxG3gMVZ)Nn2annfm(r_20y^ZQG6vmyhh;y_5+;^GsxHFKIYsK>69d8Hnz9UA~F zG3FI)8wPhgv~cpOzF7KOnZ~Hm(VyN|*V6wgFl{^nb#-;r)YM$ob$yQ8?Z#%a<>Ve3 z8ltPKi*PvH-q_gqhm$8yzCDcN05nOGMv;&J<%#8$n@x)!G&F@S$8_=5<+yfnJmA}7 z!GZ-77fvr;yk)|K2~{qaYldMM(NroGjz*&wySuypSzB9s9uR;I3;_v18>_;oB^XZW jv%tS#2*4c9JC@+TOb>?-(FWT600000NkvXXu0mjf8@6h{ diff --git a/toolkit/themes/winstripe/mozapps/extensions/themeGeneric.png b/toolkit/themes/winstripe/mozapps/extensions/themeGeneric.png index 5fb4d565d722a89677f07383216eefe23fd35892..ff4f21f9a6115db4829bb0ac6094ee1cd78c603d 100644 GIT binary patch delta 2172 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 LNkvXXu0mjfi;86$ diff --git a/toolkit/themes/winstripe/mozapps/places/defaultFavicon-aero.png b/toolkit/themes/winstripe/mozapps/places/defaultFavicon-aero.png index d0bb109d30788defe0900e0212894c6269759c50..b9d216a55febfa392b9b68a82f1b24ae29db5cc5 100644 GIT binary patch delta 310 zcmV-60m=S?1L*>g83+Ra001a04^xpLCw~BkP)t-s|NsBm+S=ga;PdnIx3{;vyu7%$ zxOsVbg@uKWkB^+3oU5y=tgNiCu&}bSvb40cx3{;sxw*T$yS%)-zP`S{zrV!9#Mjr? z;NRci;NbG`@bmHU^YZcY^78cZ^7Zrc_4M@i^z`=i_4fAm_xAPo_V)Pq_WAht`hWTO z`uh3%`}+L*`~3X-$^^u?00007bW%=J0AFc&`TYIsxxya+003o4L_t&-SB1{I3V<*W zMA4g&DvgB?{Qp0*mS9Q|+_6w%)WRtbJHrNgu4LPR0E3eg%w3W}Ktc$Jagu6)c3Udg z61ciDW>_B^%^LtgK)W|@;0wrP0wXJ6=VR`^cyD~*zmlkP034=M&M%2Q*8l(j07*qo IM6N<$g8TZkG5`Po delta 335 zcmV-V0kHn*0)hjO83+ad001BJ|6!3KCw~DXNkl2Wf{URxQ>Y9 z_{I1A9ory*G)+9uhHsLr%lqiGr#Pd01M^MDCx2SSNy)_8h+fYa&I ztUnHi?*+grbggf<_dg4a6H<=RVKXatq-zcUoE9uV`3r$t^91Ahe6cPdrJVoy4;CnY zF~+qi2uHx)n*{2*UfcoRL+*z1nLGepl&MJE8m`&YI~JyVTcGPYWnD0ye}OAdJ`-r$ h7IynR{0CnG3;;$-7T0h{M;rhE002ovPDHLkV1gnJl(hf= diff --git a/toolkit/themes/winstripe/mozapps/places/tagContainerIcon-aero.png b/toolkit/themes/winstripe/mozapps/places/tagContainerIcon-aero.png index 8f938e4ca317d08c98275717deda51dd7aa9b7a7..da906245de7889f992f374c14b64c452606d58c3 100644 GIT binary patch delta 627 zcmey&x`cItBnLAC1A~SxfAB;_^?F9H0G|-o|Ns93#jt{~uuvNt>)EqrPMJKZtGlzi zyR*8nsk*7DuBo}9xwWCCrKz>GwY{yiy}i8yh&tA+UX@>3o>y8nch0O?GiS_QvTW{> zdc z_UOrz$BrI3e(v1ybLUTn zxpwW!y?a-$0qM)vu3x=&`}XylH?BW?bp7Gu8xJ1beDwI%?OV4WKfV3r$=$nm?ml{S z_sP@yj~?BB_Uz%4Cy$=jKY#M##nWd`p8>(k7tfzRfAQkkt2eJ+y?Oom-MjZd^#0w4 zPai&f`uOSN$4{R=e*X07^Ow(`zkK=f6^Oom{qh-zzkUP4uit>=_ix|7e_N;YGZ`3? zawS22!3<0sJaP)^8YUKj4Q+jW{ctdI?!1+2K0I1lUkX%u%+tj&L?S%-!8IcTgA0!m zlTsR(*1lOXqoqVXE^S7K<0PHwJ{4`tEqsnBOzZBwtf+p|l}9USg2rJ@$w@P%^3|CH zFP`cs;PLhI-uTsAgsJ<(kCdm&j=5&fUKR0zqse8)k2y+<4>ipV?U~|Z!qTABb4KV` z<3UG8vr|=E3D1gje0UrL18eUy*ynq@YKLl;rLj%u=vcRVdi(6DyG+mINzffXgy5l2e*BLVu6&VZK;<6r6W&QKbLh* G2~7ZLpJGS= delta 707 zcmV;!0zCbs1@i@v83+ad001BJ|6!3KCw~H!Nkl|H>Fn&#d%O$C?y$H`N*0%VXtk9lk@9Uw zBogSleCeV_qp^2(baYi$*9ad)B7YI6)oN&OZ|})*91Iu?{q&CA=LzotFE<(uqt`o+ z;c!^EIgun^5(%95c<^T+fS+e)(P*(AP$K5tjz*)PI9vrf-7!#9DImw?U?-J=FJEV1 zHdX4Y-(m|YHRfs6_p?oi-99~ z5+Y<627jL&I1-Z++Y#bc4e{@gd!s;q6{tDo?6+gcJG=<&0*ZG@I610VB z9Nert3At@|y4*P9^_46Z@{6u#p2T1>+a1rI16z0R-@5z2_B{u7?LDw(-vJ;vbm9yUtiAGW-IZ@!Z+zQ! z0m%sB*d0fA6 zZoa0|;(KSGSW7nS7ZA8?8ojXPk=>20(phQE+4 zGv7F?L!4pdySbaPd;`TeY)ltry>hUKVCoR+Q#%y%GKI52L#E}d+y9>o2};YYs_rtV oy!tn_jIaE;&_ipTy7G6tH&Cv}G1v-zx)78&qol`;+03(?wlK=n! delta 498 zcmVjfg_T8og5&}60NPvF2!T9+iXVjp0uqzO#vB|Lezu~hjiTt@ZE}~~I>Y78 z3nW^2Fx-Cr=0CGDij7ngY+8bUa(}^3 zPFWuID4ywLU16B6>nxYcZJbwhR)@%@W;MF9x|V4w{9OTh_Pyc%tYVa3Emz*Z34T=Q ztRw(%kX8tv)pS4YNTb4sLFwHuN+ zuufn+8lR^)hj2(Zv3?F%1>$#HNq;8d395AWstz2s8ze9ZkfBM9CYD-rqWE=yiz}W31H)8HsCDc1KkQ#;B$a-s=FXRjcOXjgC2BEg^(I3}0t)Ihh%b zVK|Tv*Gnc|ez?`y-Ki(PBfy6wmXevl2~Yx%YSZ&w>F07#NSzGdeS4qf53eo0wO4Li o2g+aF7;3b(jivmzoxcSb0HSVy%SX4xNB{r;07*qoM6N<$g1)rm3jhEB diff --git a/toolkit/themes/winstripe/mozapps/update/extensionalert-aero.png b/toolkit/themes/winstripe/mozapps/update/extensionalert-aero.png index 482513e87f3084a4826e0159c1ffe9c8fc0bdcda..886a7cb3a1daa65a0cb75233812a61d14f11b822 100644 GIT binary patch delta 1434 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 diff --git a/toolkit/themes/winstripe/mozapps/update/extensionalert.png b/toolkit/themes/winstripe/mozapps/update/extensionalert.png index c980a483f624a4f7b7298cea8c3a24c5a39c7d38..d2692a45e99bf8caa58e28faa355243fbcd1a06e 100644 GIT binary patch delta 1316 zcmV+<1>5@E5||5+7zqdl0000`uKcl)Gc1uK5`P5sNklwX_-v}!^77>H@Nljo(TlsaEs`^v%`%n+Mi~GOv6|;)HfS{5$8^jXIFMVz z^QNtWFf&~glhXD2q|JgbaXHVMdt1*vC%}`yB@%dv1k8^QPiuH|D7KaaoJn8;2^^&G zPW>ogB7uFSAtAUI6@>@m$Kydv4DLloqkl9s6dB&$I~Vc%3%v?h6J!aY@yK+v7SF@| zz2k05SLefa;Vt~RH|nR3iwSsCG_TUf$H&>S(AXaW5ruw!H7xkupdeIvc;J@Fgxhw0 z@$^J>KmZDd4Z9tu(F}TCAc6#9367&gkAH`0;f=_j033;-u(9}0<-JayMMF9^5x;#AX7Tm) z6$pm~R?r z40JaCE4w5~ke)O_%ANw-{!yq(8kv3eZMT8fSNZjYK(sY75+$@XE*On67k}+2b%}aL ziHc(e17`Dl6cgA~pEU{6YSudKRicmZLLfZ^`}&v zw%>u7b^-SIbpCm*f3B28Tj-lG;M=gC;2j+uXm4)^_JqmUGG0O1M*%6c#)$+R-a_+v zen`Hb9|~xq3dijz0w*Z2LZO`uS67U1ath?E@kYjkw%lnz#wcLdNPig?ysfPbt*xzS zX=wq{LxJ7I-Uu}1&S)%27&MgV3juDs$y9Tg0xKL*aa2XViX@$`TK*AR6FeEa?{0~( z-dX8oY5Ot|_&Qh)-Q3)arluw|HZ}q~Lhv|wc=MfAgDlmbj<8yn`L81!7Fa0=jD`DX zqB#^SS4Bldh0HCfW%rEI-YPHY*fA*BZ4@#g_(*c^y@g7wn&AUsSR zT`r0uZ$Fo<=_>(lolcjPN&9*~1!NphZJ})H71%k;1)+exTBjCJN_e)JdNjPvmyWAdbvoTr!So3GU`yYZn*NA1UMGHp9MJkz{FUs)^CN2 aODOe5Hr(FU{|N(Juc!;2{wkuAA_+PX5_|Lj delta 2302 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 diff --git a/toolkit/themes/winstripe/mozapps/xpinstall/xpinstallItemGeneric-aero.png b/toolkit/themes/winstripe/mozapps/xpinstall/xpinstallItemGeneric-aero.png index a0292a13c6508213ce2adee7aa3cb15be47d4af4..4b8ad68821c1246152d1958466972a38ea1aa832 100755 GIT binary patch delta 1343 zcmV-F1;F~`3epOYB!3x6L_t(o!^M|bh+S0{hQD?0t%|W65@W!qRi$xkBr)QPN&*od zL~$UN-3|{T5uxceq7MNTRIocy6j9KCLZT@6;5D9~ zbF1#%d;LD_bEj19Ei!-$7W=Tz*=zlK&BrA1M^f={4z1hrzkmMBbUVh?5{o4k3A&lX21gJNf$2<%bSnV9VaDE3;?KxJCjeu_O#ISen7P1=AWg z&b|DJ|NiZhjmx~9yzEc`EGXFGf^j~AcC36Yz}ZD($x(KJtbR_)l`3sZjXeO-HJ`LY zwm_xo(;@h`$bU=9uPO=T`I=bHWQ;yk4L)^L0lcwc*-VJ~YmB-_uCL@04swAj>2~e# z=o>=RLxcC9K66xDaLblGivYt>w=wbRhSRp*@bsPwfmL!0spk8rsE6>R{zsGj9wS6mdsUh{g?SnMcj9O#txL=f=mRLgi_dD9iyc@c6Ei0jj|#-+SP! zisax%^nV1PDa&wL0U)p(U6xxY3f#eSE4Ygo6DD^xg7E5p{My@9v}X#L{RtpOeHW#> z7Ixc&tgt_NL`h@a=a|)>C5SF6Ri_eE=jaez#Hc#xy4xV`dj5i9F_}i|GjYA=4mLO= zbASK!jpw|u?(v-{BmqXllp%^r#VJ*saz)HkoPTOeLFh`iPPPVMml>M{KLURTZiQwS zxL*~qBs?wMChofKk)Ky(#R7P0G%m4!HZoNf)8)ua)d^8(ZtNs!jTg^h*^9$lSH%81 zhK7K5fu(f-axIQIU@Tu@6|mAnR5i+`_D6mzMM|@=?nlc3Tjv_K53`}&TUSJY-P=}9 z_kZ6p^m?rd*8nV0ZhOnkkY!k?sxVQCj7sU`9oI&8NC2Y$Uv7*|R2iQN zSc-wq5Fcaqa7z5crV~Jy03QJK-SqjXz&c}!3MCZtxmyNch ziX2~0>`A~Eo$y_LdHbJ;)$*=k^Efj*w#LO{PU`Vcx)F3GoqnIth?!aOK;=28 zV}Rpl$G+*A8U6C*1t+aoVA;Zp^LMqB=!)gh^Wx0d8MTy3jV%?SkQynqJ|_nCX2d+zU^bMATWn13YxpHjS?NxP2yyDu|6 ziLqT`sl*aNDLS?28gp?qL{0_g=L7pceD!8FK7HUKZ+vI%tpoHQyPB0U`;i$BOW-7x zgaHOCGI*e1+Tz9o4}I@n&-`KkN^fN^yH$V%1zTD$)*)!6%G(0mS2UKlvv(UIkTvE> z`JzhQ(rh1qD1UXbcFP{9)_f`izks}~e5;Z`p0`QmOvLDewcwL?72xH4E2l%$(=qC+ za-Ek;ILHOAw6^PTMmdI5 zk9}0s@6SHpbMkXXhPod*e0fQ9a0wT9By%wiL;&kl2Y((tdSx5%Jg~LyZV945814>f z^SKIl@^?gZa5sb#V}g(vh~m4ie|znjwjSvJ!Ejb8W_NpWqS)##fc5}IqZ`I|{7Bc$;K#clZl%8AIW#h8K_2?0$6&o?ftnn;CbWyE2)u4t(hu|VcHJ}?|gLvsD zpDY%WYqU2LU+_G@2CFmo-@df}{ug(>a1n)Mz<-!^Wr(6$b;?zzQWeuxrxsHZy3($b zuK~DZ#u35Wz_Y;P&>RBy&qpj7PfeGJ=XM_Y=faf68hnYo3fBRaEBC$SZpbn$)KnNRM@FXtm8#={%$jyc zBf;Cr6sX+Xarwjs_3gb78vyPqHFjYj#NFHkig%!~RFqs=H z0w2t^lfRE&NPARzDJ@SV|fBc$^+x zO@5>R Date: Wed, 26 Mar 2008 14:13:32 -0700 Subject: [PATCH 034/129] backing out changes that weren't supposed to be part of my previous backout... --- gfx/public/nsFont.h | 3 --- gfx/src/thebes/nsThebesDeviceContext.cpp | 11 ++++------- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/gfx/public/nsFont.h b/gfx/public/nsFont.h index c50356e43739..95ef3f98fb0c 100644 --- a/gfx/public/nsFont.h +++ b/gfx/public/nsFont.h @@ -97,9 +97,6 @@ struct NS_GFX nsFont { // needs to be done. float sizeAdjust; - // Stretch of the font 1-9 - PRUint16 stretch; - // Initialize the font struct with an ASCII name nsFont(const char* aName, PRUint8 aStyle, PRUint8 aVariant, PRUint16 aWeight, PRUint8 aDecoration, nscoord aSize, diff --git a/gfx/src/thebes/nsThebesDeviceContext.cpp b/gfx/src/thebes/nsThebesDeviceContext.cpp index eab741d3c823..aa5a1a76fa3d 100644 --- a/gfx/src/thebes/nsThebesDeviceContext.cpp +++ b/gfx/src/thebes/nsThebesDeviceContext.cpp @@ -272,7 +272,10 @@ nsThebesDeviceContext::Init(nsNativeWidget aWidget) #endif - mScreenManager = do_GetService("@mozilla.org/gfx/screenmanager;1"); + + mDepth = 24; + + mScreenManager = do_GetService("@mozilla.org/gfx/screenmanager;1"); return NS_OK; } @@ -418,12 +421,6 @@ nsThebesDeviceContext::CheckFontExistence(const nsString& aFaceName) NS_IMETHODIMP nsThebesDeviceContext::GetDepth(PRUint32& aDepth) { - nsCOMPtr primaryScreen; - if (mDepth == 0) { - mScreenManager->GetPrimaryScreen(getter_AddRefs(primaryScreen)); - primaryScreen->GetColorDepth(reinterpret_cast(&mDepth)); - } - aDepth = mDepth; return NS_OK; } From c11e2088d007f6555f130751300fe624a3946736 Mon Sep 17 00:00:00 2001 From: "jruderman@hmc.edu" Date: Wed, 26 Mar 2008 14:31:37 -0700 Subject: [PATCH 035/129] Add crashtest --- layout/xul/base/src/grid/crashtests/321066-1.xul | 8 ++++++++ layout/xul/base/src/grid/crashtests/crashtests.list | 1 + 2 files changed, 9 insertions(+) create mode 100644 layout/xul/base/src/grid/crashtests/321066-1.xul diff --git a/layout/xul/base/src/grid/crashtests/321066-1.xul b/layout/xul/base/src/grid/crashtests/321066-1.xul new file mode 100644 index 000000000000..789c2582c7b6 --- /dev/null +++ b/layout/xul/base/src/grid/crashtests/321066-1.xul @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/layout/xul/base/src/grid/crashtests/crashtests.list b/layout/xul/base/src/grid/crashtests/crashtests.list index e162bfa2ee28..3397623c10d6 100644 --- a/layout/xul/base/src/grid/crashtests/crashtests.list +++ b/layout/xul/base/src/grid/crashtests/crashtests.list @@ -1,6 +1,7 @@ load 306911-crash.xul load 306911-grid-testcases.xul load 306911-grid-testcases2.xul +load 321066-1.xul load 321073-1.xul load 382750-1.xul load 400790-1.xul From a5e1d92bebe60229667eea6780998d7b7fc0b8d3 Mon Sep 17 00:00:00 2001 From: "pavlov@pavlov.net" Date: Wed, 26 Mar 2008 14:32:51 -0700 Subject: [PATCH 036/129] bug 424018. fix ts regression by loading character maps lazily. r=vlad --- gfx/thebes/public/gfxFontUtils.h | 8 +- gfx/thebes/public/gfxWindowsFonts.h | 16 +- gfx/thebes/public/gfxWindowsPlatform.h | 6 +- gfx/thebes/src/gfxFontUtils.cpp | 16 +- gfx/thebes/src/gfxQuartzFontCache.h | 1 - gfx/thebes/src/gfxQuartzFontCache.mm | 2 +- gfx/thebes/src/gfxWindowsFonts.cpp | 269 +++++++++++++++++++++- gfx/thebes/src/gfxWindowsPlatform.cpp | 302 ++----------------------- 8 files changed, 320 insertions(+), 300 deletions(-) diff --git a/gfx/thebes/public/gfxFontUtils.h b/gfx/thebes/public/gfxFontUtils.h index c716ac11f971..ec7485aae24a 100644 --- a/gfx/thebes/public/gfxFontUtils.h +++ b/gfx/thebes/public/gfxFontUtils.h @@ -307,14 +307,14 @@ public: } static nsresult - ReadCMAPTableFormat12(PRUint8 *aBuf, PRInt32 aLength, gfxSparseBitSet& aCharacterMap, std::bitset<128>& aUnicodeRanges); + ReadCMAPTableFormat12(PRUint8 *aBuf, PRInt32 aLength, gfxSparseBitSet& aCharacterMap); static nsresult - ReadCMAPTableFormat4(PRUint8 *aBuf, PRInt32 aLength, gfxSparseBitSet& aCharacterMap, std::bitset<128>& aUnicodeRanges); + ReadCMAPTableFormat4(PRUint8 *aBuf, PRInt32 aLength, gfxSparseBitSet& aCharacterMap); static nsresult - ReadCMAP(PRUint8 *aBuf, PRUint32 aBufLength, gfxSparseBitSet& aCharacterMap, std::bitset<128>& aUnicodeRanges, PRPackedBool& aUnicodeFont, - PRPackedBool& aSymbolFont); + ReadCMAP(PRUint8 *aBuf, PRUint32 aBufLength, gfxSparseBitSet& aCharacterMap, + PRPackedBool& aUnicodeFont, PRPackedBool& aSymbolFont); static inline bool IsJoiner(PRUint32 ch) { return (ch == 0x200C || diff --git a/gfx/thebes/public/gfxWindowsFonts.h b/gfx/thebes/public/gfxWindowsFonts.h index 14f4516d6712..9f75f1c2ecce 100644 --- a/gfx/thebes/public/gfxWindowsFonts.h +++ b/gfx/thebes/public/gfxWindowsFonts.h @@ -64,12 +64,22 @@ public: THEBES_INLINE_DECL_REFCOUNTING(FontFamily) FontFamily(const nsAString& aName) : - mName(aName) - { - } + mName(aName), mHasStyles(PR_FALSE) { } + FontEntry *FindFontEntry(const gfxFontStyle& aFontStyle); + +private: + static int CALLBACK FamilyAddStylesProc(const ENUMLOGFONTEXW *lpelfe, + const NEWTEXTMETRICEXW *nmetrics, + DWORD fontType, LPARAM data); + void FindStyleVariations(); + +public: nsTArray > mVariations; nsString mName; + +private: + PRBool mHasStyles; }; class FontEntry diff --git a/gfx/thebes/public/gfxWindowsPlatform.h b/gfx/thebes/public/gfxWindowsPlatform.h index 833924149158..3ef1c2eb6e9a 100644 --- a/gfx/thebes/public/gfxWindowsPlatform.h +++ b/gfx/thebes/public/gfxWindowsPlatform.h @@ -85,8 +85,7 @@ public: /* Find a FontFamily/FontEntry object that represents a font on your system given a name */ FontFamily *FindFontFamily(const nsAString& aName); - FontEntry *FindFontEntry(FontFamily *aFontFamily, const gfxFontStyle *aFontStyle); - FontEntry *FindFontEntry(const nsAString& aName, const gfxFontStyle *aFontStyle); + FontEntry *FindFontEntry(const nsAString& aName, const gfxFontStyle& aFontStyle); PRBool GetPrefFontEntries(const nsCString& aLangGroup, nsTArray > *array); void SetPrefFontEntries(const nsCString& aLangGroup, nsTArray >& array); @@ -101,6 +100,9 @@ private: static int CALLBACK FontEnumProc(const ENUMLOGFONTEXW *lpelfe, const NEWTEXTMETRICEXW *metrics, DWORD fontType, LPARAM data); + static int CALLBACK FamilyAddStylesProc(const ENUMLOGFONTEXW *lpelfe, + const NEWTEXTMETRICEXW *nmetrics, + DWORD fontType, LPARAM data); static PLDHashOperator PR_CALLBACK FontGetStylesProc(nsStringHashKey::KeyType aKey, nsRefPtr& aFontFamily, diff --git a/gfx/thebes/src/gfxFontUtils.cpp b/gfx/thebes/src/gfxFontUtils.cpp index 48a3c4991174..0aa1192587f7 100644 --- a/gfx/thebes/src/gfxFontUtils.cpp +++ b/gfx/thebes/src/gfxFontUtils.cpp @@ -220,7 +220,7 @@ static const struct UnicodeRangeTableEntry gUnicodeRanges[] = { nsresult -gfxFontUtils::ReadCMAPTableFormat12(PRUint8 *aBuf, PRInt32 aLength, gfxSparseBitSet& aCharacterMap, std::bitset<128>& aUnicodeRanges) +gfxFontUtils::ReadCMAPTableFormat12(PRUint8 *aBuf, PRInt32 aLength, gfxSparseBitSet& aCharacterMap) { enum { OffsetFormat = 0, @@ -260,7 +260,7 @@ gfxFontUtils::ReadCMAPTableFormat12(PRUint8 *aBuf, PRInt32 aLength, gfxSparseBit } nsresult -gfxFontUtils::ReadCMAPTableFormat4(PRUint8 *aBuf, PRInt32 aLength, gfxSparseBitSet& aCharacterMap, std::bitset<128>& aUnicodeRanges) +gfxFontUtils::ReadCMAPTableFormat4(PRUint8 *aBuf, PRInt32 aLength, gfxSparseBitSet& aCharacterMap) { enum { OffsetFormat = 0, @@ -340,8 +340,8 @@ gfxFontUtils::ReadCMAPTableFormat4(PRUint8 *aBuf, PRInt32 aLength, gfxSparseBitS (platformID == PlatformIDUnicode && encodingID == EncodingIDUCS4ForUnicodePlatform)) nsresult -gfxFontUtils::ReadCMAP(PRUint8 *aBuf, PRUint32 aBufLength, gfxSparseBitSet& aCharacterMap, std::bitset<128>& aUnicodeRanges, - PRPackedBool& aUnicodeFont, PRPackedBool& aSymbolFont) +gfxFontUtils::ReadCMAP(PRUint8 *aBuf, PRUint32 aBufLength, gfxSparseBitSet& aCharacterMap, + PRPackedBool& aUnicodeFont, PRPackedBool& aSymbolFont) { enum { OffsetVersion = 0, @@ -395,9 +395,13 @@ gfxFontUtils::ReadCMAP(PRUint8 *aBuf, PRUint32 aBufLength, gfxSparseBitSet& aCha keepOffset = offset; break; } else if (format == 4 && acceptableFormat4(platformID, encodingID, keepFormat)) { + aUnicodeFont = PR_TRUE; + aSymbolFont = PR_FALSE; keepFormat = format; keepOffset = offset; } else if (format == 12 && acceptableUCS4Encoding(platformID, encodingID)) { + aUnicodeFont = PR_TRUE; + aSymbolFont = PR_FALSE; keepFormat = format; keepOffset = offset; break; // we don't want to try anything else when this format is available. @@ -407,9 +411,9 @@ gfxFontUtils::ReadCMAP(PRUint8 *aBuf, PRUint32 aBufLength, gfxSparseBitSet& aCha nsresult rv = NS_ERROR_FAILURE; if (keepFormat == 12) - rv = ReadCMAPTableFormat12(aBuf + keepOffset, aBufLength - keepOffset, aCharacterMap, aUnicodeRanges); + rv = ReadCMAPTableFormat12(aBuf + keepOffset, aBufLength - keepOffset, aCharacterMap); else if (keepFormat == 4) - rv = ReadCMAPTableFormat4(aBuf + keepOffset, aBufLength - keepOffset, aCharacterMap, aUnicodeRanges); + rv = ReadCMAPTableFormat4(aBuf + keepOffset, aBufLength - keepOffset, aCharacterMap); return rv; } diff --git a/gfx/thebes/src/gfxQuartzFontCache.h b/gfx/thebes/src/gfxQuartzFontCache.h index 5c6f8588d92e..ccf0ebd5e246 100644 --- a/gfx/thebes/src/gfxQuartzFontCache.h +++ b/gfx/thebes/src/gfxQuartzFontCache.h @@ -102,7 +102,6 @@ protected: MacOSFamilyEntry *mFamily; ATSUFontID mATSUFontID; - std::bitset<128> mUnicodeRanges; gfxSparseBitSet mCharacterMap; PRPackedBool mCmapInitialized; diff --git a/gfx/thebes/src/gfxQuartzFontCache.mm b/gfx/thebes/src/gfxQuartzFontCache.mm index 7bfd664832ce..f134804828d6 100644 --- a/gfx/thebes/src/gfxQuartzFontCache.mm +++ b/gfx/thebes/src/gfxQuartzFontCache.mm @@ -190,7 +190,7 @@ MacOSFontEntry::ReadCMAP() nsresult rv = NS_ERROR_FAILURE; PRPackedBool unicodeFont, symbolFont; // currently ignored - rv = gfxFontUtils::ReadCMAP(cmap, size, mCharacterMap, mUnicodeRanges, unicodeFont, symbolFont); + rv = gfxFontUtils::ReadCMAP(cmap, size, mCharacterMap, unicodeFont, symbolFont); // for complex scripts, check for the presence of mort/morx PRBool checkedForMorphTable = PR_FALSE, hasMorphTable = PR_FALSE; diff --git a/gfx/thebes/src/gfxWindowsFonts.cpp b/gfx/thebes/src/gfxWindowsFonts.cpp index 9e6d145f969d..bcd8f471c519 100644 --- a/gfx/thebes/src/gfxWindowsFonts.cpp +++ b/gfx/thebes/src/gfxWindowsFonts.cpp @@ -109,6 +109,260 @@ struct DCFromContext { PRBool needsRelease; }; + +/********************************************************************** + * + * class FontFamily + * + **********************************************************************/ +static nsresult +ReadCMAP(HDC hdc, FontEntry *aFontEntry) +{ + const PRUint32 kCMAP = (('c') | ('m' << 8) | ('a' << 16) | ('p' << 24)); + + DWORD len = GetFontData(hdc, kCMAP, 0, nsnull, 0); + if (len == GDI_ERROR || len == 0) // not a truetype font -- + return NS_ERROR_FAILURE; // we'll treat it as a symbol font + + nsAutoTArray buffer; + if (!buffer.AppendElements(len)) + return NS_ERROR_OUT_OF_MEMORY; + PRUint8 *buf = buffer.Elements(); + + DWORD newLen = GetFontData(hdc, kCMAP, 0, buf, len); + NS_ENSURE_TRUE(newLen == len, NS_ERROR_FAILURE); + + return gfxFontUtils::ReadCMAP(buf, len, aFontEntry->mCharacterMap, + aFontEntry->mUnicodeFont, aFontEntry->mSymbolFont); +} + +struct FamilyAddStyleProcData { + HDC dc; + FontFamily *ff; +}; + +int CALLBACK +FontFamily::FamilyAddStylesProc(const ENUMLOGFONTEXW *lpelfe, + const NEWTEXTMETRICEXW *nmetrics, + DWORD fontType, LPARAM data) +{ + const NEWTEXTMETRICW& metrics = nmetrics->ntmTm; + LOGFONTW logFont = lpelfe->elfLogFont; + + FamilyAddStyleProcData *faspd = reinterpret_cast(data); + FontFamily *ff = faspd->ff; + HDC hdc = faspd->dc; + + // Some fonts claim to support things > 900, but we don't so clamp the sizes + logFont.lfWeight = PR_MAX(PR_MIN(logFont.lfWeight, 900), 100); + + FontEntry *fe = nsnull; + for (PRUint32 i = 0; i < ff->mVariations.Length(); ++i) { + fe = ff->mVariations[i]; + + // check if we already know about this face + if (fe->mWeight == logFont.lfWeight && + fe->mItalic == (logFont.lfItalic == 0xFF)) { + // update the charset bit here since this could be different + fe->mCharset[metrics.tmCharSet] = 1; + return 1; + } + } + + fe = new FontEntry(ff->mName); + ff->mVariations.AppendElement(fe); + + fe->mItalic = (logFont.lfItalic == 0xFF); + fe->mWeight = logFont.lfWeight; + + if (metrics.ntmFlags & NTM_TYPE1) + fe->mIsType1 = fe->mForceGDI = PR_TRUE; + + // fontType == TRUETYPE_FONTTYPE when (metrics.ntmFlags & NTM_TT_OPENTYPE) + if (fontType == TRUETYPE_FONTTYPE || metrics.ntmFlags & (NTM_PS_OPENTYPE)) + fe->mTrueType = PR_TRUE; + + // mark the charset bit + fe->mCharset[metrics.tmCharSet] = 1; + + fe->mWindowsFamily = logFont.lfPitchAndFamily & 0xF0; + fe->mWindowsPitch = logFont.lfPitchAndFamily & 0x0F; + + if (nmetrics->ntmFontSig.fsUsb[0] != 0x00000000 && + nmetrics->ntmFontSig.fsUsb[1] != 0x00000000 && + nmetrics->ntmFontSig.fsUsb[2] != 0x00000000 && + nmetrics->ntmFontSig.fsUsb[3] != 0x00000000) { + + // set the unicode ranges + PRUint32 x = 0; + for (PRUint32 i = 0; i < 4; ++i) { + DWORD range = nmetrics->ntmFontSig.fsUsb[i]; + for (PRUint32 k = 0; k < 32; ++k) { + fe->mUnicodeRanges[x++] = (range & (1 << k)) != 0; + } + } + } + + // read in the character map + logFont.lfCharSet = DEFAULT_CHARSET; + HFONT font = CreateFontIndirectW(&logFont); + + NS_ASSERTION(font, "This font creation should never ever ever fail"); + if (font) { + HFONT oldFont = (HFONT)SelectObject(hdc, font); + + // ReadCMAP may change the values of mUnicodeFont and mSymbolFont + if (NS_FAILED(ReadCMAP(hdc, fe))) { + // Type1 fonts aren't necessarily Unicode but + // this is the best guess we can make here + if (fe->mIsType1) + fe->mUnicodeFont = PR_TRUE; + else + fe->mUnicodeFont = PR_FALSE; + + // For fonts where we failed to read the character map, + // we should use GDI to slowly determine their cmap lazily + fe->mForceGDI = PR_TRUE; + + //printf("%d, %s failed to get cmap\n", aFontEntry->mIsType1, NS_ConvertUTF16toUTF8(aFontEntry->mName).get()); + } + + SelectObject(hdc, oldFont); + DeleteObject(font); + } + + return 1; +} + +// general cmap reading routines moved to gfxFontUtils.cpp +void +FontFamily::FindStyleVariations() +{ + mHasStyles = PR_TRUE; + + HDC hdc = GetDC(nsnull); + + LOGFONTW logFont; + memset(&logFont, 0, sizeof(LOGFONTW)); + logFont.lfCharSet = DEFAULT_CHARSET; + logFont.lfPitchAndFamily = 0; + PRUint32 l = PR_MIN(mName.Length(), LF_FACESIZE - 1); + memcpy(logFont.lfFaceName, + nsPromiseFlatString(mName).get(), + l * sizeof(PRUnichar)); + logFont.lfFaceName[l] = 0; + + FamilyAddStyleProcData faspd; + faspd.dc = hdc; + faspd.ff = this; + + EnumFontFamiliesExW(hdc, &logFont, (FONTENUMPROCW)FontFamily::FamilyAddStylesProc, (LPARAM)&faspd, 0); + + ReleaseDC(nsnull, hdc); + + // Look for font families without bold variations and add a FontEntry + // with synthetic bold (weight 600) for them. + FontEntry *darkestItalic = nsnull; + FontEntry *darkestNonItalic = nsnull; + PRUint8 highestItalic = 0, highestNonItalic = 0; + for (PRUint32 i = 0; i < mVariations.Length(); i++) { + FontEntry *fe = mVariations[i]; + if (fe->mItalic) { + if (!darkestItalic || fe->mWeight > darkestItalic->mWeight) + darkestItalic = fe; + } else { + if (!darkestNonItalic || fe->mWeight > darkestNonItalic->mWeight) + darkestNonItalic = fe; + } + } + + if (darkestItalic && darkestItalic->mWeight < 600) { + FontEntry *newEntry = new FontEntry(*darkestItalic); + newEntry->mWeight = 600; + mVariations.AppendElement(newEntry); + } + if (darkestNonItalic && darkestNonItalic->mWeight < 600) { + FontEntry *newEntry = new FontEntry(*darkestNonItalic); + newEntry->mWeight = 600; + mVariations.AppendElement(newEntry); + } +} + + +FontEntry * +FontFamily::FindFontEntry(const gfxFontStyle& aFontStyle) +{ + if (!mHasStyles) + FindStyleVariations(); + + PRUint8 bestMatch = 0; + PRBool italic = (aFontStyle.style & (FONT_STYLE_ITALIC | FONT_STYLE_OBLIQUE)) != 0; + + FontEntry *weightList[10] = { 0 }; + for (PRUint32 j = 0; j < 2; j++) { + PRBool matchesSomething = PR_FALSE; + // build up an array of weights that match the italicness we're looking for + for (PRUint32 i = 0; i < mVariations.Length(); i++) { + FontEntry *fe = mVariations[i]; + const PRUint8 weight = (fe->mWeight / 100); + if (fe->mItalic == italic) { + weightList[weight] = fe; + matchesSomething = PR_TRUE; + } + } + if (matchesSomething) + break; + italic = !italic; + } + + PRInt8 baseWeight, weightDistance; + aFontStyle.ComputeWeightAndOffset(&baseWeight, &weightDistance); + + // 500 isn't quite bold so we want to treat it as 400 if we don't + // have a 500 weight + if (baseWeight == 5 && weightDistance == 0) { + // If we have a 500 weight then use it + if (weightList[5]) + return weightList[5]; + + // Otherwise treat as 400 + baseWeight = 4; + } + + PRInt8 matchBaseWeight = 0; + PRInt8 direction = (baseWeight > 5) ? 1 : -1; + for (PRInt8 i = baseWeight; ; i += direction) { + if (weightList[i]) { + matchBaseWeight = i; + break; + } + + // if we've reached one side without finding a font, + // go the other direction until we find a match + if (i == 1 || i == 9) + direction = -direction; + } + + FontEntry *matchFE; + const PRInt8 absDistance = abs(weightDistance); + direction = (weightDistance >= 0) ? 1 : -1; + for (PRInt8 i = matchBaseWeight, k = 0; i < 10 && i > 0; i += direction) { + if (weightList[i]) { + matchFE = weightList[i]; + k++; + } + if (k > absDistance) + break; + } + + if (!matchFE) + matchFE = weightList[matchBaseWeight]; + + NS_ASSERTION(matchFE, "we should always be able to return something here"); + return matchFE; +} + + /********************************************************************** * * class gfxWindowsFont @@ -442,7 +696,7 @@ gfxWindowsFontGroup::GroupFamilyListToArrayList(nsTArray > * PRUint32 len = fonts.Length(); for (PRUint32 i = 0; i < len; ++i) { - nsRefPtr fe = gfxWindowsPlatform::GetPlatform()->FindFontEntry(fonts[i], &mStyle); + nsRefPtr fe = gfxWindowsPlatform::GetPlatform()->FindFontEntry(fonts[i], mStyle); list->AppendElement(fe); } } @@ -458,7 +712,7 @@ gfxWindowsFontGroup::FamilyListToArrayList(const nsString& aFamilies, PRUint32 len = fonts.Length(); for (PRUint32 i = 0; i < len; ++i) { const nsAutoString& str = fonts[i]; - nsRefPtr fe = gfxWindowsPlatform::GetPlatform()->FindFontEntry(str, &mStyle); + nsRefPtr fe = gfxWindowsPlatform::GetPlatform()->FindFontEntry(str, mStyle); list->AppendElement(fe); } } @@ -477,7 +731,7 @@ gfxWindowsFontGroup::gfxWindowsFontGroup(const nsAString& aFamilies, const gfxFo NS_ERROR("Failed to create font group"); return; } - nsRefPtr fe = gfxWindowsPlatform::GetPlatform()->FindFontEntry(nsDependentString(logFont.lfFaceName), aStyle); + nsRefPtr fe = gfxWindowsPlatform::GetPlatform()->FindFontEntry(nsDependentString(logFont.lfFaceName), *aStyle); mFontEntries.AppendElement(fe); } @@ -737,7 +991,7 @@ struct ScriptPropertyEntry { static const struct ScriptPropertyEntry gScriptToText[] = { { nsnull, nsnull }, - { "LANG_ARABIC", "ara" }, + { "LANG_ARABIC", "ar" }, // ara { "LANG_BULGARIAN", "bul" }, { "LANG_CATALAN", "cat" }, { "LANG_CHINESE", "zh-CN" }, //XXX right lang code? @@ -1304,6 +1558,13 @@ public: (ch >= 0xF0000 && ch <= 0x10FFFD)) return selectedFont; + // check out the style's language group + if (!selectedFont) { + nsAutoTArray, 5> fonts; + this->GetPrefFonts(mGroup->GetStyle()->langGroup.get(), fonts); + selectedFont = WhichFontSupportsChar(fonts, ch); + } + // otherwise search prefs if (!selectedFont) { /* first check with the script properties to see what they think */ diff --git a/gfx/thebes/src/gfxWindowsPlatform.cpp b/gfx/thebes/src/gfxWindowsPlatform.cpp index 88109cc6b121..552579f38cdf 100644 --- a/gfx/thebes/src/gfxWindowsPlatform.cpp +++ b/gfx/thebes/src/gfxWindowsPlatform.cpp @@ -58,7 +58,13 @@ //#define DEBUG_CMAP_SIZE 1 -static nsresult ReadCMAP(HDC hdc, FontEntry *aFontEntry); +static __inline void +BuildKeyNameFromFontName(nsAString &aName) +{ + if (aName.Length() >= LF_FACESIZE) + aName.Truncate(LF_FACESIZE - 1); + ToLowerCase(aName); +} int PR_CALLBACK gfxWindowsPlatform::PrefChangedCallback(const char *aPrefName, void *closure) @@ -107,23 +113,14 @@ gfxWindowsPlatform::FontEnumProc(const ENUMLOGFONTEXW *lpelfe, FontTable *ht = reinterpret_cast(data); const NEWTEXTMETRICW& metrics = nmetrics->ntmTm; - LOGFONTW logFont = lpelfe->elfLogFont; + const LOGFONTW& logFont = lpelfe->elfLogFont; // Ignore vertical fonts - if (logFont.lfFaceName[0] == L'@') { + if (logFont.lfFaceName[0] == L'@') return 1; - } - // Some fonts claim to support things > 900, but we don't so clamp the sizes - logFont.lfWeight = PR_MAX(PR_MIN(logFont.lfWeight, 900), 100); - -#ifdef DEBUG_pavlov - printf("%s %d %d %d\n", NS_ConvertUTF16toUTF8(nsDependentString(logFont.lfFaceName)).get(), - logFont.lfCharSet, logFont.lfItalic, logFont.lfWeight); -#endif - - nsString name(logFont.lfFaceName); - ToLowerCase(name); + nsAutoString name(logFont.lfFaceName); + BuildKeyNameFromFontName(name); nsRefPtr ff; if (!ht->Get(name, &ff)) { @@ -131,176 +128,12 @@ gfxWindowsPlatform::FontEnumProc(const ENUMLOGFONTEXW *lpelfe, ht->Put(name, ff); } - nsRefPtr fe; - for (PRUint32 i = 0; i < ff->mVariations.Length(); ++i) { - fe = ff->mVariations[i]; - if (fe->mWeight == logFont.lfWeight && - fe->mItalic == (logFont.lfItalic == 0xFF)) { - return 1; /* we already know about this font */ - } - } - - fe = new FontEntry(ff->mName); - /* don't append it until the end in case of error */ - - fe->mItalic = (logFont.lfItalic == 0xFF); - fe->mWeight = logFont.lfWeight; - - if (metrics.ntmFlags & NTM_TYPE1) - fe->mIsType1 = fe->mForceGDI = PR_TRUE; - if (metrics.ntmFlags & (NTM_PS_OPENTYPE | NTM_TT_OPENTYPE)) - fe->mTrueType = PR_TRUE; - - // mark the charset bit - fe->mCharset[metrics.tmCharSet] = 1; - - fe->mWindowsFamily = logFont.lfPitchAndFamily & 0xF0; - fe->mWindowsPitch = logFont.lfPitchAndFamily & 0x0F; - - if (nmetrics->ntmFontSig.fsUsb[0] == 0x00000000 && - nmetrics->ntmFontSig.fsUsb[1] == 0x00000000 && - nmetrics->ntmFontSig.fsUsb[2] == 0x00000000 && - nmetrics->ntmFontSig.fsUsb[3] == 0x00000000) { - // no unicode ranges - fe->mUnicodeFont = PR_FALSE; - } else { - fe->mUnicodeFont = PR_TRUE; - - // set the unicode ranges - PRUint32 x = 0; - for (PRUint32 i = 0; i < 4; ++i) { - DWORD range = nmetrics->ntmFontSig.fsUsb[i]; - for (PRUint32 k = 0; k < 32; ++k) { - fe->mUnicodeRanges[x++] = (range & (1 << k)) != 0; - } - } - } - - /* read in the character map */ - HDC hdc = GetDC(nsnull); - logFont.lfCharSet = DEFAULT_CHARSET; - HFONT font = CreateFontIndirectW(&logFont); - - NS_ASSERTION(font, "This font creation should never ever ever fail"); - if (font) { - HFONT oldFont = (HFONT)SelectObject(hdc, font); - - TEXTMETRIC metrics; - GetTextMetrics(hdc, &metrics); - if (metrics.tmPitchAndFamily & TMPF_TRUETYPE) - fe->mTrueType = PR_TRUE; - - if (NS_FAILED(ReadCMAP(hdc, fe))) { - // Type1 fonts aren't necessarily Unicode but - // this is the best guess we can make here - if (fe->mIsType1) - fe->mUnicodeFont = PR_TRUE; - else - fe->mUnicodeFont = PR_FALSE; - - //printf("%d, %s failed to get cmap\n", aFontEntry->mIsType1, NS_ConvertUTF16toUTF8(aFontEntry->mName).get()); - } - - SelectObject(hdc, oldFont); - DeleteObject(font); - } - - ReleaseDC(nsnull, hdc); - - if (!fe->mUnicodeFont) { - /* non-unicode fonts.. boy lets just set all code points - between 0x20 and 0xFF. All the ones on my system do... - If we really wanted to test which characters in this - range were supported we could just generate a string with - each codepoint and do GetGlyphIndicies or similar to determine - what is there. - */ - fe->mCharacterMap.SetRange(0x20, 0xFF); - } - - /* append the variation to the font family */ - ff->mVariations.AppendElement(fe); - return 1; } + // general cmap reading routines moved to gfxFontUtils.cpp -static nsresult -ReadCMAP(HDC hdc, FontEntry *aFontEntry) -{ - const PRUint32 kCMAP = (('c') | ('m' << 8) | ('a' << 16) | ('p' << 24)); - - DWORD len = GetFontData(hdc, kCMAP, 0, nsnull, 0); - if (len == GDI_ERROR || len == 0) // not a truetype font -- - return NS_ERROR_FAILURE; // we'll treat it as a symbol font - - nsAutoTArray buffer; - if (!buffer.AppendElements(len)) - return NS_ERROR_OUT_OF_MEMORY; - PRUint8 *buf = buffer.Elements(); - - DWORD newLen = GetFontData(hdc, kCMAP, 0, buf, len); - NS_ENSURE_TRUE(newLen == len, NS_ERROR_FAILURE); - - return gfxFontUtils::ReadCMAP(buf, len, aFontEntry->mCharacterMap, aFontEntry->mUnicodeRanges, - aFontEntry->mUnicodeFont, aFontEntry->mSymbolFont); -} - -PLDHashOperator PR_CALLBACK -gfxWindowsPlatform::FontGetStylesProc(nsStringHashKey::KeyType aKey, - nsRefPtr& aFontFamily, - void* userArg) -{ - NS_ASSERTION(aFontFamily->mVariations.Length() == 1, "We should only have 1 variation here"); - nsRefPtr aFontEntry = aFontFamily->mVariations[0]; - - HDC hdc = GetDC(nsnull); - - LOGFONTW logFont; - memset(&logFont, 0, sizeof(LOGFONTW)); - logFont.lfCharSet = DEFAULT_CHARSET; - logFont.lfPitchAndFamily = 0; - PRUint32 l = PR_MIN(aFontEntry->GetName().Length(), LF_FACESIZE - 1); - memcpy(logFont.lfFaceName, - nsPromiseFlatString(aFontEntry->GetName()).get(), - l * sizeof(PRUnichar)); - logFont.lfFaceName[l] = 0; - - EnumFontFamiliesExW(hdc, &logFont, (FONTENUMPROCW)gfxWindowsPlatform::FontEnumProc, (LPARAM)userArg, 0); - - ReleaseDC(nsnull, hdc); - - // Look for font families without bold variations and add a FontEntry - // with synthetic bold (weight 600) for them. - nsRefPtr darkestItalic; - nsRefPtr darkestNonItalic; - PRUint8 highestItalic = 0, highestNonItalic = 0; - for (PRUint32 i = 0; i < aFontFamily->mVariations.Length(); i++) { - nsRefPtr fe = aFontFamily->mVariations[i]; - if (fe->mItalic) { - if (!darkestItalic || fe->mWeight > darkestItalic->mWeight) - darkestItalic = fe; - } else { - if (!darkestNonItalic || fe->mWeight > darkestNonItalic->mWeight) - darkestNonItalic = fe; - } - } - - if (darkestItalic && darkestItalic->mWeight < 600) { - nsRefPtr newEntry = new FontEntry(*darkestItalic.get()); - newEntry->mWeight = 600; - aFontFamily->mVariations.AppendElement(newEntry); - } - if (darkestNonItalic && darkestNonItalic->mWeight < 600) { - nsRefPtr newEntry = new FontEntry(*darkestNonItalic.get()); - newEntry->mWeight = 600; - aFontFamily->mVariations.AppendElement(newEntry); - } - - return PL_DHASH_NEXT; -} - struct FontListData { FontListData(const nsACString& aLangGroup, const nsACString& aGenericFamily, nsStringArray& aListOfFonts) : mLangGroup(aLangGroup), mGenericFamily(aGenericFamily), mStringArray(aListOfFonts) {} @@ -319,7 +152,9 @@ gfxWindowsPlatform::HashEnumFunc(nsStringHashKey::KeyType aKey, // use the first variation for now. This data should be the same // for all the variations and should probably be moved up to // the Family - nsRefPtr aFontEntry = aFontFamily->mVariations[0]; + gfxFontStyle style; + style.langGroup = data->mLangGroup; + nsRefPtr aFontEntry = aFontFamily->FindFontEntry(style); /* skip symbol fonts */ if (aFontEntry->mSymbolFont) @@ -355,14 +190,6 @@ RemoveCharsetFromFontSubstitute(nsAString &aName) aName.Truncate(comma); } -static void -BuildKeyNameFromFontName(nsAString &aName) -{ - if (aName.Length() >= LF_FACESIZE) - aName.Truncate(LF_FACESIZE - 1); - ToLowerCase(aName); -} - nsresult gfxWindowsPlatform::UpdateFontList() { @@ -386,9 +213,6 @@ gfxWindowsPlatform::UpdateFontList() EnumFontFamiliesExW(dc, &logFont, (FONTENUMPROCW)gfxWindowsPlatform::FontEnumProc, (LPARAM)&mFonts, 0); ::ReleaseDC(nsnull, dc); - // Look for additional styles - mFonts.Enumerate(gfxWindowsPlatform::FontGetStylesProc, &mFonts); - // Create the list of FontSubstitutes nsCOMPtr regKey = do_CreateInstance("@mozilla.org/windows-registry-key;1"); if (!regKey) @@ -441,7 +265,7 @@ gfxWindowsPlatform::UpdateFontList() static PRBool SimpleResolverCallback(const nsAString& aName, void* aClosure) { - nsString* result = static_cast(aClosure); + nsString *result = static_cast(aClosure); result->Assign(aName); return PR_FALSE; } @@ -591,7 +415,7 @@ gfxWindowsPlatform::FindFontForCharProc(nsStringHashKey::KeyType aKey, const PRUint32 ch = data->ch; - nsRefPtr fe = GetPlatform()->FindFontEntry(aFontFamily, data->fontToMatch->GetStyle()); + nsRefPtr fe = aFontFamily->FindFontEntry(*data->fontToMatch->GetStyle()); // skip over non-unicode and bitmap fonts and fonts that don't have // the code point we're looking for @@ -613,7 +437,7 @@ gfxWindowsPlatform::FindFontForCharProc(nsStringHashKey::KeyType aKey, rank += 3; /* italic */ - const PRBool italic = (data->fontToMatch->GetStyle()->style & (FONT_STYLE_ITALIC | FONT_STYLE_OBLIQUE)) ? PR_TRUE : PR_FALSE; + const PRBool italic = (data->fontToMatch->GetStyle()->style != FONT_STYLE_NORMAL); if (fe->mItalic != italic) rank += 3; @@ -652,7 +476,7 @@ gfxWindowsPlatform::FindFontForChar(PRUint32 aCh, gfxWindowsFont *aFont) if (!data.bestMatch) { mCodepointsWithNoFonts.set(aCh); } - + return data.bestMatch; } @@ -666,8 +490,8 @@ gfxWindowsPlatform::CreateFontGroup(const nsAString &aFamilies, FontFamily * gfxWindowsPlatform::FindFontFamily(const nsAString& aName) { - nsString name(aName); - ToLowerCase(name); + nsAutoString name(aName); + BuildKeyNameFromFontName(name); nsRefPtr ff; if (!mFonts.Get(name, &ff) && @@ -679,93 +503,13 @@ gfxWindowsPlatform::FindFontFamily(const nsAString& aName) } FontEntry * -gfxWindowsPlatform::FindFontEntry(const nsAString& aName, const gfxFontStyle *aFontStyle) +gfxWindowsPlatform::FindFontEntry(const nsAString& aName, const gfxFontStyle& aFontStyle) { nsRefPtr ff = FindFontFamily(aName); if (!ff) return nsnull; - return FindFontEntry(ff, aFontStyle); -} - -FontEntry * -gfxWindowsPlatform::FindFontEntry(FontFamily *aFontFamily, const gfxFontStyle *aFontStyle) -{ - PRUint8 bestMatch = 0; - PRBool italic = (aFontStyle->style & (FONT_STYLE_ITALIC | FONT_STYLE_OBLIQUE)) != 0; - - nsAutoTArray, 10> weightList; - weightList.AppendElements(10); - for (PRUint32 j = 0; j < 2; j++) { - PRBool matchesSomething = PR_FALSE; - // build up an array of weights that match the italicness we're looking for - for (PRUint32 i = 0; i < aFontFamily->mVariations.Length(); i++) { - nsRefPtr fe = aFontFamily->mVariations[i]; - const PRUint8 weight = (fe->mWeight / 100); - if (fe->mItalic == italic) { - weightList[weight] = fe; - matchesSomething = PR_TRUE; - } - } - if (matchesSomething) - break; - italic = !italic; - } - - PRInt8 baseWeight, weightDistance; - aFontStyle->ComputeWeightAndOffset(&baseWeight, &weightDistance); - - // 500 isn't quite bold so we want to treat it as 400 if we don't - // have a 500 weight - if (baseWeight == 5 && weightDistance == 0) { - // If we have a 500 weight then use it - if (weightList[5]) - return weightList[5]; - - // Otherwise treat as 400 - baseWeight = 4; - } - - - PRInt8 matchBaseWeight = 0; - PRInt8 direction = (baseWeight > 5) ? 1 : -1; - for (PRInt8 i = baseWeight; ; i += direction) { - if (weightList[i]) { - matchBaseWeight = i; - break; - } - - // if we've reached one side without finding a font, - // go the other direction until we find a match - if (i == 1 || i == 9) - direction = -direction; - } - - nsRefPtr matchFE; - const PRInt8 absDistance = abs(weightDistance); - direction = (weightDistance >= 0) ? 1 : -1; - for (PRInt8 i = matchBaseWeight, k = 0; i < 10 && i > 0; i += direction) { - if (weightList[i]) { - matchFE = weightList[i]; - k++; - } - if (k > absDistance) - break; - } - - if (!matchFE) { - /* if we still don't have a match, grab the closest thing in the other direction */ - direction = -direction; - for (PRInt8 i = matchBaseWeight; i < 10 && i > 0; i += direction) { - if (weightList[i]) { - matchFE = weightList[i]; - } - } - } - - - NS_ASSERTION(matchFE, "we should always be able to return something here"); - return matchFE; + return ff->FindFontEntry(aFontStyle); } cmsHPROFILE From dd3c2dd39691c407d1002f5035f55b0bdff8c27c Mon Sep 17 00:00:00 2001 From: "masayuki@d-toybox.com" Date: Wed, 26 Mar 2008 14:43:43 -0700 Subject: [PATCH 037/129] Bug 425249 gfxWindowsPlatform::InitBadUnderlineList() is broken by bug 424018 r+b1.9+a1.9b5=stuart --- gfx/thebes/public/gfxWindowsFonts.h | 1 + gfx/thebes/src/gfxWindowsFonts.cpp | 2 ++ gfx/thebes/src/gfxWindowsPlatform.cpp | 5 +---- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/gfx/thebes/public/gfxWindowsFonts.h b/gfx/thebes/public/gfxWindowsFonts.h index 9f75f1c2ecce..13f7a2847708 100644 --- a/gfx/thebes/public/gfxWindowsFonts.h +++ b/gfx/thebes/public/gfxWindowsFonts.h @@ -77,6 +77,7 @@ private: public: nsTArray > mVariations; nsString mName; + PRPackedBool mIsBadUnderlineFont; private: PRBool mHasStyles; diff --git a/gfx/thebes/src/gfxWindowsFonts.cpp b/gfx/thebes/src/gfxWindowsFonts.cpp index bcd8f471c519..d2724b346117 100644 --- a/gfx/thebes/src/gfxWindowsFonts.cpp +++ b/gfx/thebes/src/gfxWindowsFonts.cpp @@ -203,6 +203,8 @@ FontFamily::FamilyAddStylesProc(const ENUMLOGFONTEXW *lpelfe, } } + fe->mIsBadUnderlineFont = ff->mIsBadUnderlineFont; + // read in the character map logFont.lfCharSet = DEFAULT_CHARSET; HFONT font = CreateFontIndirectW(&logFont); diff --git a/gfx/thebes/src/gfxWindowsPlatform.cpp b/gfx/thebes/src/gfxWindowsPlatform.cpp index 552579f38cdf..52874b1b7212 100644 --- a/gfx/thebes/src/gfxWindowsPlatform.cpp +++ b/gfx/thebes/src/gfxWindowsPlatform.cpp @@ -285,10 +285,7 @@ gfxWindowsPlatform::InitBadUnderlineList() FontFamily *ff = FindFontFamily(resolved); if (!ff) continue; - for (PRUint32 j = 0; j < ff->mVariations.Length(); ++j) { - nsRefPtr fe = ff->mVariations[j]; - fe->mIsBadUnderlineFont = 1; - } + ff->mIsBadUnderlineFont = 1; } } From 9354f3db0beea5a99d5f0c2672aa5696ef34cb4f Mon Sep 17 00:00:00 2001 From: "jruderman@hmc.edu" Date: Wed, 26 Mar 2008 14:45:16 -0700 Subject: [PATCH 038/129] Add a crashtest --- content/base/crashtests/377360-1.xhtml | 19 +++++++++++++++++++ content/base/crashtests/crashtests.list | 1 + 2 files changed, 20 insertions(+) create mode 100644 content/base/crashtests/377360-1.xhtml diff --git a/content/base/crashtests/377360-1.xhtml b/content/base/crashtests/377360-1.xhtml new file mode 100644 index 000000000000..77fa300befd2 --- /dev/null +++ b/content/base/crashtests/377360-1.xhtml @@ -0,0 +1,19 @@ + + + + + + + +

+ + + diff --git a/content/base/crashtests/crashtests.list b/content/base/crashtests/crashtests.list index 36f3688ae796..90bf7bd81ff0 100644 --- a/content/base/crashtests/crashtests.list +++ b/content/base/crashtests/crashtests.list @@ -19,6 +19,7 @@ load 354645-1.xul load 366200-1.xhtml load 369216-1.html load 371466-1.xhtml +load 377360-1.xhtml load 386000-1.html load 386794-1.html load 395469-1.xhtml From c2850c77eec8a439aa889fb838514354e15fd71b Mon Sep 17 00:00:00 2001 From: "jruderman@hmc.edu" Date: Wed, 26 Mar 2008 15:03:26 -0700 Subject: [PATCH 039/129] Add crashtest. --- layout/generic/crashtests/380012-1.html | 42 +++++++++++++++++++++++ layout/generic/crashtests/crashtests.list | 1 + 2 files changed, 43 insertions(+) create mode 100644 layout/generic/crashtests/380012-1.html diff --git a/layout/generic/crashtests/380012-1.html b/layout/generic/crashtests/380012-1.html new file mode 100644 index 000000000000..6cd7e1018e64 --- /dev/null +++ b/layout/generic/crashtests/380012-1.html @@ -0,0 +1,42 @@ + + + + + + + + + + + +
+

foo

+
+ + + diff --git a/layout/generic/crashtests/crashtests.list b/layout/generic/crashtests/crashtests.list index b50c81aabd0d..6b3521357983 100644 --- a/layout/generic/crashtests/crashtests.list +++ b/layout/generic/crashtests/crashtests.list @@ -46,6 +46,7 @@ load 373868-1.xhtml load 379217-1.xhtml load 379217-2.xhtml load 379917-1.xhtml +load 380012-1.html load 382129-1.xhtml load 382199-1.html load 382262-1.html From 9101a20c416057e2dd41a4cf2a2eabec8f05d7c3 Mon Sep 17 00:00:00 2001 From: "jruderman@hmc.edu" Date: Wed, 26 Mar 2008 15:13:20 -0700 Subject: [PATCH 040/129] Add a crashtest --- .../libeditor/base/crashtests/382527-1.html | 57 +++++++++++++++++++ .../libeditor/base/crashtests/crashtests.list | 1 + 2 files changed, 58 insertions(+) create mode 100644 editor/libeditor/base/crashtests/382527-1.html diff --git a/editor/libeditor/base/crashtests/382527-1.html b/editor/libeditor/base/crashtests/382527-1.html new file mode 100644 index 000000000000..18c8e4979ce3 --- /dev/null +++ b/editor/libeditor/base/crashtests/382527-1.html @@ -0,0 +1,57 @@ + + + + + + + + + +
+ + + + diff --git a/editor/libeditor/base/crashtests/crashtests.list b/editor/libeditor/base/crashtests/crashtests.list index 8affe85b8232..e0631556523f 100644 --- a/editor/libeditor/base/crashtests/crashtests.list +++ b/editor/libeditor/base/crashtests/crashtests.list @@ -1,2 +1,3 @@ +load 382527-1.html load 402172-1.html load 407256-1.html From a737898aa36fc6b1e2872f42fab8707dec5e0b5c Mon Sep 17 00:00:00 2001 From: "jst@mozilla.org" Date: Wed, 26 Mar 2008 16:04:57 -0700 Subject: [PATCH 041/129] Fixing bug 425013. Make Firefox show the plugin finder UI for unsupported object tags w/o alternate content. r+sr=bzbarsky@mit.edu --- content/base/src/nsObjectLoadingContent.cpp | 19 +++-- content/base/test/Makefile.in | 15 ++-- content/base/test/test_bug425013.html | 82 +++++++++++++++++++++ 3 files changed, 104 insertions(+), 12 deletions(-) create mode 100644 content/base/test/test_bug425013.html diff --git a/content/base/src/nsObjectLoadingContent.cpp b/content/base/src/nsObjectLoadingContent.cpp index 1ff8294886d2..a0683b5a88b3 100644 --- a/content/base/src/nsObjectLoadingContent.cpp +++ b/content/base/src/nsObjectLoadingContent.cpp @@ -77,6 +77,7 @@ #include "nsNetUtil.h" #include "nsPresShellIterator.h" #include "nsMimeTypes.h" +#include "nsStyleUtil.h" // Concrete classes #include "nsFrameLoader.h" @@ -1725,6 +1726,8 @@ nsObjectLoadingContent::GetPluginSupportState(nsIContent* aContent, return GetPluginDisabledState(aContentType); } + PRBool hasAlternateContent = PR_FALSE; + // Search for a child with a pluginurl name PRUint32 count = aContent->GetChildCount(); for (PRUint32 i = 0; i < count; ++i) { @@ -1732,13 +1735,19 @@ nsObjectLoadingContent::GetPluginSupportState(nsIContent* aContent, NS_ASSERTION(child, "GetChildCount lied!"); if (child->IsNodeOfType(nsINode::eHTML) && - child->Tag() == nsGkAtoms::param && - child->AttrValueIs(kNameSpaceID_None, nsGkAtoms::name, - NS_LITERAL_STRING("pluginurl"), eIgnoreCase)) { - return GetPluginDisabledState(aContentType); + child->Tag() == nsGkAtoms::param) { + if (child->AttrValueIs(kNameSpaceID_None, nsGkAtoms::name, + NS_LITERAL_STRING("pluginurl"), eIgnoreCase)) { + return GetPluginDisabledState(aContentType); + } + } else if (!hasAlternateContent) { + hasAlternateContent = + nsStyleUtil::IsSignificantChild(child, PR_TRUE, PR_FALSE); } } - return ePluginOtherState; + + return hasAlternateContent ? ePluginOtherState : + GetPluginDisabledState(aContentType); } /* static */ nsObjectLoadingContent::PluginSupportState diff --git a/content/base/test/Makefile.in b/content/base/test/Makefile.in index a8ffceb9fe71..a5bf2b602d1d 100644 --- a/content/base/test/Makefile.in +++ b/content/base/test/Makefile.in @@ -160,13 +160,14 @@ _TEST_FILES = test_bug5141.html \ test_bug421602.html \ test_bug422537.html \ test_bug424212.html \ - test_XHR.html \ - file_XHR_pass1.xml \ - file_XHR_pass2.txt \ - file_XHR_pass3.txt \ - file_XHR_pass3.txt^headers^ \ - file_XHR_fail1.txt \ - file_XHR_fail1.txt^headers^ \ + test_bug425013.html \ + test_XHR.html \ + file_XHR_pass1.xml \ + file_XHR_pass2.txt \ + file_XHR_pass3.txt \ + file_XHR_pass3.txt^headers^ \ + file_XHR_fail1.txt \ + file_XHR_fail1.txt^headers^ \ $(NULL) libs:: $(_TEST_FILES) diff --git a/content/base/test/test_bug425013.html b/content/base/test/test_bug425013.html new file mode 100644 index 000000000000..5e0fdb3ce5c7 --- /dev/null +++ b/content/base/test/test_bug425013.html @@ -0,0 +1,82 @@ + + + + + Test for Bug 425013 + + + + + + +
Mozilla Bug 425013 +
+ + + + + + + + + + + + + + + +

Alternate content

+
+ + + + + +

Alternate content

+
+ + + + + + + + + From 992b50dde47e49b547ef7e23993e3f243dcd1552 Mon Sep 17 00:00:00 2001 From: "jruderman@hmc.edu" Date: Wed, 26 Mar 2008 16:23:43 -0700 Subject: [PATCH 042/129] Add crashtests --- gfx/thebes/crashtests/385423-1.html | 17 +++++++++++++++++ gfx/thebes/crashtests/385423-2.html | 17 +++++++++++++++++ gfx/thebes/crashtests/crashtests.list | 2 ++ 3 files changed, 36 insertions(+) create mode 100644 gfx/thebes/crashtests/385423-1.html create mode 100644 gfx/thebes/crashtests/385423-2.html diff --git a/gfx/thebes/crashtests/385423-1.html b/gfx/thebes/crashtests/385423-1.html new file mode 100644 index 000000000000..748776c309ae --- /dev/null +++ b/gfx/thebes/crashtests/385423-1.html @@ -0,0 +1,17 @@ + + + + + + +
ݯ ݯ
+ + \ No newline at end of file diff --git a/gfx/thebes/crashtests/385423-2.html b/gfx/thebes/crashtests/385423-2.html new file mode 100644 index 000000000000..7de8bdaaf69a --- /dev/null +++ b/gfx/thebes/crashtests/385423-2.html @@ -0,0 +1,17 @@ + + + + + + +
+ + \ No newline at end of file diff --git a/gfx/thebes/crashtests/crashtests.list b/gfx/thebes/crashtests/crashtests.list index 67e1ffc60f3b..4d487da21afa 100644 --- a/gfx/thebes/crashtests/crashtests.list +++ b/gfx/thebes/crashtests/crashtests.list @@ -10,6 +10,8 @@ load 383473-1.html load 385417-1.html load 385417-2.html load 385719-1.html +load 385423-1.html +load 385423-2.html load 393746-1.xhtml load 393749-1.html load 393822-1.html From a3285a34f18c4a03da1927f0878381b6397c0562 Mon Sep 17 00:00:00 2001 From: "jruderman@hmc.edu" Date: Wed, 26 Mar 2008 16:27:23 -0700 Subject: [PATCH 043/129] Add crashtest --- layout/generic/crashtests/385426-1.html | 5 +++++ layout/generic/crashtests/crashtests.list | 1 + 2 files changed, 6 insertions(+) create mode 100644 layout/generic/crashtests/385426-1.html diff --git a/layout/generic/crashtests/385426-1.html b/layout/generic/crashtests/385426-1.html new file mode 100644 index 000000000000..534e1cef2164 --- /dev/null +++ b/layout/generic/crashtests/385426-1.html @@ -0,0 +1,5 @@ + + +
­
+ + diff --git a/layout/generic/crashtests/crashtests.list b/layout/generic/crashtests/crashtests.list index 6b3521357983..9c7cd8a9b3ad 100644 --- a/layout/generic/crashtests/crashtests.list +++ b/layout/generic/crashtests/crashtests.list @@ -56,6 +56,7 @@ load 385265-1.xhtml load 385295-1.xhtml load 385414-1.html load 385414-2.html +load 385426-1.html load 385885-1.xul load 386799-1.html load 386807-1.html From 2a55bac05b5d6ffeecc9268fb652295698150274 Mon Sep 17 00:00:00 2001 From: "jruderman@hmc.edu" Date: Wed, 26 Mar 2008 16:31:18 -0700 Subject: [PATCH 044/129] Add a crashtest. --- layout/base/crashtests/384649-1.xhtml | 31 ++++++++++++++++++++++++++ layout/base/crashtests/crashtests.list | 1 + 2 files changed, 32 insertions(+) create mode 100644 layout/base/crashtests/384649-1.xhtml diff --git a/layout/base/crashtests/384649-1.xhtml b/layout/base/crashtests/384649-1.xhtml new file mode 100644 index 000000000000..e2ba50cdeec7 --- /dev/null +++ b/layout/base/crashtests/384649-1.xhtml @@ -0,0 +1,31 @@ + + + + + + + +
+ + + + x + + + y + + + +
+ + + + diff --git a/layout/base/crashtests/crashtests.list b/layout/base/crashtests/crashtests.list index c8259f53b380..8cbf230c58b2 100644 --- a/layout/base/crashtests/crashtests.list +++ b/layout/base/crashtests/crashtests.list @@ -65,6 +65,7 @@ load 380096-1.html load 382204-1.html load 383102-1.xhtml load 383806-1.xhtml +load 384649-1.xhtml load 385866-1.xhtml load 385880-1.xhtml load 388715-1.html From 5bf381d7cf5aee675178b58c59b8476e7412d7c9 Mon Sep 17 00:00:00 2001 From: "jruderman@hmc.edu" Date: Wed, 26 Mar 2008 16:54:47 -0700 Subject: [PATCH 045/129] Add crashtest --- layout/svg/crashtests/386566-1.svg | 21 +++++++++++++++++++++ layout/svg/crashtests/crashtests.list | 1 + 2 files changed, 22 insertions(+) create mode 100644 layout/svg/crashtests/386566-1.svg diff --git a/layout/svg/crashtests/386566-1.svg b/layout/svg/crashtests/386566-1.svg new file mode 100644 index 000000000000..fd44879c4fea --- /dev/null +++ b/layout/svg/crashtests/386566-1.svg @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/layout/svg/crashtests/crashtests.list b/layout/svg/crashtests/crashtests.list index 6787650e10ab..a0aa3ec629e1 100644 --- a/layout/svg/crashtests/crashtests.list +++ b/layout/svg/crashtests/crashtests.list @@ -45,6 +45,7 @@ load 385246-2.svg load 385840-1.svg # asserts (bug 385845) load 385852-1.svg load 386475-1.xhtml # asserts (bug 385554) +load 386566-1.svg load 387290-1.svg load 402408-1.svg load 404677-1.xhtml From 305e1db8cc20c371aee7d10464139526b6e1e1da Mon Sep 17 00:00:00 2001 From: "jruderman@hmc.edu" Date: Wed, 26 Mar 2008 17:01:27 -0700 Subject: [PATCH 046/129] Add reftest (mostly for an assertion, but also making sure it's blank) --- layout/reftests/bugs/388367-1.html | 7 +++++++ layout/reftests/bugs/reftest.list | 1 + 2 files changed, 8 insertions(+) create mode 100644 layout/reftests/bugs/388367-1.html diff --git a/layout/reftests/bugs/388367-1.html b/layout/reftests/bugs/388367-1.html new file mode 100644 index 000000000000..6c368fcc4bbe --- /dev/null +++ b/layout/reftests/bugs/388367-1.html @@ -0,0 +1,7 @@ + + + + +

+ + diff --git a/layout/reftests/bugs/reftest.list b/layout/reftests/bugs/reftest.list index bdad1e0dcc56..2716d7cab001 100644 --- a/layout/reftests/bugs/reftest.list +++ b/layout/reftests/bugs/reftest.list @@ -575,6 +575,7 @@ fails == 386310-1d.html 386310-1-ref.html == 387876-3a.html 387876-3-ref.html == 387876-3b.html 387876-3-ref.html == 388026-1.html 388026-1-ref.html +== 388367-1.html about:blank == 388980-1.html 388980-1-ref.html == 389468-1.html 389468-1-ref.html == 389636-1.html about:blank # assertion test From 07c38d59c9daf91628cbe7f1c7e502685b68d43c Mon Sep 17 00:00:00 2001 From: "bent.mozilla@gmail.com" Date: Wed, 26 Mar 2008 17:24:31 -0700 Subject: [PATCH 047/129] Bug 425289 - "Mousing over plugins on Mac/Linux leaks and prevents plugin from shutting down". r+sr=jst, a=schrep. --- layout/generic/nsObjectFrame.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/layout/generic/nsObjectFrame.cpp b/layout/generic/nsObjectFrame.cpp index fab1d4c4e02f..9699ae121e71 100644 --- a/layout/generic/nsObjectFrame.cpp +++ b/layout/generic/nsObjectFrame.cpp @@ -408,6 +408,19 @@ public: if (appShell) { PRUint32 currentLevel = 0; appShell->GetEventloopNestingLevel(¤tLevel); +#ifdef XP_MACOSX + // Cocoa widget code doesn't process UI events through the normal appshell + // event loop, so it needs an additional count here. + currentLevel++; +#else + // No idea how this happens... but Linux doesn't consistently process UI + // events through the appshell event loop. If we get a 0 here on any + // platform we increment the level just in case so that we make sure we + // always tear the plugin down eventually. + if (!currentLevel) { + currentLevel++; + } +#endif if (currentLevel < mLastEventloopNestingLevel) { mLastEventloopNestingLevel = currentLevel; } @@ -1813,7 +1826,9 @@ nsStopPluginRunnable::Run() if (!mTimer) mTimer = do_CreateInstance("@mozilla.org/timer;1"); if (mTimer) { - nsresult rv = mTimer->InitWithCallback(this, 3000, nsITimer::TYPE_ONE_SHOT); + // Fire 100ms timer to try to tear down this plugin as quickly as + // possible once the nesting level comes back down. + nsresult rv = mTimer->InitWithCallback(this, 100, nsITimer::TYPE_ONE_SHOT); if (NS_SUCCEEDED(rv)) { return rv; } From 979580cbb80548dd58ee95603645871b96aa7f80 Mon Sep 17 00:00:00 2001 From: "jruderman@hmc.edu" Date: Wed, 26 Mar 2008 17:24:55 -0700 Subject: [PATCH 048/129] Add crashtests --- layout/generic/crashtests/393956-1.html | 25 ++++++++++++++++++++++ layout/generic/crashtests/393956-2.html | 26 +++++++++++++++++++++++ layout/generic/crashtests/393956-3.html | 11 ++++++++++ layout/generic/crashtests/393956-4.html | 11 ++++++++++ layout/generic/crashtests/crashtests.list | 4 ++++ 5 files changed, 77 insertions(+) create mode 100644 layout/generic/crashtests/393956-1.html create mode 100644 layout/generic/crashtests/393956-2.html create mode 100644 layout/generic/crashtests/393956-3.html create mode 100644 layout/generic/crashtests/393956-4.html diff --git a/layout/generic/crashtests/393956-1.html b/layout/generic/crashtests/393956-1.html new file mode 100644 index 000000000000..77f00ae56891 --- /dev/null +++ b/layout/generic/crashtests/393956-1.html @@ -0,0 +1,25 @@ + + + + + + + +
+ + diff --git a/layout/generic/crashtests/393956-2.html b/layout/generic/crashtests/393956-2.html new file mode 100644 index 000000000000..3260178e8622 --- /dev/null +++ b/layout/generic/crashtests/393956-2.html @@ -0,0 +1,26 @@ + + + + + + + +
+ + diff --git a/layout/generic/crashtests/393956-3.html b/layout/generic/crashtests/393956-3.html new file mode 100644 index 000000000000..afa5ab683cd3 --- /dev/null +++ b/layout/generic/crashtests/393956-3.html @@ -0,0 +1,11 @@ + + + +
+ + diff --git a/layout/generic/crashtests/393956-4.html b/layout/generic/crashtests/393956-4.html new file mode 100644 index 000000000000..fe16ea1467e9 --- /dev/null +++ b/layout/generic/crashtests/393956-4.html @@ -0,0 +1,11 @@ + + + +
+ + diff --git a/layout/generic/crashtests/crashtests.list b/layout/generic/crashtests/crashtests.list index 9c7cd8a9b3ad..41b9fb528709 100644 --- a/layout/generic/crashtests/crashtests.list +++ b/layout/generic/crashtests/crashtests.list @@ -79,6 +79,10 @@ load 392698-1.html load 393758-1.xhtml load 393906-1.html load 393923-1.html +load 393956-1.html +load 393956-2.html +load 393956-3.html +load 393956-4.html load 394820-1.html load 395450-1.xhtml load 397187-1.html From 01ae6d2ae8dba979d4700e8a28aa5686e18c8c41 Mon Sep 17 00:00:00 2001 From: "jruderman@hmc.edu" Date: Wed, 26 Mar 2008 17:28:43 -0700 Subject: [PATCH 049/129] Add crashtest --- layout/generic/crashtests/394237-1.html | 38 +++++++++++++++++++++++ layout/generic/crashtests/crashtests.list | 1 + 2 files changed, 39 insertions(+) create mode 100644 layout/generic/crashtests/394237-1.html diff --git a/layout/generic/crashtests/394237-1.html b/layout/generic/crashtests/394237-1.html new file mode 100644 index 000000000000..53bbc16f6868 --- /dev/null +++ b/layout/generic/crashtests/394237-1.html @@ -0,0 +1,38 @@ + + + + + + + + +
+
+
+ + + diff --git a/layout/generic/crashtests/crashtests.list b/layout/generic/crashtests/crashtests.list index 41b9fb528709..d5f8ea2b6336 100644 --- a/layout/generic/crashtests/crashtests.list +++ b/layout/generic/crashtests/crashtests.list @@ -83,6 +83,7 @@ load 393956-1.html load 393956-2.html load 393956-3.html load 393956-4.html +load 394237-1.html load 394820-1.html load 395450-1.xhtml load 397187-1.html From 63ed639cf1f79fd8ec7171931e850d382d556724 Mon Sep 17 00:00:00 2001 From: "jruderman@hmc.edu" Date: Wed, 26 Mar 2008 18:03:02 -0700 Subject: [PATCH 050/129] Adding crashtest --- layout/generic/crashtests/395316-1.html | 13 +++++++++++++ layout/generic/crashtests/crashtests.list | 1 + 2 files changed, 14 insertions(+) create mode 100644 layout/generic/crashtests/395316-1.html diff --git a/layout/generic/crashtests/395316-1.html b/layout/generic/crashtests/395316-1.html new file mode 100644 index 000000000000..60c291075d69 --- /dev/null +++ b/layout/generic/crashtests/395316-1.html @@ -0,0 +1,13 @@ + + + + + +
za za za za za za za za
+ + diff --git a/layout/generic/crashtests/crashtests.list b/layout/generic/crashtests/crashtests.list index d5f8ea2b6336..48ffa195a999 100644 --- a/layout/generic/crashtests/crashtests.list +++ b/layout/generic/crashtests/crashtests.list @@ -85,6 +85,7 @@ load 393956-3.html load 393956-4.html load 394237-1.html load 394820-1.html +load 395316-1.html load 395450-1.xhtml load 397187-1.html load 397852-1.xhtml From 66b9343107f147469367a54740d9c15186452f20 Mon Sep 17 00:00:00 2001 From: "jst@mozilla.org" Date: Wed, 26 Mar 2008 18:04:14 -0700 Subject: [PATCH 051/129] Fixing bug 424449. Clear scope on XOWs when scope is cleared on the object wrapped by the XOW. r+sr=mrbkap@gmail.com --- js/src/xpconnect/src/xpcwrappednativejsops.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/js/src/xpconnect/src/xpcwrappednativejsops.cpp b/js/src/xpconnect/src/xpcwrappednativejsops.cpp index c05d03b03222..3f7870e71a50 100644 --- a/js/src/xpconnect/src/xpcwrappednativejsops.cpp +++ b/js/src/xpconnect/src/xpcwrappednativejsops.cpp @@ -1265,6 +1265,9 @@ XPC_WN_JSOp_Clear(JSContext *cx, JSObject *obj) if(wrapper && wrapper->IsValid()) { XPCNativeWrapper::ClearWrappedNativeScopes(cx, wrapper); + + nsXPConnect* xpc = nsXPConnect::GetXPConnect(); + xpc->UpdateXOWs(cx, wrapper, nsIXPConnect::XPC_XOW_CLEARSCOPE); } js_ObjectOps.clear(cx, obj); From 8047b327bae9b956a12eb982d3575c415d5ad650 Mon Sep 17 00:00:00 2001 From: "jruderman@hmc.edu" Date: Wed, 26 Mar 2008 18:13:31 -0700 Subject: [PATCH 052/129] Add crashtest --- .../html/document/crashtests/395340-1.html | 28 +++++++++++++++++++ .../html/document/crashtests/crashtests.list | 1 + 2 files changed, 29 insertions(+) create mode 100644 content/html/document/crashtests/395340-1.html diff --git a/content/html/document/crashtests/395340-1.html b/content/html/document/crashtests/395340-1.html new file mode 100644 index 000000000000..ddbccfe9689a --- /dev/null +++ b/content/html/document/crashtests/395340-1.html @@ -0,0 +1,28 @@ + + + + + + + + + + diff --git a/content/html/document/crashtests/crashtests.list b/content/html/document/crashtests/crashtests.list index 5a797bd4a65b..5396b01fe22a 100644 --- a/content/html/document/crashtests/crashtests.list +++ b/content/html/document/crashtests/crashtests.list @@ -1,2 +1,3 @@ load 388183-1.html +load 395340-1.html load 407053.html From cd52dacf8056e1127a1a89f012001cc94b2b545f Mon Sep 17 00:00:00 2001 From: "jruderman@hmc.edu" Date: Wed, 26 Mar 2008 18:20:59 -0700 Subject: [PATCH 053/129] Adding a crashtest. --- gfx/thebes/crashtests/395458-1.html | 5 +++++ gfx/thebes/crashtests/crashtests.list | 1 + 2 files changed, 6 insertions(+) create mode 100644 gfx/thebes/crashtests/395458-1.html diff --git a/gfx/thebes/crashtests/395458-1.html b/gfx/thebes/crashtests/395458-1.html new file mode 100644 index 000000000000..80fc55178bf1 --- /dev/null +++ b/gfx/thebes/crashtests/395458-1.html @@ -0,0 +1,5 @@ + + + + + diff --git a/gfx/thebes/crashtests/crashtests.list b/gfx/thebes/crashtests/crashtests.list index 4d487da21afa..9baf786e76d3 100644 --- a/gfx/thebes/crashtests/crashtests.list +++ b/gfx/thebes/crashtests/crashtests.list @@ -19,6 +19,7 @@ load 394384-1.html load 394246-1.html load 394246-2.html load 395335-1.xhtml +load 395458-1.html load 398042-1.xhtml load 398042-2.xhtml load 402307-1.html From 79d1a9ec4b22ab75610ca4c130d3df1126f0cabd Mon Sep 17 00:00:00 2001 From: "vladimir@pobox.com" Date: Wed, 26 Mar 2008 18:21:46 -0700 Subject: [PATCH 054/129] b=409953; deref of null pointer on cancel of print-to-file (ignoring errors during printing is bad, mmmkay?); r=stuart --- gfx/src/thebes/nsThebesDeviceContext.cpp | 43 ++++++++++++++------- gfx/thebes/src/gfxWindowsSurface.cpp | 22 ++++++++--- widget/src/gtk2/nsDeviceContextSpecG.h | 4 +- widget/src/windows/nsDeviceContextSpecWin.h | 8 ++-- 4 files changed, 51 insertions(+), 26 deletions(-) diff --git a/gfx/src/thebes/nsThebesDeviceContext.cpp b/gfx/src/thebes/nsThebesDeviceContext.cpp index aa5a1a76fa3d..752b6a8deea3 100644 --- a/gfx/src/thebes/nsThebesDeviceContext.cpp +++ b/gfx/src/thebes/nsThebesDeviceContext.cpp @@ -536,58 +536,71 @@ nsThebesDeviceContext::BeginDocument(PRUnichar* aTitle, PRInt32 aEndPage) { static const PRUnichar kEmpty[] = { '\0' }; + nsresult rv; - mPrintingSurface->BeginPrinting(nsDependentString(aTitle ? aTitle : kEmpty), - nsDependentString(aPrintToFileName ? aPrintToFileName : kEmpty)); - if (mDeviceContextSpec) - mDeviceContextSpec->BeginDocument(aTitle, aPrintToFileName, aStartPage, aEndPage); - return NS_OK; + rv = mPrintingSurface->BeginPrinting(nsDependentString(aTitle ? aTitle : kEmpty), + nsDependentString(aPrintToFileName ? aPrintToFileName : kEmpty)); + + if (NS_SUCCEEDED(rv) && mDeviceContextSpec) + rv = mDeviceContextSpec->BeginDocument(aTitle, aPrintToFileName, aStartPage, aEndPage); + + return rv; } NS_IMETHODIMP nsThebesDeviceContext::EndDocument(void) { + nsresult rv = NS_OK; + if (mPrintingSurface) { - mPrintingSurface->EndPrinting(); - mPrintingSurface->Finish(); + rv = mPrintingSurface->EndPrinting(); + if (NS_SUCCEEDED(rv)) + mPrintingSurface->Finish(); } + if (mDeviceContextSpec) mDeviceContextSpec->EndDocument(); - return NS_OK; + + return rv; } NS_IMETHODIMP nsThebesDeviceContext::AbortDocument(void) { - mPrintingSurface->AbortPrinting(); + nsresult rv = mPrintingSurface->AbortPrinting(); if (mDeviceContextSpec) mDeviceContextSpec->EndDocument(); - return NS_OK; + + return rv; } NS_IMETHODIMP nsThebesDeviceContext::BeginPage(void) { + nsresult rv = NS_OK; + if (mDeviceContextSpec) - mDeviceContextSpec->BeginPage(); + rv = mDeviceContextSpec->BeginPage(); + + if (NS_FAILED(rv)) return rv; /* We need to get a new surface for each page on the Mac */ #ifdef XP_MACOSX mDeviceContextSpec->GetSurfaceForPrinter(getter_AddRefs(mPrintingSurface)); #endif - mPrintingSurface->BeginPage(); + rv = mPrintingSurface->BeginPage(); - return NS_OK; + return rv; } NS_IMETHODIMP nsThebesDeviceContext::EndPage(void) { - mPrintingSurface->EndPage(); + nsresult rv = mPrintingSurface->EndPage(); /* We need to release the CGContextRef in the surface here, plus it's not something you would want anyway, as these CGContextRefs are only good @@ -599,7 +612,7 @@ nsThebesDeviceContext::EndPage(void) if (mDeviceContextSpec) mDeviceContextSpec->EndPage(); - return NS_OK; + return rv; } /** End printing methods **/ diff --git a/gfx/thebes/src/gfxWindowsSurface.cpp b/gfx/thebes/src/gfxWindowsSurface.cpp index a2a7c8a636ae..a5a523e82079 100644 --- a/gfx/thebes/src/gfxWindowsSurface.cpp +++ b/gfx/thebes/src/gfxWindowsSurface.cpp @@ -209,29 +209,39 @@ nsresult gfxWindowsSurface::BeginPrinting(const nsAString& aTitle, docinfo.lpszDatatype = NULL; docinfo.fwType = 0; - ::StartDoc(mDC, &docinfo); + int result = ::StartDoc(mDC, &docinfo); delete [] title; if (docName != nsnull) nsMemory::Free(docName); + if (result <= 0) + return NS_ERROR_FAILURE; + return NS_OK; } nsresult gfxWindowsSurface::EndPrinting() { - ::EndDoc(mDC); + int result = ::EndDoc(mDC); + if (result <= 0) + return NS_ERROR_FAILURE; + return NS_OK; } nsresult gfxWindowsSurface::AbortPrinting() { - ::AbortDoc(mDC); + int result = ::AbortDoc(mDC); + if (result <= 0) + return NS_ERROR_FAILURE; return NS_OK; } nsresult gfxWindowsSurface::BeginPage() { - ::StartPage(mDC); + int result = ::StartPage(mDC); + if (result <= 0) + return NS_ERROR_FAILURE; return NS_OK; } @@ -239,7 +249,9 @@ nsresult gfxWindowsSurface::EndPage() { if (mForPrinting) cairo_surface_show_page(CairoSurface()); - ::EndPage(mDC); + int result = ::EndPage(mDC); + if (result <= 0) + return NS_ERROR_FAILURE; return NS_OK; } diff --git a/widget/src/gtk2/nsDeviceContextSpecG.h b/widget/src/gtk2/nsDeviceContextSpecG.h index 2105d403c92e..011b6d2114e3 100644 --- a/widget/src/gtk2/nsDeviceContextSpecG.h +++ b/widget/src/gtk2/nsDeviceContextSpecG.h @@ -73,8 +73,8 @@ public: NS_IMETHOD ClosePrintManager(); NS_IMETHOD BeginDocument(PRUnichar * aTitle, PRUnichar * aPrintToFileName, PRInt32 aStartPage, PRInt32 aEndPage); NS_IMETHOD EndDocument(); - NS_IMETHOD BeginPage() { return NS_ERROR_NOT_IMPLEMENTED; } - NS_IMETHOD EndPage() { return NS_ERROR_NOT_IMPLEMENTED; } + NS_IMETHOD BeginPage() { return NS_OK; } + NS_IMETHOD EndPage() { return NS_OK; } NS_IMETHOD GetToPrinter(PRBool &aToPrinter); NS_IMETHOD GetIsPrintPreview(PRBool &aIsPPreview); diff --git a/widget/src/windows/nsDeviceContextSpecWin.h b/widget/src/windows/nsDeviceContextSpecWin.h index 48513cac46e4..8af02cf630cf 100644 --- a/widget/src/windows/nsDeviceContextSpecWin.h +++ b/widget/src/windows/nsDeviceContextSpecWin.h @@ -57,10 +57,10 @@ public: NS_IMETHOD BeginDocument(PRUnichar* aTitle, PRUnichar* aPrintToFileName, PRInt32 aStartPage, - PRInt32 aEndPage) { return NS_ERROR_NOT_IMPLEMENTED; } - NS_IMETHOD EndDocument() { return NS_ERROR_NOT_IMPLEMENTED; } - NS_IMETHOD BeginPage() { return NS_ERROR_NOT_IMPLEMENTED; } - NS_IMETHOD EndPage() { return NS_ERROR_NOT_IMPLEMENTED; } + PRInt32 aEndPage) { return NS_OK; } + NS_IMETHOD EndDocument() { return NS_OK; } + NS_IMETHOD BeginPage() { return NS_OK; } + NS_IMETHOD EndPage() { return NS_OK; } NS_IMETHOD Init(nsIWidget* aWidget, nsIPrintSettings* aPS, PRBool aIsPrintPreview); From 8940e342d7df93887beb616516c81d929f1e467e Mon Sep 17 00:00:00 2001 From: "jruderman@hmc.edu" Date: Wed, 26 Mar 2008 18:25:36 -0700 Subject: [PATCH 055/129] Add crashtest --- content/svg/content/src/crashtests/395616-1.html | 13 +++++++++++++ content/svg/content/src/crashtests/crashtests.list | 1 + 2 files changed, 14 insertions(+) create mode 100644 content/svg/content/src/crashtests/395616-1.html diff --git a/content/svg/content/src/crashtests/395616-1.html b/content/svg/content/src/crashtests/395616-1.html new file mode 100644 index 000000000000..43ca7961b85e --- /dev/null +++ b/content/svg/content/src/crashtests/395616-1.html @@ -0,0 +1,13 @@ + + + + + + + diff --git a/content/svg/content/src/crashtests/crashtests.list b/content/svg/content/src/crashtests/crashtests.list index 16ad97a64edf..59cff7355487 100644 --- a/content/svg/content/src/crashtests/crashtests.list +++ b/content/svg/content/src/crashtests/crashtests.list @@ -17,6 +17,7 @@ load 381777-1.svg load 383685-1.svg load 385096.html load 388712-1.svg +load 395616-1.html load 397017-1.html load 397551-1.svg load 398926-both-different.svg From f54b1bb07ec8053f67c6e1d97ae451b7f80ef530 Mon Sep 17 00:00:00 2001 From: "rhelmer@mozilla.com" Date: Wed, 26 Mar 2008 18:27:26 -0700 Subject: [PATCH 056/129] bump 3.0b5 for rc2 r=rhelmer p=joduinn b=424242 --- tools/release/configs/fx-moz19-bootstrap.cfg | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/release/configs/fx-moz19-bootstrap.cfg b/tools/release/configs/fx-moz19-bootstrap.cfg index 79774ad4ac5b..e8afcb79fb10 100644 --- a/tools/release/configs/fx-moz19-bootstrap.cfg +++ b/tools/release/configs/fx-moz19-bootstrap.cfg @@ -4,10 +4,10 @@ milestone = 1.9b5 productTag = FIREFOX_3_0b5 # Branch name and pull dates to use for base tag branchTag = HEAD -#RelbranchOverride = GECKO190_20080326_RELBRANCH -pullDate = 2008-03-25 22:40 PDT +#RelbranchOverride = GECKO19b5_20080326_RELBRANCH +pullDate = 2008-03-26 17:36 PDT l10n_pullDate = 2008-03-20 04:00 PDT -rc = 1 +rc = 2 # oldVersion and oldRc refer to the previous release oldVersion = 3.0b4 oldRc = 2 From 6760bc80947ef1e744fe62df5422f800cb04c0d3 Mon Sep 17 00:00:00 2001 From: "dietrich@mozilla.com" Date: Wed, 26 Mar 2008 18:58:52 -0700 Subject: [PATCH 057/129] Bug 415389 ? All tags removed when moving a bookmark in the Bookmarks folder structure (cut & paste) (r=mano) --- browser/components/places/content/utils.js | 19 +++++++++++--- toolkit/components/places/src/utils.js | 30 ++++++++++++++++------ 2 files changed, 37 insertions(+), 12 deletions(-) diff --git a/browser/components/places/content/utils.js b/browser/components/places/content/utils.js index 3629e6f90fa5..466cce4f664c 100644 --- a/browser/components/places/content/utils.js +++ b/browser/components/places/content/utils.js @@ -171,8 +171,8 @@ var PlacesUIUtils = { /** * Get a transaction for copying a uri item from one container to another * as a bookmark. - * @param aURI - * The URI of the item being copied + * @param aData + * JSON object of dropped or pasted item properties * @param aContainer * The container being copied into * @param aIndex @@ -187,8 +187,8 @@ var PlacesUIUtils = { /** * Get a transaction for copying a bookmark item from one container to * another. - * @param aID - * The identifier of the bookmark item being copied + * @param aData + * JSON object of dropped or pasted item properties * @param aContainer * The container being copied into * @param aIndex @@ -215,6 +215,17 @@ var PlacesUIUtils = { childTxns.push(this.ptm.editItemDateAdded(null, aData.dateAdded)); if (aData.lastModified) childTxns.push(this.ptm.editItemLastModified(null, aData.lastModified)); + if (aData.tags) { + var tags = aData.tags.split(", "); + // filter out tags already present, so that undo doesn't remove them + // from pre-existing bookmarks + var storedTags = PlacesUtils.tagging.getTagsForURI(itemURL, {}); + tags = tags.filter(function (aTag) { + return (storedTags.indexOf(aTag) == -1); + }, this); + if (tags.length) + childTxns.push(this.ptm.tagURI(itemURL, tags)); + } return this.ptm.createItem(itemURL, aContainer, aIndex, itemTitle, keyword, annos, childTxns); diff --git a/toolkit/components/places/src/utils.js b/toolkit/components/places/src/utils.js index 93a07e665e6a..980fb347dcb8 100644 --- a/toolkit/components/places/src/utils.js +++ b/toolkit/components/places/src/utils.js @@ -426,7 +426,7 @@ var PlacesUtils = { this.value += aStr; } }; - self.serializeNodeAsJSONToOutputStream(aNode, writer); + self.serializeNodeAsJSONToOutputStream(aNode, writer, true); return writer.value; case this.TYPE_X_MOZ_URL: function gatherDataUrl(bNode) { @@ -1148,6 +1148,11 @@ var PlacesUtils = { id = this.bookmarks.insertBookmark(aContainer, this._uri(aData.uri), aIndex, aData.title); if (aData.keyword) this.bookmarks.setKeywordForBookmark(id, aData.keyword); + if (aData.tags) { + var tags = aData.tags.split(", "); + if (tags.length) + this.tagging.tagURI(this._uri(aData.uri), tags); + } break; case this.TYPE_X_MOZ_PLACE_SEPARATOR: id = this.bookmarks.insertSeparator(aContainer, aIndex); @@ -1168,13 +1173,18 @@ var PlacesUtils = { * Serializes the given node (and all it's descendents) as JSON * and writes the serialization to the given output stream. * - * @param aNode - a nsINavHistoryResultNode - * @param aStream - a nsIOutputStream. NOTE: it only uses the write(str, len) - * method of nsIOutputStream. The caller is responsible for - * closing the stream. + * @param aNode + * An nsINavHistoryResultNode + * @param aStream + * An nsIOutputStream. NOTE: it only uses the write(str, len) + * method of nsIOutputStream. The caller is responsible for + * closing the stream. + * @param aIsUICommand + * Boolean - If true, modifies serialization so that each node self-contained. + * For Example, tags are serialized inline with each bookmark. */ serializeNodeAsJSONToOutputStream: - function PU_serializeNodeAsJSONToOutputStream(aNode, aStream) { + function PU_serializeNodeAsJSONToOutputStream(aNode, aStream, aIsUICommand) { var self = this; function addGenericProperties(aPlacesNode, aJSNode) { @@ -1223,6 +1233,10 @@ var PlacesUtils = { if (keyword) aJSNode.keyword = keyword; } + + var tags = aIsUICommand ? aPlacesNode.tags : null; + if (tags) + aJSNode.tags = tags; } function addSeparatorProperties(aPlacesNode, aJSNode) { @@ -1320,7 +1334,7 @@ var PlacesUtils = { }, // XXX testing serializers - toJSONString: function PIO_toJSONString(aObj) { + toJSONString: function PU_toJSONString(aObj) { var JSON = Cc["@mozilla.org/dom/json;1"].createInstance(Ci.nsIJSON); return JSON.encode(aObj); }, @@ -1328,7 +1342,7 @@ var PlacesUtils = { /** * Serializes bookmarks using JSON, and writes to the supplied file. */ - backupBookmarksToFile: function PIO_backupBookmarksToFile(aFile) { + backupBookmarksToFile: function PU_backupBookmarksToFile(aFile) { if (aFile.exists() && !aFile.isWritable()) return; // XXX From 23d3a385d5a754b960ddfe4628b66cd257f8a286 Mon Sep 17 00:00:00 2001 From: "dietrich@mozilla.com" Date: Wed, 26 Mar 2008 19:01:09 -0700 Subject: [PATCH 058/129] Bug 415781 ? Page Bookmarked text on star UI is misleading (r=dietrich, a=schrep) --- browser/base/content/browser-places.js | 9 +++++++-- browser/locales/en-US/chrome/browser/browser.properties | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/browser/base/content/browser-places.js b/browser/base/content/browser-places.js index 56d8d390a786..e00737e10462 100644 --- a/browser/base/content/browser-places.js +++ b/browser/base/content/browser-places.js @@ -167,9 +167,14 @@ var StarUI = { var bundle = this._element("bundle_browser"); - // "Page Bookmarked" title + // Set panel title: + // if we are batching, i.e. the bookmark has been added now, + // then show Page Bookmarked, else if the bookmark did already exist, + // we are about editing it, then use Edit This Bookmark. this._element("editBookmarkPanelTitle").value = - bundle.getString("editBookmarkPanel.pageBookmarkedTitle"); + this._batching ? + bundle.getString("editBookmarkPanel.pageBookmarkedTitle") : + bundle.getString("editBookmarkPanel.editBookmarkTitle"); // No description; show the Done, Cancel; // hide the Edit, Undo buttons diff --git a/browser/locales/en-US/chrome/browser/browser.properties b/browser/locales/en-US/chrome/browser/browser.properties index cbb02994d3a8..325208fd84d7 100644 --- a/browser/locales/en-US/chrome/browser/browser.properties +++ b/browser/locales/en-US/chrome/browser/browser.properties @@ -133,3 +133,4 @@ pausedDownloads=One paused download;#1 paused downloads editBookmarkPanel.pageBookmarkedTitle=Page Bookmarked editBookmarkPanel.pageBookmarkedDescription=%S will always remember this page for you. editBookmarkPanel.bookmarkedRemovedTitle=Bookmark Removed +editBookmarkPanel.editBookmarkTitle=Edit This Bookmark From 19a7e717acce9dae269f42540f3c47c1d8550234 Mon Sep 17 00:00:00 2001 From: "jruderman@hmc.edu" Date: Wed, 26 Mar 2008 19:40:46 -0700 Subject: [PATCH 059/129] Add a crashtest --- gfx/thebes/crashtests/396321-1.svg | 5 +++++ gfx/thebes/crashtests/crashtests.list | 1 + 2 files changed, 6 insertions(+) create mode 100644 gfx/thebes/crashtests/396321-1.svg diff --git a/gfx/thebes/crashtests/396321-1.svg b/gfx/thebes/crashtests/396321-1.svg new file mode 100644 index 000000000000..60329213460d --- /dev/null +++ b/gfx/thebes/crashtests/396321-1.svg @@ -0,0 +1,5 @@ + + +‫x + + diff --git a/gfx/thebes/crashtests/crashtests.list b/gfx/thebes/crashtests/crashtests.list index 9baf786e76d3..45b47c40c3cb 100644 --- a/gfx/thebes/crashtests/crashtests.list +++ b/gfx/thebes/crashtests/crashtests.list @@ -20,6 +20,7 @@ load 394246-1.html load 394246-2.html load 395335-1.xhtml load 395458-1.html +load 396321-1.svg load 398042-1.xhtml load 398042-2.xhtml load 402307-1.html From a89249c5aea6fa824822042257dadf83da9b0ae7 Mon Sep 17 00:00:00 2001 From: "jruderman@hmc.edu" Date: Wed, 26 Mar 2008 19:57:55 -0700 Subject: [PATCH 060/129] Adding a crashtest. --- layout/generic/crashtests/397007-1.html | 37 +++++++++++++++++++++++ layout/generic/crashtests/crashtests.list | 1 + 2 files changed, 38 insertions(+) create mode 100644 layout/generic/crashtests/397007-1.html diff --git a/layout/generic/crashtests/397007-1.html b/layout/generic/crashtests/397007-1.html new file mode 100644 index 000000000000..628733ba6763 --- /dev/null +++ b/layout/generic/crashtests/397007-1.html @@ -0,0 +1,37 @@ + + + + + + + + + +
+ X +
y
+ ­
+
+ + + diff --git a/layout/generic/crashtests/crashtests.list b/layout/generic/crashtests/crashtests.list index 48ffa195a999..3ec1d467f8d6 100644 --- a/layout/generic/crashtests/crashtests.list +++ b/layout/generic/crashtests/crashtests.list @@ -87,6 +87,7 @@ load 394237-1.html load 394820-1.html load 395316-1.html load 395450-1.xhtml +load 397007-1.html load 397187-1.html load 397852-1.xhtml load 398181-1.html From fcbc480e2ef7e2732a1cc3dae72c3bda319866d5 Mon Sep 17 00:00:00 2001 From: "jruderman@hmc.edu" Date: Wed, 26 Mar 2008 20:09:39 -0700 Subject: [PATCH 061/129] Add crashtest --- content/svg/content/src/crashtests/397704-1.svg | 1 + content/svg/content/src/crashtests/crashtests.list | 1 + 2 files changed, 2 insertions(+) create mode 100644 content/svg/content/src/crashtests/397704-1.svg diff --git a/content/svg/content/src/crashtests/397704-1.svg b/content/svg/content/src/crashtests/397704-1.svg new file mode 100644 index 000000000000..75f44fd12170 --- /dev/null +++ b/content/svg/content/src/crashtests/397704-1.svg @@ -0,0 +1 @@ + diff --git a/content/svg/content/src/crashtests/crashtests.list b/content/svg/content/src/crashtests/crashtests.list index 59cff7355487..399cd14ec14b 100644 --- a/content/svg/content/src/crashtests/crashtests.list +++ b/content/svg/content/src/crashtests/crashtests.list @@ -20,6 +20,7 @@ load 388712-1.svg load 395616-1.html load 397017-1.html load 397551-1.svg +load 397704-1.svg load 398926-both-different.svg load 398926-both-same.svg load 398926-fill.svg From e97fa90e5da5283a66c7bbac6684233a5976caa6 Mon Sep 17 00:00:00 2001 From: "jruderman@hmc.edu" Date: Wed, 26 Mar 2008 20:23:23 -0700 Subject: [PATCH 062/129] Add crashtests --- layout/generic/crashtests/397844-1.xhtml | 55 +++++++++++++++++++++++ layout/generic/crashtests/397844-2.xhtml | 55 +++++++++++++++++++++++ layout/generic/crashtests/crashtests.list | 2 + 3 files changed, 112 insertions(+) create mode 100644 layout/generic/crashtests/397844-1.xhtml create mode 100644 layout/generic/crashtests/397844-2.xhtml diff --git a/layout/generic/crashtests/397844-1.xhtml b/layout/generic/crashtests/397844-1.xhtml new file mode 100644 index 000000000000..3ad9b8464b10 --- /dev/null +++ b/layout/generic/crashtests/397844-1.xhtml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + +
abcdghi jklmnop 2 qrs tuvwxy
+ + + diff --git a/layout/generic/crashtests/397844-2.xhtml b/layout/generic/crashtests/397844-2.xhtml new file mode 100644 index 000000000000..d97600812c23 --- /dev/null +++ b/layout/generic/crashtests/397844-2.xhtml @@ -0,0 +1,55 @@ + + + + + + + + + + + + +
abcdghi jk 2
+ + + diff --git a/layout/generic/crashtests/crashtests.list b/layout/generic/crashtests/crashtests.list index 3ec1d467f8d6..b0ad218d8e55 100644 --- a/layout/generic/crashtests/crashtests.list +++ b/layout/generic/crashtests/crashtests.list @@ -89,6 +89,8 @@ load 395316-1.html load 395450-1.xhtml load 397007-1.html load 397187-1.html +load 397844-1.xhtml +load 397844-2.xhtml load 397852-1.xhtml load 398181-1.html load 398181-2.html From 703efcd013e0d308821197d74a2ffd2bb81b73d3 Mon Sep 17 00:00:00 2001 From: "jruderman@hmc.edu" Date: Wed, 26 Mar 2008 20:25:24 -0700 Subject: [PATCH 063/129] Add reftest --- layout/reftests/bugs/397844-1-ref.xhtml | 13 +++++++++++++ layout/reftests/bugs/397844-1.xhtml | 13 +++++++++++++ layout/reftests/bugs/reftest.list | 1 + 3 files changed, 27 insertions(+) create mode 100644 layout/reftests/bugs/397844-1-ref.xhtml create mode 100644 layout/reftests/bugs/397844-1.xhtml diff --git a/layout/reftests/bugs/397844-1-ref.xhtml b/layout/reftests/bugs/397844-1-ref.xhtml new file mode 100644 index 000000000000..4be48a4b8c8e --- /dev/null +++ b/layout/reftests/bugs/397844-1-ref.xhtml @@ -0,0 +1,13 @@ + + + + + + + +
abc
+ + + diff --git a/layout/reftests/bugs/397844-1.xhtml b/layout/reftests/bugs/397844-1.xhtml new file mode 100644 index 000000000000..2f50f1c7d916 --- /dev/null +++ b/layout/reftests/bugs/397844-1.xhtml @@ -0,0 +1,13 @@ + + + + + + + +
abc
+ + + diff --git a/layout/reftests/bugs/reftest.list b/layout/reftests/bugs/reftest.list index 2716d7cab001..e37abfe85412 100644 --- a/layout/reftests/bugs/reftest.list +++ b/layout/reftests/bugs/reftest.list @@ -619,6 +619,7 @@ skip-if(MOZ_WIDGET_TOOLKIT!="windows") == 391045.html 391045-ref.html # windows- == 395331-1.xml 395331-1-ref.xml == 396286-1.html about:blank # crash test == 397428-1.html 397428-1-ref.html +== 397844-1.xhtml 397844-1-ref.xhtml == 398101-1.html 398101-1-ref.html == 398289-1.html 398289-1-ref.html == 398144-1.html 398144-1-ref.html From 492d3c524e54f364a84229da767402eb5ae384a4 Mon Sep 17 00:00:00 2001 From: "jruderman@hmc.edu" Date: Wed, 26 Mar 2008 20:33:09 -0700 Subject: [PATCH 064/129] Add crashtest --- layout/generic/crashtests/399407-1.xhtml | 25 +++++++++++++++++++++++ layout/generic/crashtests/crashtests.list | 1 + 2 files changed, 26 insertions(+) create mode 100644 layout/generic/crashtests/399407-1.xhtml diff --git a/layout/generic/crashtests/399407-1.xhtml b/layout/generic/crashtests/399407-1.xhtml new file mode 100644 index 000000000000..37e334f4ef92 --- /dev/null +++ b/layout/generic/crashtests/399407-1.xhtml @@ -0,0 +1,25 @@ + + + + + +
+
+
+
+
+
+ + + diff --git a/layout/generic/crashtests/crashtests.list b/layout/generic/crashtests/crashtests.list index b0ad218d8e55..7566c72b63e9 100644 --- a/layout/generic/crashtests/crashtests.list +++ b/layout/generic/crashtests/crashtests.list @@ -94,6 +94,7 @@ load 397844-2.xhtml load 397852-1.xhtml load 398181-1.html load 398181-2.html +load 399407-1.xhtml load 400232-1.html load 403576-1.html load 404140-1.html From 188423e517b2d76351f3b1517e07b26b6935daa0 Mon Sep 17 00:00:00 2001 From: "dietrich@mozilla.com" Date: Wed, 26 Mar 2008 20:34:07 -0700 Subject: [PATCH 065/129] Bug 423159 ? WARNING: Unsafe use of LIKE detected! (for mak77@supereva.it, r=dietrich) --- toolkit/components/places/src/nsNavHistory.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/toolkit/components/places/src/nsNavHistory.cpp b/toolkit/components/places/src/nsNavHistory.cpp index 4e97696261a1..eed33ee78e3f 100644 --- a/toolkit/components/places/src/nsNavHistory.cpp +++ b/toolkit/components/places/src/nsNavHistory.cpp @@ -4390,10 +4390,19 @@ nsNavHistory::OnIdle() nsCOMPtr detectBogusIndex; rv = mDBConn->CreateStatement(NS_LITERAL_CSTRING( "SELECT name FROM sqlite_master WHERE type = 'index' AND " - "name = 'moz_places_visitcount' AND sql LIKE '%rev_host%'"), + "name = 'moz_places_visitcount' AND sql LIKE ?1 ESCAPE '/'"), getter_AddRefs(detectBogusIndex)); NS_ENSURE_SUCCESS(rv, rv); + nsAutoString escapedString; + rv = detectBogusIndex->EscapeStringForLIKE(NS_LITERAL_STRING("rev_host"), + '/', escapedString); + NS_ENSURE_SUCCESS(rv, rv); + rv = detectBogusIndex->BindStringParameter(0, NS_LITERAL_STRING("%") + + escapedString + + NS_LITERAL_STRING("%")); + NS_ENSURE_SUCCESS(rv, rv); + PRBool hasResult; rv = detectBogusIndex->ExecuteStep(&hasResult); NS_ENSURE_SUCCESS(rv, rv); From fed9d375dbd45e2639e9cc1cd8e03dd673777899 Mon Sep 17 00:00:00 2001 From: "joshmoz@gmail.com" Date: Wed, 26 Mar 2008 20:42:57 -0700 Subject: [PATCH 066/129] make keyboard shortcuts work in the native filepicker on Mac OS X. b=372571 r=smichaud sr=vlad --- widget/src/cocoa/nsAppShell.mm | 11 +--- widget/src/cocoa/nsCocoaUtils.h | 22 ++++++- widget/src/cocoa/nsCocoaUtils.mm | 95 ++++++++++++++++++++++++++++++- widget/src/cocoa/nsCocoaWindow.h | 11 +--- widget/src/cocoa/nsCocoaWindow.mm | 59 +++++-------------- widget/src/cocoa/nsFilePicker.mm | 12 +++- widget/src/cocoa/nsMenuBarX.h | 2 + widget/src/cocoa/nsMenuBarX.mm | 72 +++++++++++++++++++++++ 8 files changed, 216 insertions(+), 68 deletions(-) diff --git a/widget/src/cocoa/nsAppShell.mm b/widget/src/cocoa/nsAppShell.mm index 0d420336677c..04fd87c1e0b6 100644 --- a/widget/src/cocoa/nsAppShell.mm +++ b/widget/src/cocoa/nsAppShell.mm @@ -55,6 +55,7 @@ #include "nsIInterfaceRequestor.h" #include "nsIWebBrowserChrome.h" #include "nsObjCExceptions.h" +#include "nsCocoaUtils.h" // defined in nsChildView.mm extern nsIRollupListener * gRollupListener; @@ -63,14 +64,6 @@ extern nsIWidget * gRollupWidget; // defined in nsCocoaWindow.mm extern PRInt32 gXULModalLevel; -@interface NSApplication (Undocumented) - -// Present in all versions of OS X from (at least) 10.2.8 through 10.5. -- (BOOL)_isRunningModal; -- (BOOL)_isRunningAppModal; - -@end - // AppShellDelegate // // Cocoa bridge class. An object of this class is registered to receive @@ -695,8 +688,10 @@ nsAppShell::AfterProcessNextEvent(nsIThreadInternal *aThread, NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT; } + // AppShellDelegate implementation + @implementation AppShellDelegate // initWithAppShell: // diff --git a/widget/src/cocoa/nsCocoaUtils.h b/widget/src/cocoa/nsCocoaUtils.h index 77fdbad52655..e661f574ec15 100644 --- a/widget/src/cocoa/nsCocoaUtils.h +++ b/widget/src/cocoa/nsCocoaUtils.h @@ -44,6 +44,21 @@ #import #include "nsRect.h" +#include "nsIWidget.h" + +@interface NSApplication (Undocumented) + +// Present in all versions of OS X from (at least) 10.2.8 through 10.5. +- (BOOL)_isRunningModal; +- (BOOL)_isRunningAppModal; + +// It's sometimes necessary to explicitly remove a window from the "window +// cache" in order to deactivate it. The "window cache" is an undocumented +// subsystem, all of whose methods are included in the NSWindowCache category +// of the NSApplication class (in header files generated using class-dump). +- (void)_removeWindowFromCache:(NSWindow *)aWindow; + +@end class nsCocoaUtils { @@ -81,7 +96,12 @@ class nsCocoaUtils static NSPoint EventLocationForWindow(NSEvent* anEvent, NSWindow* aWindow); // Finds the foremost window that is under the mouse for the current application. - static NSWindow* FindWindowUnderPoint(NSPoint aPoint); + static NSWindow* FindWindowUnderPoint(NSPoint aPoint); + + static nsIWidget* GetHiddenWindowWidget(); + + static void PrepareForNativeAppModalDialog(); + static void CleanUpAfterNativeAppModalDialog(); }; #endif // nsCocoaUtils_h_ diff --git a/widget/src/cocoa/nsCocoaUtils.mm b/widget/src/cocoa/nsCocoaUtils.mm index 7c70bcba5148..efea6039d977 100644 --- a/widget/src/cocoa/nsCocoaUtils.mm +++ b/widget/src/cocoa/nsCocoaUtils.mm @@ -40,7 +40,14 @@ #include "nsCocoaUtils.h" #include "nsObjCExceptions.h" - +#include "nsMenuBarX.h" +#include "nsCocoaWindow.h" +#include "nsCOMPtr.h" +#include "nsIInterfaceRequestorUtils.h" +#include "nsIAppShellService.h" +#include "nsIXULWindow.h" +#include "nsIBaseWindow.h" +#include "nsIServiceManager.h" float nsCocoaUtils::MenuBarScreenHeight() { @@ -144,3 +151,89 @@ NSWindow* nsCocoaUtils::FindWindowUnderPoint(NSPoint aPoint) NS_OBJC_END_TRY_ABORT_BLOCK_NIL; } + + +#define NS_APPSHELLSERVICE_CONTRACTID "@mozilla.org/appshell/appShellService;1" +nsIWidget* nsCocoaUtils::GetHiddenWindowWidget() +{ + nsCOMPtr appShell(do_GetService(NS_APPSHELLSERVICE_CONTRACTID)); + if (!appShell) { + NS_WARNING("Couldn't get AppShellService in order to get hidden window ref"); + return nsnull; + } + + nsCOMPtr hiddenWindow; + appShell->GetHiddenWindow(getter_AddRefs(hiddenWindow)); + if (!hiddenWindow) { + // Don't warn, this happens during shutdown, bug 358607. + return nsnull; + } + + nsCOMPtr baseHiddenWindow; + baseHiddenWindow = do_GetInterface(hiddenWindow); + if (!baseHiddenWindow) { + NS_WARNING("Couldn't get nsIBaseWindow from hidden window (nsIXULWindow)"); + return nsnull; + } + + nsCOMPtr hiddenWindowWidget; + if (NS_FAILED(baseHiddenWindow->GetMainWidget(getter_AddRefs(hiddenWindowWidget)))) { + NS_WARNING("Couldn't get nsIWidget from hidden window (nsIBaseWindow)"); + return nsnull; + } + + return hiddenWindowWidget; +} + + +void nsCocoaUtils::PrepareForNativeAppModalDialog() +{ + NS_OBJC_BEGIN_TRY_ABORT_BLOCK; + + // First put up the hidden window menu bar so that app menu event handling is correct. + // Not a big deal if we don't do this, the chances of the spawning window having lost + // its menu bar is small. + nsIMenuBar* hiddenWindowMenuBar = MenuHelpersX::GetHiddenWindowMenuBar(); + if (hiddenWindowMenuBar) + hiddenWindowMenuBar->Paint(); + + NSMenu* mainMenu = [NSApp mainMenu]; + NS_ASSERTION([mainMenu numberOfItems] > 0, "Main menu does not have any items, something is terribly wrong!"); + + // Create new menu bar for use with modal dialog + NSMenu* newMenuBar = [[NSMenu alloc] initWithTitle:@""]; + + // Swap in our app menu. Note that the event target is whatever window is up when + // the app modal dialog goes up. + NSMenuItem* firstMenuItem = [[mainMenu itemAtIndex:0] retain]; + [mainMenu removeItemAtIndex:0]; + [newMenuBar insertItem:firstMenuItem atIndex:0]; + [firstMenuItem release]; + + // Add standard edit menu + [newMenuBar addItem:MenuHelpersX::GetStandardEditMenuItem()]; + + // Show the new menu bar + [NSApp setMainMenu:newMenuBar]; + [newMenuBar release]; + + NS_OBJC_END_TRY_ABORT_BLOCK; +} + + +void nsCocoaUtils::CleanUpAfterNativeAppModalDialog() +{ + NS_OBJC_BEGIN_TRY_ABORT_BLOCK; + + NSWindow* mainWindow = [NSApp mainWindow]; + if (!mainWindow) { + nsIMenuBar* hiddenWindowMenuBar = MenuHelpersX::GetHiddenWindowMenuBar(); + if (hiddenWindowMenuBar) + hiddenWindowMenuBar->Paint(); + } + else { + [WindowDelegate paintMenubarForWindow:mainWindow]; + } + + NS_OBJC_END_TRY_ABORT_BLOCK; +} diff --git a/widget/src/cocoa/nsCocoaWindow.h b/widget/src/cocoa/nsCocoaWindow.h index 05e02f8eff7b..873253029925 100644 --- a/widget/src/cocoa/nsCocoaWindow.h +++ b/widget/src/cocoa/nsCocoaWindow.h @@ -56,16 +56,6 @@ typedef struct _nsCocoaWindowList { nsCocoaWindow *window; // Weak } nsCocoaWindowList; -@interface NSApplication (Undocumented) - -// It's sometimes necessary to explicitly remove a window from the "window -// cache" in order to deactivate it. The "window cache" is an undocumented -// subsystem, all of whose methods are included in the NSWindowCache category -// of the NSApplication class (in header files generated using class-dump). -- (void)_removeWindowFromCache:(NSWindow *)aWindow; - -@end - @interface NSWindow (Undocumented) @@ -112,6 +102,7 @@ typedef struct _nsCocoaWindowList { { nsCocoaWindow* mGeckoWindow; // [WEAK] (we are owned by the window) } ++ (void)paintMenubarForWindow:(NSWindow*)aWindow; - (id)initWithGeckoWindow:(nsCocoaWindow*)geckoWind; - (void)windowDidResize:(NSNotification*)aNotification; - (void)sendFocusEvent:(PRUint32)eventType; diff --git a/widget/src/cocoa/nsCocoaWindow.mm b/widget/src/cocoa/nsCocoaWindow.mm index e8bb95f2c342..1187a9ad1d5e 100644 --- a/widget/src/cocoa/nsCocoaWindow.mm +++ b/widget/src/cocoa/nsCocoaWindow.mm @@ -62,6 +62,7 @@ #include "nsIDOMWindow.h" #include "nsPIDOMWindow.h" #include "nsIDOMElement.h" +#include "nsMenuBarX.h" PRInt32 gXULModalLevel = 0; // In principle there should be only one app-modal window at any given time. @@ -149,48 +150,6 @@ nsCocoaWindow::~nsCocoaWindow() } -static nsIWidget* GetHiddenWindowWidget() -{ - nsCOMPtr appShell(do_GetService(NS_APPSHELLSERVICE_CONTRACTID)); - if (!appShell) { - NS_WARNING("Couldn't get AppShellService in order to get hidden window ref"); - return nsnull; - } - - nsCOMPtr hiddenWindow; - appShell->GetHiddenWindow(getter_AddRefs(hiddenWindow)); - if (!hiddenWindow) { - // Don't warn, this happens during shutdown, bug 358607. - return nsnull; - } - - nsCOMPtr baseHiddenWindow; - baseHiddenWindow = do_GetInterface(hiddenWindow); - if (!baseHiddenWindow) { - NS_WARNING("Couldn't get nsIBaseWindow from hidden window (nsIXULWindow)"); - return nsnull; - } - - nsCOMPtr hiddenWindowWidget; - if (NS_FAILED(baseHiddenWindow->GetMainWidget(getter_AddRefs(hiddenWindowWidget)))) { - NS_WARNING("Couldn't get nsIWidget from hidden window (nsIBaseWindow)"); - return nsnull; - } - - return hiddenWindowWidget; -} - - -static nsIMenuBar* GetHiddenWindowMenuBar() -{ - nsIWidget* hiddenWindowWidgetNoCOMPtr = GetHiddenWindowWidget(); - if (hiddenWindowWidgetNoCOMPtr) - return static_cast(hiddenWindowWidgetNoCOMPtr)->GetMenuBar(); - else - return nsnull; -} - - // Very large windows work in Cocoa, but can take a long time to // process (multiple minutes), during which time the system is // unresponsive and seems hung. Although it's likely that windows @@ -1221,7 +1180,7 @@ NS_IMETHODIMP nsCocoaWindow::SetMenuBar(nsIMenuBar *aMenuBar) // We paint the hidden window menu bar if no other menu bar has been painted // yet so that some reasonable menu bar is displayed when the app starts up. - if (!gSomeMenuBarPainted && mMenuBar && (GetHiddenWindowMenuBar() == mMenuBar)) + if (!gSomeMenuBarPainted && mMenuBar && (MenuHelpersX::GetHiddenWindowMenuBar() == mMenuBar)) mMenuBar->Paint(); return NS_OK; @@ -1341,7 +1300,7 @@ NS_IMETHODIMP nsCocoaWindow::SetWindowTitlebarColor(nscolor aColor) // If our cocoa window isn't a ToolbarWindow, something is wrong. if (![mWindow isKindOfClass:[ToolbarWindow class]]) { // Don't output a warning for the hidden window. - NS_WARN_IF_FALSE(SameCOMIdentity(GetHiddenWindowWidget(), (nsIWidget*)this), + NS_WARN_IF_FALSE(SameCOMIdentity(nsCocoaUtils::GetHiddenWindowWidget(), (nsIWidget*)this), "Calling SetWindowTitlebarColor on window that isn't of the ToolbarWindow class."); return NS_ERROR_FAILURE; } @@ -1480,6 +1439,10 @@ NS_IMETHODIMP nsCocoaWindow::EndSecureKeyboardInput() RollUpPopups(); + // [NSApp _isRunningAppModal] will return true if we're running an OS dialog + // app modally. If one of those is up then we want it to retain its menu bar. + if ([NSApp _isRunningAppModal]) + return; NSWindow* window = [aNotification object]; if (window) [WindowDelegate paintMenubarForWindow:window]; @@ -1491,8 +1454,12 @@ NS_IMETHODIMP nsCocoaWindow::EndSecureKeyboardInput() - (void)windowDidResignMain:(NSNotification *)aNotification { RollUpPopups(); - - nsCOMPtr hiddenWindowMenuBar = GetHiddenWindowMenuBar(); + + // [NSApp _isRunningAppModal] will return true if we're running an OS dialog + // app modally. If one of those is up then we want it to retain its menu bar. + if ([NSApp _isRunningAppModal]) + return; + nsCOMPtr hiddenWindowMenuBar = MenuHelpersX::GetHiddenWindowMenuBar(); if (hiddenWindowMenuBar) { // printf("painting hidden window menu bar due to window losing main status\n"); hiddenWindowMenuBar->Paint(); diff --git a/widget/src/cocoa/nsFilePicker.mm b/widget/src/cocoa/nsFilePicker.mm index 95f7f8b398c0..49494d2b9cea 100644 --- a/widget/src/cocoa/nsFilePicker.mm +++ b/widget/src/cocoa/nsFilePicker.mm @@ -55,6 +55,7 @@ #include "nsIStringBundle.h" #include "nsIPrefService.h" #include "nsIPrefBranch.h" +#include "nsCocoaUtils.h" const float kAccessoryViewPadding = 5; const int kSaveTypeControlTag = 1; @@ -259,8 +260,10 @@ nsFilePicker::GetLocalFiles(const nsString& inTitle, PRBool inAllowMultiple, nsC [(NSString *)[filters objectAtIndex:0] isEqualToString:@"app"]) { theDir = @"/Applications/"; } - + + nsCocoaUtils::PrepareForNativeAppModalDialog(); int result = [thePanel runModalForDirectory:theDir file:nil types:filters]; + nsCocoaUtils::CleanUpAfterNativeAppModalDialog(); if (result == NSFileHandlingPanelCancelButton) return retVal; @@ -312,7 +315,9 @@ nsFilePicker::GetLocalFolder(const nsString& inTitle, nsILocalFile** outFile) // set up default directory NSString *theDir = PanelDefaultDirectory(); + nsCocoaUtils::PrepareForNativeAppModalDialog(); int result = [thePanel runModalForDirectory:theDir file:nil types:nil]; + nsCocoaUtils::CleanUpAfterNativeAppModalDialog(); if (result == NSFileHandlingPanelCancelButton) return retVal; @@ -361,7 +366,10 @@ nsFilePicker::PutLocalFile(const nsString& inTitle, const nsString& inDefaultNam NSString *theDir = PanelDefaultDirectory(); // load the panel - if ([thePanel runModalForDirectory:theDir file:defaultFilename] == NSFileHandlingPanelCancelButton) + nsCocoaUtils::PrepareForNativeAppModalDialog(); + int result = [thePanel runModalForDirectory:theDir file:defaultFilename]; + nsCocoaUtils::CleanUpAfterNativeAppModalDialog(); + if (result == NSFileHandlingPanelCancelButton) return retVal; // get the save type diff --git a/widget/src/cocoa/nsMenuBarX.h b/widget/src/cocoa/nsMenuBarX.h index 2db3ff74a044..a75771aff060 100644 --- a/widget/src/cocoa/nsMenuBarX.h +++ b/widget/src/cocoa/nsMenuBarX.h @@ -66,6 +66,8 @@ namespace MenuHelpersX NSString* CreateTruncatedCocoaLabel(const nsString& itemLabel); PRUint8 GeckoModifiersForNodeAttribute(const nsString& modifiersAttribute); unsigned int MacModifiersForGeckoModifiers(PRUint8 geckoModifiers); + nsIMenuBar* GetHiddenWindowMenuBar(); + NSMenuItem* GetStandardEditMenuItem(); } diff --git a/widget/src/cocoa/nsMenuBarX.mm b/widget/src/cocoa/nsMenuBarX.mm index dd8c21ac3217..c13763dcd1b2 100644 --- a/widget/src/cocoa/nsMenuBarX.mm +++ b/widget/src/cocoa/nsMenuBarX.mm @@ -47,6 +47,8 @@ #include "nsMenuBarX.h" #include "nsMenuX.h" #include "nsChildView.h" +#include "nsCocoaUtils.h" +#include "nsCocoaWindow.h" #include "nsISupports.h" #include "nsIWidget.h" @@ -1005,6 +1007,76 @@ unsigned int MenuHelpersX::MacModifiersForGeckoModifiers(PRUint8 geckoModifiers) } +nsIMenuBar* MenuHelpersX::GetHiddenWindowMenuBar() +{ + nsIWidget* hiddenWindowWidgetNoCOMPtr = nsCocoaUtils::GetHiddenWindowWidget(); + if (hiddenWindowWidgetNoCOMPtr) + return static_cast(hiddenWindowWidgetNoCOMPtr)->GetMenuBar(); + else + return nsnull; +} + + +// It would be nice if we could localize these edit menu names. +static NSMenuItem* standardEditMenuItem = nil; +NSMenuItem* MenuHelpersX::GetStandardEditMenuItem() +{ + NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL; + + if (standardEditMenuItem) + return standardEditMenuItem; + + NSMenuItem* standardEditMenuItem = [[NSMenuItem alloc] initWithTitle:@"Edit" action:nil keyEquivalent:@""]; + NSMenu* standardEditMenu = [[NSMenu alloc] initWithTitle:@"Edit"]; + [standardEditMenuItem setSubmenu:standardEditMenu]; + [standardEditMenu release]; + + // Add Undo + NSMenuItem* undoItem = [[NSMenuItem alloc] initWithTitle:@"Undo" action:@selector(undo:) keyEquivalent:@"z"]; + [standardEditMenu addItem:undoItem]; + [undoItem release]; + + // Add Redo + NSMenuItem* redoItem = [[NSMenuItem alloc] initWithTitle:@"Redo" action:@selector(redo:) keyEquivalent:@"Z"]; + [standardEditMenu addItem:redoItem]; + [redoItem release]; + + // Add separator + [standardEditMenu addItem:[NSMenuItem separatorItem]]; + + // Add Cut + NSMenuItem* cutItem = [[NSMenuItem alloc] initWithTitle:@"Cut" action:@selector(cut:) keyEquivalent:@"x"]; + [standardEditMenu addItem:cutItem]; + [cutItem release]; + + // Add Copy + NSMenuItem* copyItem = [[NSMenuItem alloc] initWithTitle:@"Copy" action:@selector(copy:) keyEquivalent:@"c"]; + [standardEditMenu addItem:copyItem]; + [copyItem release]; + + // Add Paste + NSMenuItem* pasteItem = [[NSMenuItem alloc] initWithTitle:@"Paste" action:@selector(paste:) keyEquivalent:@"v"]; + [standardEditMenu addItem:pasteItem]; + [pasteItem release]; + + // Add Delete + NSMenuItem* deleteItem = [[NSMenuItem alloc] initWithTitle:@"Delete" action:@selector(delete:) keyEquivalent:@""]; + [standardEditMenu addItem:deleteItem]; + [deleteItem release]; + + // Add Select All + NSMenuItem* selectAllItem = [[NSMenuItem alloc] initWithTitle:@"Select All" action:@selector(selectAll:) keyEquivalent:@"a"]; + [standardEditMenu addItem:selectAllItem]; + [selectAllItem release]; + + standardEditMenuItem = standardEditMenuItem; + + return standardEditMenuItem; + + NS_OBJC_END_TRY_ABORT_BLOCK_NIL; +} + + // // Objective-C class used as action target for menu items // From 0049ca83883c118e3d8bafb6d6ebef709f0736c6 Mon Sep 17 00:00:00 2001 From: "joshmoz@gmail.com" Date: Wed, 26 Mar 2008 20:47:04 -0700 Subject: [PATCH 067/129] When a user holds ctrl and left clicks, Cocoa calls menuForEvent: and then mouseDown:, which causes us to send a context menu event and then a mouse click event into gecko. Fix the ordering so we send the mouse click event and then the context menu event. This is the widget part of the fix for bug 416390. b=416390 r=smichaud sr=vlad --- widget/src/cocoa/nsChildView.mm | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/widget/src/cocoa/nsChildView.mm b/widget/src/cocoa/nsChildView.mm index 64a1e0d95b9f..717963f17070 100644 --- a/widget/src/cocoa/nsChildView.mm +++ b/widget/src/cocoa/nsChildView.mm @@ -2849,6 +2849,12 @@ NSEvent* gLastDragEvent = nil; mGeckoChild->DispatchMouseEvent(geckoEvent); + // If the last call to menuForEvent: had the same event, we need to call it + // again. menuForEvent: didn't send a context menu event because we need to + // send the mouse down event first. + if (mLastMenuForEventEvent == theEvent) + [self menuForEvent:theEvent]; + // XXX maybe call markedTextSelectionChanged:client: here? NS_OBJC_END_TRY_ABORT_BLOCK; @@ -3361,8 +3367,17 @@ static nsEventStatus SendGeckoMouseEnterOrExitEvent(PRBool isTrusted, if (!mGeckoChild) return nil; + // If this is the second time menuForEvent: has been called with the same + // mouse down event then we should let it through. We don't process the first + // call for any particular left mouse down event because Cocoa calls + // menuForEvent: *before* mouseDown: and we need to send mouse down events + // before context menu events. Cocoa correctly calls menuForEvent: after calls + // to rightMouseDown:. + BOOL letThrough = (theEvent == mLastMenuForEventEvent); [mLastMenuForEventEvent release]; mLastMenuForEventEvent = [theEvent retain]; + if (!letThrough && [theEvent type] == NSLeftMouseDown) + return nil; nsMouseEvent geckoEvent(PR_TRUE, NS_CONTEXTMENU, nsnull, nsMouseEvent::eReal); [self convertCocoaMouseEvent:theEvent toGeckoEvent:&geckoEvent]; From 4e5d38b3e6506407c6c44d4dc7a6f493010954d9 Mon Sep 17 00:00:00 2001 From: "jruderman@hmc.edu" Date: Wed, 26 Mar 2008 20:52:06 -0700 Subject: [PATCH 068/129] Add crashtest --- layout/generic/crashtests/399843-1.html | 64 +++++++++++++++++++++++ layout/generic/crashtests/crashtests.list | 1 + 2 files changed, 65 insertions(+) create mode 100644 layout/generic/crashtests/399843-1.html diff --git a/layout/generic/crashtests/399843-1.html b/layout/generic/crashtests/399843-1.html new file mode 100644 index 000000000000..01bdffd71d29 --- /dev/null +++ b/layout/generic/crashtests/399843-1.html @@ -0,0 +1,64 @@ + + + + + + + + + +
+
+
+
+
+
+
+
+
+ + + diff --git a/layout/generic/crashtests/crashtests.list b/layout/generic/crashtests/crashtests.list index 7566c72b63e9..f5ad5872c556 100644 --- a/layout/generic/crashtests/crashtests.list +++ b/layout/generic/crashtests/crashtests.list @@ -95,6 +95,7 @@ load 397852-1.xhtml load 398181-1.html load 398181-2.html load 399407-1.xhtml +load 399843-1.html load 400232-1.html load 403576-1.html load 404140-1.html From 290ef05236237182356729fd115953e0412b2edb Mon Sep 17 00:00:00 2001 From: "jruderman@hmc.edu" Date: Wed, 26 Mar 2008 20:55:48 -0700 Subject: [PATCH 069/129] Add crashtest. --- layout/base/crashtests/399951-1.html | 14 ++++++++++++++ layout/base/crashtests/crashtests.list | 1 + 2 files changed, 15 insertions(+) create mode 100644 layout/base/crashtests/399951-1.html diff --git a/layout/base/crashtests/399951-1.html b/layout/base/crashtests/399951-1.html new file mode 100644 index 000000000000..733774d1cd50 --- /dev/null +++ b/layout/base/crashtests/399951-1.html @@ -0,0 +1,14 @@ + + + + + + +
+.i + h + f +
+ + + diff --git a/layout/base/crashtests/crashtests.list b/layout/base/crashtests/crashtests.list index 8cbf230c58b2..8d0ef275f688 100644 --- a/layout/base/crashtests/crashtests.list +++ b/layout/base/crashtests/crashtests.list @@ -82,6 +82,7 @@ load 399676-1.xhtml load 399687-1.html load 399940-1.xhtml load 399946-1.xhtml +load 399951-1.html load 400185-1.xul load 400445-1.xhtml load 400904-1.xhtml From db6b028d1f623e7f1c092eb22455823edac2d6d2 Mon Sep 17 00:00:00 2001 From: "jruderman@hmc.edu" Date: Wed, 26 Mar 2008 20:59:36 -0700 Subject: [PATCH 070/129] Add a crashtest. --- layout/generic/crashtests/400223-1.html | 24 +++++++++++++++++++++++ layout/generic/crashtests/crashtests.list | 1 + 2 files changed, 25 insertions(+) create mode 100644 layout/generic/crashtests/400223-1.html diff --git a/layout/generic/crashtests/400223-1.html b/layout/generic/crashtests/400223-1.html new file mode 100644 index 000000000000..eb8bf2140fe5 --- /dev/null +++ b/layout/generic/crashtests/400223-1.html @@ -0,0 +1,24 @@ + + + + + + +
+ + + diff --git a/layout/generic/crashtests/crashtests.list b/layout/generic/crashtests/crashtests.list index f5ad5872c556..21c90dc37b6d 100644 --- a/layout/generic/crashtests/crashtests.list +++ b/layout/generic/crashtests/crashtests.list @@ -96,6 +96,7 @@ load 398181-1.html load 398181-2.html load 399407-1.xhtml load 399843-1.html +load 400223-1.html load 400232-1.html load 403576-1.html load 404140-1.html From 3d9f313dbf863f625370c8e22fdd389480dac995 Mon Sep 17 00:00:00 2001 From: "dietrich@mozilla.com" Date: Wed, 26 Mar 2008 21:05:25 -0700 Subject: [PATCH 071/129] Bug 416313 ? Define the identity of the visit_count column (for mak77@supereva.it, r=edilee,dietrich) --- .../components/places/src/nsNavHistory.cpp | 301 +++++++++++------- toolkit/components/places/src/nsNavHistory.h | 8 +- .../places/src/nsNavHistoryAutoComplete.cpp | 4 +- .../places/src/nsNavHistoryExpire.cpp | 69 ++-- .../places/tests/unit/test_000_frecency.js | 5 +- 5 files changed, 234 insertions(+), 153 deletions(-) diff --git a/toolkit/components/places/src/nsNavHistory.cpp b/toolkit/components/places/src/nsNavHistory.cpp index eed33ee78e3f..511dc076626e 100644 --- a/toolkit/components/places/src/nsNavHistory.cpp +++ b/toolkit/components/places/src/nsNavHistory.cpp @@ -147,7 +147,7 @@ #define PREF_BROWSER_IMPORT_DEFAULTS "browser.places.importDefaults" #define PREF_BROWSER_CREATEDSMARTBOOKMARKS "browser.places.createdSmartBookmarks" #define PREF_BROWSER_LEFTPANEFOLDERID "browser.places.leftPaneFolderId" - + // Default (integer) value of PREF_DB_CACHE_PERCENTAGE from 0-100 // This is 6% of machine memory, giving 15MB for a user with 256MB of memory. // The most that will be used is the size of the DB file. Normal history sizes @@ -843,17 +843,93 @@ nsNavHistory::InitDB(PRInt16 *aMadeChanges) rv = transaction.Commit(); NS_ENSURE_SUCCESS(rv, rv); + rv = CreateTriggers(); + NS_ENSURE_SUCCESS(rv, rv); + // --- PUT SCHEMA-MODIFYING THINGS (like create table) ABOVE THIS LINE --- // DO NOT PUT ANY SCHEMA-MODIFYING THINGS HERE rv = InitFunctions(); + NS_ENSURE_SUCCESS(rv, rv); rv = InitStatements(); NS_ENSURE_SUCCESS(rv, rv); return NS_OK; } +// nsNavHistory::CreateTriggers +// +// This creates our triggers +// When creating a trigger we must ensure that related records are correct +// and be sure that there are no other queries that could change the +// triggered values, especially for counting triggers. +// +// NOTE: never create loops between triggers! + +nsresult +nsNavHistory::CreateTriggers() +{ + // we are creating 2 triggers on moz_historyvisits to maintain + // moz_places.visit_count in sync with moz_historyvisits, for this + // to work we must ensure that all visit_count values are correct + // See bug 416313 for details + nsCOMPtr detectVisitCountTrigger; + nsresult rv = mDBConn->CreateStatement(NS_LITERAL_CSTRING( + "SELECT name FROM sqlite_master WHERE type = 'trigger' AND " + "name = 'moz_historyvisits_afterinsert_v1_trigger'"), + getter_AddRefs(detectVisitCountTrigger)); + NS_ENSURE_SUCCESS(rv, rv); + + PRBool hasTrigger; + rv = detectVisitCountTrigger->ExecuteStep(&hasTrigger); + NS_ENSURE_SUCCESS(rv, rv); + rv = detectVisitCountTrigger->Reset(); + NS_ENSURE_SUCCESS(rv, rv); + + if (!hasTrigger) { + mozStorageTransaction createTriggersTransaction(mDBConn, PR_FALSE); + + // do a one-time reset of all the visit_count values + rv = mDBConn->ExecuteSimpleSQL(NS_LITERAL_CSTRING( + "UPDATE moz_places SET visit_count = " + "(SELECT count(*) FROM moz_historyvisits " + "WHERE place_id = moz_places.id AND visit_type NOT IN (0,4,7))")); + NS_ENSURE_SUCCESS(rv, rv); + + // moz_historyvisits_afterinsert_v1_trigger + // increment visit_count by 1 for each inserted visit + // excluding invalid, embed, download visits + rv = mDBConn->ExecuteSimpleSQL(NS_LITERAL_CSTRING( + "CREATE TRIGGER IF NOT EXISTS moz_historyvisits_afterinsert_v1_trigger " + "AFTER INSERT ON moz_historyvisits FOR EACH ROW " + "WHEN NEW.visit_type NOT IN (0,4,7) " + "BEGIN " + "UPDATE moz_places SET visit_count = visit_count + 1 " + "WHERE moz_places.id = NEW.place_id; " + "END")); + NS_ENSURE_SUCCESS(rv, rv); + + // moz_historyvisits_afterdelete_v1_trigger + // decrement visit_count by 1 for each deleted visit + // ensure that we can't become negative + rv = mDBConn->ExecuteSimpleSQL(NS_LITERAL_CSTRING( + "CREATE TRIGGER IF NOT EXISTS moz_historyvisits_afterdelete_v1_trigger " + "AFTER DELETE ON moz_historyvisits FOR EACH ROW " + "WHEN OLD.visit_type NOT IN (0,4,7) " + "BEGIN " + "UPDATE moz_places SET visit_count = visit_count - 1 " + "WHERE moz_places.id = OLD.place_id AND visit_count > 0; " + "END")); + NS_ENSURE_SUCCESS(rv, rv); + + rv = createTriggersTransaction.Commit(); + } + + NS_ENSURE_SUCCESS(rv, rv); + return NS_OK; +} + nsresult nsNavHistory::InitializeIdleTimer() { @@ -959,7 +1035,7 @@ nsNavHistory::InitStatements() rv = mDBConn->CreateStatement(NS_LITERAL_CSTRING( "SELECT h.id, h.url, h.title, h.rev_host, h.visit_count " "FROM moz_places h WHERE h.id = ?1"), - getter_AddRefs(mDBGetIdPageInfo)); + getter_AddRefs(mDBGetIdPageInfo)); NS_ENSURE_SUCCESS(rv, rv); // mDBRecentVisitOfURL @@ -989,9 +1065,11 @@ nsNavHistory::InitStatements() NS_ENSURE_SUCCESS(rv, rv); // mDBUpdatePageVisitStats (see InternalAdd) + // we don't need to update visit_count since it's maintained + // in sync by triggers, and we must NEVER touch it rv = mDBConn->CreateStatement(NS_LITERAL_CSTRING( "UPDATE moz_places " - "SET visit_count = ?2, hidden = ?3, typed = ?4 " + "SET hidden = ?2, typed = ?3 " "WHERE id = ?1"), getter_AddRefs(mDBUpdatePageVisitStats)); NS_ENSURE_SUCCESS(rv, rv); @@ -999,8 +1077,8 @@ nsNavHistory::InitStatements() // mDBAddNewPage (see InternalAddNewPage) rv = mDBConn->CreateStatement(NS_LITERAL_CSTRING( "INSERT OR REPLACE INTO moz_places " - "(url, title, rev_host, hidden, typed, visit_count, frecency) " - "VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7)"), + "(url, title, rev_host, hidden, typed, frecency) " + "VALUES (?1, ?2, ?3, ?4, ?5, ?6)"), getter_AddRefs(mDBAddNewPage)); NS_ENSURE_SUCCESS(rv, rv); @@ -1072,7 +1150,7 @@ nsNavHistory::InitStatements() NS_ENSURE_SUCCESS(rv, rv); // mDBVisitsForFrecency - // NOTE: we are not limiting to visits with "visit_type NOT IN (0,4)" + // NOTE: we are not limiting to visits with "visit_type NOT IN (0,4,7)" // because if we do that, mDBVisitsForFrecency would return no visits // for places with only embed (or undefined) visits. That would // cause use to estimate a frecency based on what information we do have, @@ -1092,7 +1170,7 @@ nsNavHistory::InitStatements() getter_AddRefs(mDBVisitsForFrecency)); NS_ENSURE_SUCCESS(rv, rv); - // find places with invalid frecencies (frecency = -1) + // find places with invalid frecencies (frecency < 0) // invalid frecencies can happen in these scenarios: // 1) we've done "clear private data" // 2) we've expired or deleted visits @@ -1110,16 +1188,17 @@ nsNavHistory::InitStatements() // We get two sets of places that are 1) most visited and 2) random so that // we don't get stuck recalculating frecencies that end up being -1 every // time + // Notice that frecency is invalidated as frecency = -visit_count rv = mDBConn->CreateStatement(NS_LITERAL_CSTRING( - "SELECT id, visit_count, hidden, typed, frecency, url " - "FROM (" - "SELECT * FROM (" - "SELECT * FROM moz_places WHERE frecency = -1 " - "ORDER BY visit_count DESC LIMIT ROUND(?1 / 2)) " - "UNION " - "SELECT * FROM (" - "SELECT * FROM moz_places WHERE frecency = -1 " - "ORDER BY RANDOM() LIMIT ROUND(?1 / 2)))"), + "SELECT * FROM " + "(SELECT id, visit_count, hidden, typed, frecency, url " + "FROM moz_places WHERE frecency < 0 " + "ORDER BY frecency ASC LIMIT ROUND(?1 / 2)) " + "UNION " + "SELECT * FROM " + "(SELECT id, visit_count, hidden, typed, frecency, url " + "FROM moz_places WHERE frecency < 0 " + "ORDER BY RANDOM() LIMIT ROUND(?1 / 2))"), getter_AddRefs(mDBInvalidFrecencies)); NS_ENSURE_SUCCESS(rv, rv); @@ -1155,16 +1234,7 @@ nsNavHistory::InitStatements() rv = mDBConn->CreateStatement( NS_LITERAL_CSTRING("SELECT COUNT(*) FROM moz_historyvisits " "WHERE place_id = ?1"), - getter_AddRefs(mDBVisitCountForFrecency)); - NS_ENSURE_SUCCESS(rv, rv); - - // this query is used to calculate the visit_count column - // which we use in the UI. to the end user, we should not count - // embedded (or undefined) visits. - rv = mDBConn->CreateStatement( - NS_LITERAL_CSTRING("SELECT COUNT(*) FROM moz_historyvisits " - "WHERE visit_type NOT IN(0,4) AND place_id = ?1"), - getter_AddRefs(mDBTrueVisitCount)); + getter_AddRefs(mDBFullVisitCount)); NS_ENSURE_SUCCESS(rv, rv); return NS_OK; @@ -1587,8 +1657,10 @@ nsNavHistory::GetUrlIdFor(nsIURI* aURI, PRInt64* aEntryID, // If non-null, the new page ID will be placed into aPageID. nsresult -nsNavHistory::InternalAddNewPage(nsIURI* aURI, const nsAString& aTitle, - PRBool aHidden, PRBool aTyped, +nsNavHistory::InternalAddNewPage(nsIURI* aURI, + const nsAString& aTitle, + PRBool aHidden, + PRBool aTyped, PRInt32 aVisitCount, PRBool aCalculateFrecency, PRInt64* aPageID) @@ -1629,10 +1701,6 @@ nsNavHistory::InternalAddNewPage(nsIURI* aURI, const nsAString& aTitle, rv = mDBAddNewPage->BindInt32Parameter(4, aTyped); NS_ENSURE_SUCCESS(rv, rv); - // visit count - rv = mDBAddNewPage->BindInt32Parameter(5, aVisitCount); - NS_ENSURE_SUCCESS(rv, rv); - nsCAutoString url; rv = aURI->GetSpec(url); NS_ENSURE_SUCCESS(rv, rv); @@ -1641,12 +1709,11 @@ nsNavHistory::InternalAddNewPage(nsIURI* aURI, const nsAString& aTitle, PRInt32 frecency = -1; if (aCalculateFrecency) { rv = CalculateFrecency(-1 /* no page id, since this page doesn't exist */, - aTyped, aVisitCount, url, - &frecency); + aTyped, aVisitCount, url, &frecency); NS_ENSURE_SUCCESS(rv, rv); } - rv = mDBAddNewPage->BindInt32Parameter(6, frecency); + rv = mDBAddNewPage->BindInt32Parameter(5, frecency); NS_ENSURE_SUCCESS(rv, rv); rv = mDBAddNewPage->Execute(); @@ -1679,7 +1746,6 @@ nsNavHistory::InternalAddVisit(PRInt64 aPageID, PRInt64 aReferringVisit, NS_ENSURE_SUCCESS(rv, rv); rv = mDBInsertVisit->BindInt64Parameter(2, aTime); NS_ENSURE_SUCCESS(rv, rv); - rv = mDBInsertVisit->BindInt32Parameter(3, aTransitionType); NS_ENSURE_SUCCESS(rv, rv); rv = mDBInsertVisit->BindInt64Parameter(4, aSessionID); @@ -2213,23 +2279,23 @@ nsNavHistory::GetHasHistoryEntries(PRBool* aHasEntries) nsresult nsNavHistory::FixInvalidFrecenciesForExcludedPlaces() { - // for every moz_place that has an invalid frecency (-1) and - // begins with "place:" or is an unvisited child of a livemark feed, + // for every moz_place that has an invalid frecency (< 0) and + // is an unvisited child of a livemark feed, or begins with "place:", // set frecency to 0 so that it is excluded from url bar autocomplete. nsCOMPtr dbUpdateStatement; - nsresult rv = mDBConn->CreateStatement( - NS_LITERAL_CSTRING("UPDATE moz_places SET frecency = 0 WHERE id IN (" - "SELECT h.id FROM moz_places h JOIN moz_bookmarks b ON h.id = b.fk " - "WHERE frecency = -1 " - // place is not a livemark feed item - "AND (b.parent IN (" - "SELECT annos.item_id FROM moz_anno_attributes attrs " - "JOIN moz_items_annos annos ON attrs.id = annos.anno_attribute_id " - "WHERE attrs.name = ?1) " - // place has no visits (that are not invalid or embedded) - "AND (SELECT visit_date FROM moz_historyvisits " - "WHERE place_id = h.id AND visit_type NOT IN (0,4) LIMIT 1) is null) " - "OR SUBSTR(h.url,0,6) = 'place:')"), + nsresult rv = mDBConn->CreateStatement(NS_LITERAL_CSTRING( + "UPDATE moz_places " + "SET frecency = 0 WHERE id IN (" + "SELECT h.id FROM moz_places h " + "LEFT OUTER JOIN moz_bookmarks b ON h.id = b.fk " + "WHERE frecency < 0 AND " + // place is an unvisited child of a livemark feed + "(b.parent IN (" + "SELECT annos.item_id FROM moz_anno_attributes attrs " + "JOIN moz_items_annos annos ON attrs.id = annos.anno_attribute_id " + "WHERE attrs.name = ?1) " + "AND visit_count = 0) " + "OR SUBSTR(h.url,0,6) = 'place:')"), getter_AddRefs(dbUpdateStatement)); NS_ENSURE_SUCCESS(rv, rv); @@ -2243,22 +2309,19 @@ nsNavHistory::FixInvalidFrecenciesForExcludedPlaces() } nsresult -nsNavHistory::CalculateVisitCount(PRInt64 aPlaceId, PRBool aForFrecency, PRInt32 *aVisitCount) +nsNavHistory::CalculateFullVisitCount(PRInt64 aPlaceId, PRInt32 *aVisitCount) { - nsCOMPtr dbSelectStatement = - aForFrecency ? mDBVisitCountForFrecency : mDBTrueVisitCount; - - mozStorageStatementScoper scope(dbSelectStatement); + mozStorageStatementScoper scope(mDBFullVisitCount); - nsresult rv = dbSelectStatement->BindInt64Parameter(0, aPlaceId); + nsresult rv = mDBFullVisitCount->BindInt64Parameter(0, aPlaceId); NS_ENSURE_SUCCESS(rv, rv); PRBool hasVisits = PR_TRUE; - rv = dbSelectStatement->ExecuteStep(&hasVisits); + rv = mDBFullVisitCount->ExecuteStep(&hasVisits); NS_ENSURE_SUCCESS(rv, rv); if (hasVisits) { - rv = dbSelectStatement->GetInt32(0, aVisitCount); + rv = mDBFullVisitCount->GetInt32(0, aVisitCount); NS_ENSURE_SUCCESS(rv, rv); } else @@ -2422,20 +2485,15 @@ nsNavHistory::AddVisit(nsIURI* aURI, PRTime aTime, nsIURI* aReferringURI, // the history UI (sidebar, history menu, url bar autocomplete, etc) hidden = oldHiddenState; if (hidden && (!aIsRedirect || aTransitionType == TRANSITION_TYPED) && - aTransitionType != TRANSITION_EMBED) + aTransitionType != TRANSITION_EMBED && + aTransitionType != TRANSITION_DOWNLOAD) hidden = PR_FALSE; // unhide typed = oldTypedState || (aTransitionType == TRANSITION_TYPED); - PRInt32 trueVisitCount = 0; - - // we can't trust the visit_count in the moz_places, because... - rv = CalculateVisitCount(pageID, PR_FALSE /* not for frecency */, - &trueVisitCount); - - // some items may have a true visit count of 0 which will not count for link + // some items may have a visit count of 0 which will not count for link // visiting, so be sure to note this transition - if (trueVisitCount == 0) + if (oldVisitCount == 0) newItem = PR_TRUE; // update with new stats @@ -2443,16 +2501,9 @@ nsNavHistory::AddVisit(nsIURI* aURI, PRTime aTime, nsIURI* aReferringURI, rv = mDBUpdatePageVisitStats->BindInt64Parameter(0, pageID); NS_ENSURE_SUCCESS(rv, rv); - // only increment the visit_count if the transition was not EMBED - // XXX what about TRANSITION_DOWNLOAD? (bug 412217) - if (aTransitionType != TRANSITION_EMBED) - trueVisitCount++; - - rv = mDBUpdatePageVisitStats->BindInt32Parameter(1, trueVisitCount); + rv = mDBUpdatePageVisitStats->BindInt32Parameter(1, hidden); NS_ENSURE_SUCCESS(rv, rv); - rv = mDBUpdatePageVisitStats->BindInt32Parameter(2, hidden); - NS_ENSURE_SUCCESS(rv, rv); - rv = mDBUpdatePageVisitStats->BindInt32Parameter(3, typed); + rv = mDBUpdatePageVisitStats->BindInt32Parameter(2, typed); NS_ENSURE_SUCCESS(rv, rv); rv = mDBUpdatePageVisitStats->Execute(); @@ -2504,7 +2555,8 @@ nsNavHistory::AddVisit(nsIURI* aURI, PRTime aTime, nsIURI* aReferringURI, // GetQueryResults to maintain consistency. // FIXME bug 325241: make a way to observe hidden URLs PRUint32 added = 0; - if (! hidden && aTransitionType != TRANSITION_EMBED) { + if (!hidden && aTransitionType != TRANSITION_EMBED && + aTransitionType != TRANSITION_DOWNLOAD) { ENUMERATE_WEAKARRAY(mObservers, nsINavHistoryObserver, OnVisit(aURI, *aVisitID, aTime, aSessionID, referringVisitID, aTransitionType, &added)); @@ -3276,11 +3328,11 @@ nsNavHistory::ConstructQueryString( SQL_STR_FRAGMENT_MAX_VISIT_DATE( "h.id" ) ", f.url, null, null " "FROM moz_places h " - "LEFT OUTER JOIN moz_favicons f ON h.favicon_id = f.id WHERE " - "h.id IN (SELECT p.id FROM moz_places p WHERE p.hidden <> 1 " - " AND EXISTS (SELECT id FROM moz_historyvisits WHERE " - " place_id = p.id AND visit_type NOT IN(0,4) LIMIT 1) " - " ORDER BY p.visit_count DESC LIMIT "); + "LEFT OUTER JOIN moz_favicons f ON h.favicon_id = f.id " + "WHERE h.id IN (" + "SELECT p.id FROM moz_places p " + "WHERE p.hidden <> 1 AND visit_count > 0 " + "ORDER BY p.visit_count DESC LIMIT "); queryString.AppendInt(aOptions->MaxResults()); queryString += NS_LITERAL_CSTRING(") ORDER BY h.visit_count DESC"); return NS_OK; @@ -3564,8 +3616,25 @@ nsNavHistory::RemovePagesInternal(const nsCString& aPlaceIdsQueryString) mozStorageTransaction transaction(mDBConn, PR_FALSE); - // delete all visits + // if a moz_place is annotated or was a bookmark, + // we won't delete it, but we will delete the moz_visits + // so we need to reset the frecency. Note, we set frecency to + // -visit_count, as we use that value in our "on idle" query + // to figure out which places to recalculate frecency first. + // Pay attention to not set frecency = 0 if visit_count = 0 nsresult rv = mDBConn->ExecuteSimpleSQL(NS_LITERAL_CSTRING( + "UPDATE moz_places " + "SET frecency = -MAX(visit_count, 1) " + "WHERE id IN(") + + aPlaceIdsQueryString + + NS_LITERAL_CSTRING(") AND (" + "EXISTS (SELECT b.id FROM moz_bookmarks b WHERE b.fk = moz_places.id) " + "OR EXISTS " + "(SELECT a.id FROM moz_annos a WHERE a.place_id = moz_places.id))")); + NS_ENSURE_SUCCESS(rv, rv); + + // delete all visits + rv = mDBConn->ExecuteSimpleSQL(NS_LITERAL_CSTRING( "DELETE FROM moz_historyvisits WHERE place_id IN (") + aPlaceIdsQueryString + NS_LITERAL_CSTRING(")")); @@ -3588,17 +3657,6 @@ nsNavHistory::RemovePagesInternal(const nsCString& aPlaceIdsQueryString) "NOT EXISTS (SELECT a.id FROM moz_annos a WHERE a.place_id = h.id))")); NS_ENSURE_SUCCESS(rv, rv); - // if a moz_place was annotated or was a bookmark, - // we didn't delete it, but we did delete the moz_visits - // so we need to reset the frecency. Note, we don't - // reset the visit_count, as we use that in our "on idle" - // query to figure out which places to recalculate frecency first. - rv = mDBConn->ExecuteSimpleSQL(NS_LITERAL_CSTRING( - "UPDATE moz_places SET frecency = -1 WHERE id IN(") + - aPlaceIdsQueryString + - NS_LITERAL_CSTRING(")")); - NS_ENSURE_SUCCESS(rv, rv); - // placeId could have a livemark item, so setting the frecency to -1 // would cause it to show up in the url bar autocomplete // call FixInvalidFrecenciesForExcludedPlaces() to handle that scenario @@ -5675,7 +5733,8 @@ nsNavHistory::SetPageTitleInternal(nsIURI* aURI, const nsAString& aTitle) nsresult nsNavHistory::AddPageWithVisit(nsIURI *aURI, const nsString &aTitle, - PRBool aHidden, PRBool aTyped, + PRBool aHidden, + PRBool aTyped, PRInt32 aVisitCount, PRInt32 aLastVisitTransition, PRTime aLastVisitDate) @@ -6046,11 +6105,10 @@ nsNavHistory::UpdateFrecency(PRInt64 aPlaceId, PRBool aIsBookmarked) PRInt32 visitCountForFrecency = 0; - // because visit_count excludes visit with visit_type NOT IN(0,4) + // because visit_count excludes visit with visit_type NOT IN(0,4,7) // we can't use it for calculating frecency, so we must // calculate it. - rv = CalculateVisitCount(aPlaceId, PR_TRUE /* for frecency */, - &visitCountForFrecency); + rv = CalculateFullVisitCount(aPlaceId, &visitCountForFrecency); NS_ENSURE_SUCCESS(rv, rv); PRInt32 newFrecency = 0; @@ -6064,8 +6122,8 @@ nsNavHistory::UpdateFrecency(PRInt64 aPlaceId, PRBool aIsBookmarked) // On refresh, when we remove and then add the livemark items, // the frecency (for a given moz_places) will not have changed // (if we've never visited that place). - // Additionally, don't bother overwriting a valid frecency with -1 - if (newFrecency == oldFrecency || oldFrecency && newFrecency == -1) + // Additionally, don't bother overwriting a valid frecency with an invalid one + if (newFrecency == oldFrecency || oldFrecency && newFrecency < 0) return NS_OK; mozStorageStatementScoper updateScoper(mDBUpdateFrecencyAndHidden); @@ -6090,7 +6148,11 @@ nsNavHistory::UpdateFrecency(PRInt64 aPlaceId, PRBool aIsBookmarked) } nsresult -nsNavHistory::CalculateFrecencyInternal(PRInt64 aPlaceId, PRInt32 aTyped, PRInt32 aVisitCount, PRBool aIsBookmarked, PRInt32 *aFrecency) +nsNavHistory::CalculateFrecencyInternal(PRInt64 aPlaceId, + PRInt32 aTyped, + PRInt32 aVisitCount, + PRBool aIsBookmarked, + PRInt32 *aFrecency) { PRTime normalizedNow = NormalizeTimeRelativeToday(GetNow()); @@ -6169,15 +6231,21 @@ nsNavHistory::CalculateFrecencyInternal(PRInt64 aPlaceId, PRInt32 aTyped, PRInt3 // fix for bug #412219 if (!pointsForSampledVisits) { // For URIs with zero points in the sampled recent visits - // but "browsing" type visits outside the sampling range, - // set frecency to -1, so that they're still shown in autocomplete. - PRInt32 trueVisitCount = 0; - rv = CalculateVisitCount(aPlaceId, PR_FALSE /* not for frecency */, - &trueVisitCount); - if (NS_SUCCEEDED(rv) && trueVisitCount) - *aFrecency = -1; - else - *aFrecency = 0; + // but "browsing" type visits outside the sampling range, set + // frecency to -visit_count, so they're still shown in autocomplete. + PRInt32 visitCount = 0; + mozStorageStatementScoper scoper(mDBGetIdPageInfo); + rv = mDBGetIdPageInfo->BindInt64Parameter(0, aPlaceId); + NS_ENSURE_SUCCESS(rv, rv); + + PRBool hasVisits = PR_TRUE; + if (NS_SUCCEEDED(mDBGetIdPageInfo->ExecuteStep(&hasVisits)) && hasVisits) { + rv = mDBGetIdPageInfo->GetInt32(nsNavHistory::kGetInfoIndex_VisitCount, + &visitCount); + NS_ENSURE_SUCCESS(rv, rv); + } + // If we don't have visits set to 0 + *aFrecency = -visitCount; } else { // Estimate frecency using the last few visits. @@ -6231,7 +6299,11 @@ nsNavHistory::CalculateFrecencyInternal(PRInt64 aPlaceId, PRInt32 aTyped, PRInt3 } nsresult -nsNavHistory::CalculateFrecency(PRInt64 aPlaceId, PRInt32 aTyped, PRInt32 aVisitCount, nsCAutoString &aURL, PRInt32 *aFrecency) +nsNavHistory::CalculateFrecency(PRInt64 aPlaceId, + PRInt32 aTyped, + PRInt32 aVisitCount, + nsCAutoString &aURL, + PRInt32 *aFrecency) { *aFrecency = 0; @@ -6316,10 +6388,9 @@ nsNavHistory::RecalculateFrecenciesInternal(mozIStorageStatement *aStatement, PR PRInt32 newFrecency = 0; PRInt32 visitCountForFrecency = 0; - // because visit_count excludes visit with visit_type NOT IN(0,4) + // because visit_count excludes visit with visit_type NOT IN(0,4,7) // we can't use it for calculating frecency so we must calculate it. - rv = CalculateVisitCount(placeId, PR_TRUE /* for frecency */, - &visitCountForFrecency); + rv = CalculateFullVisitCount(placeId, &visitCountForFrecency); NS_ENSURE_SUCCESS(rv, rv); rv = CalculateFrecency(placeId, typed, visitCountForFrecency, diff --git a/toolkit/components/places/src/nsNavHistory.h b/toolkit/components/places/src/nsNavHistory.h index c28187b147c2..6f5419b36e31 100644 --- a/toolkit/components/places/src/nsNavHistory.h +++ b/toolkit/components/places/src/nsNavHistory.h @@ -102,7 +102,7 @@ // see Bug #392399 for more details #define SQL_STR_FRAGMENT_MAX_VISIT_DATE( place_relation ) \ "(SELECT visit_date FROM moz_historyvisits WHERE place_id = " place_relation \ - " AND visit_type NOT IN (0,4) ORDER BY visit_date DESC LIMIT 1)" + " AND visit_type NOT IN (0,4,7) ORDER BY visit_date DESC LIMIT 1)" struct AutoCompleteIntermediateResult; class AutoCompleteResultComparator; @@ -202,7 +202,7 @@ public: nsresult GetUrlIdFor(nsIURI* aURI, PRInt64* aEntryID, PRBool aAutoCreate); - nsresult CalculateVisitCount(PRInt64 aPlaceId, PRBool aForFrecency, PRInt32 *aVisitCount); + nsresult CalculateFullVisitCount(PRInt64 aPlaceId, PRInt32 *aVisitCount); nsresult UpdateFrecency(PRInt64 aPageID, PRBool isBookmark); @@ -429,8 +429,7 @@ protected: nsCOMPtr mDBUpdateFrecencyAndHidden; nsCOMPtr mDBGetPlaceVisitStats; nsCOMPtr mDBGetBookmarkParentsForPlace; - nsCOMPtr mDBVisitCountForFrecency; - nsCOMPtr mDBTrueVisitCount; + nsCOMPtr mDBFullVisitCount; /** * Initializes the database file. If the database does not exist, was @@ -461,6 +460,7 @@ protected: nsresult InitDB(PRInt16 *aMadeChanges); nsresult InitFunctions(); nsresult InitStatements(); + nsresult CreateTriggers(); nsresult ForceMigrateBookmarksDB(mozIStorageConnection *aDBConn); nsresult MigrateV3Up(mozIStorageConnection *aDBConn); nsresult MigrateV6Up(mozIStorageConnection *aDBConn); diff --git a/toolkit/components/places/src/nsNavHistoryAutoComplete.cpp b/toolkit/components/places/src/nsNavHistoryAutoComplete.cpp index 3998b4e09d14..a7ac96d4b78f 100644 --- a/toolkit/components/places/src/nsNavHistoryAutoComplete.cpp +++ b/toolkit/components/places/src/nsNavHistoryAutoComplete.cpp @@ -55,7 +55,7 @@ * have that, as should unvisited children of livemark feeds (that aren't * bookmarked elsewhere). * - * But places with frecency (-1) are included, as that means that these items + * But places with frecency < 0 are included, as that means that these items * have not had their frecency calculated yet (will happen on idle). */ @@ -256,7 +256,7 @@ nsNavHistory::CreateAutoCompleteQueries() // NOTE: // after migration or clear all private data, we might end up with - // a lot of places with frecency = -1 (until idle) + // a lot of places with frecency < 0 (until idle) // // XXX bug 412736 // in the case of a frecency tie, break it with h.typed and h.visit_count diff --git a/toolkit/components/places/src/nsNavHistoryExpire.cpp b/toolkit/components/places/src/nsNavHistoryExpire.cpp index fce2db6ff890..401633c58d89 100644 --- a/toolkit/components/places/src/nsNavHistoryExpire.cpp +++ b/toolkit/components/places/src/nsNavHistoryExpire.cpp @@ -245,8 +245,24 @@ nsNavHistoryExpire::ClearHistory() mozIStorageConnection* connection = mHistory->GetStorageConnection(); NS_ENSURE_TRUE(connection, NS_ERROR_OUT_OF_MEMORY); - // expire visits, then let the paranoid functions do the cleanup for us + // reset frecency for all items that will _not_ be deleted + // Note, we set frecency to -visit_count since we use that value in our + // idle query to figure out which places to recalcuate frecency first. + // We must do this before deleting visits nsresult rv = connection->ExecuteSimpleSQL(NS_LITERAL_CSTRING( + "UPDATE moz_places SET frecency = -MAX(visit_count, 1) " + "WHERE id IN(" + "SELECT h.id FROM moz_places h WHERE " + "EXISTS (SELECT id FROM moz_bookmarks WHERE fk = h.id) " + "OR EXISTS " + "(SELECT id FROM moz_annos WHERE place_id = h.id AND expiration = ") + + nsPrintfCString("%d", nsIAnnotationService::EXPIRE_NEVER) + + NS_LITERAL_CSTRING(")")); + if (NS_FAILED(rv)) + NS_WARNING("failed to recent frecency"); + + // expire visits, then let the paranoid functions do the cleanup for us + rv = connection->ExecuteSimpleSQL(NS_LITERAL_CSTRING( "DELETE FROM moz_historyvisits")); NS_ENSURE_SUCCESS(rv, rv); @@ -266,14 +282,6 @@ nsNavHistoryExpire::ClearHistory() if (NS_FAILED(rv)) NS_WARNING("ExpireInputHistoryParanoid failed."); - // for all remaining places, reset the frecency - // Note, we don't reset the visit_count, as we use that in our "on idle" - // query to figure out which places to recalcuate frecency first. - rv = connection->ExecuteSimpleSQL(NS_LITERAL_CSTRING( - "UPDATE moz_places SET frecency = -1")); - if (NS_FAILED(rv)) - NS_WARNING("failed to recent frecency"); - // some of the remaining places could be place: urls or // unvisited livemark items, so setting the frecency to -1 // will cause them to show up in the url bar autocomplete @@ -535,8 +543,7 @@ nsNavHistoryExpire::EraseVisits(mozIStorageConnection* aConnection, const nsTArray& aRecords) { // build a comma separated string of visit ids to delete - // also build a comma separated string of place ids to reset frecency and - // visit_count. + // also build a comma separated string of place ids to reset frecency nsCString deletedVisitIds; nsCString placeIds; nsTArray deletedPlaceIdsArray, deletedVisitIdsArray; @@ -559,32 +566,32 @@ nsNavHistoryExpire::EraseVisits(mozIStorageConnection* aConnection, if (deletedVisitIds.IsEmpty()) return NS_OK; + // Reset the frecencies for the places that won't have any visits after + // we delete them and make sure they aren't bookmarked either. This means we + // keep the old frecencies when possible as an estimate for the new frecency + // unless we know it has to be invalidated. + // We must do this before deleting visits nsresult rv = aConnection->ExecuteSimpleSQL( + NS_LITERAL_CSTRING( + "UPDATE moz_places " + "SET frecency = -MAX(visit_count, 1) " + "WHERE id IN (" + "SELECT h.id FROM moz_places h " + "WHERE NOT EXISTS (SELECT b.id FROM moz_bookmarks b WHERE b.fk = h.id) " + "AND NOT EXISTS " + "(SELECT v.id FROM moz_historyvisits v WHERE v.place_id = h.id AND " + "v.id NOT IN (") + deletedVisitIds + + NS_LITERAL_CSTRING(")) AND " + "h.id IN (") + placeIds + + NS_LITERAL_CSTRING("))")); + NS_ENSURE_SUCCESS(rv, rv); + + rv = aConnection->ExecuteSimpleSQL( NS_LITERAL_CSTRING("DELETE FROM moz_historyvisits WHERE id IN (") + deletedVisitIds + NS_LITERAL_CSTRING(")")); NS_ENSURE_SUCCESS(rv, rv); - if (placeIds.IsEmpty()) - return NS_OK; - - // Reset the frecencies for the places that don't have any more visits after - // we deleted them and make sure they aren't bookmarked either. This means we - // keep the old frecencies when possible as an estimate for the new frecency - // unless we know it has to be -1. - rv = aConnection->ExecuteSimpleSQL( - NS_LITERAL_CSTRING( - "UPDATE moz_places " - "SET frecency = -1 " - "WHERE id IN (" - "SELECT h.id FROM moz_places h " - "LEFT OUTER JOIN moz_historyvisits v ON v.place_id = h.id " - "LEFT OUTER JOIN moz_bookmarks b ON b.fk = h.id " - "WHERE v.id IS NULL AND b.id IS NULL AND h.id IN (") + - placeIds + - NS_LITERAL_CSTRING("))")); - NS_ENSURE_SUCCESS(rv, rv); - return NS_OK; } diff --git a/toolkit/components/places/tests/unit/test_000_frecency.js b/toolkit/components/places/tests/unit/test_000_frecency.js index c2ae54a0d3bb..755eb42194e8 100644 --- a/toolkit/components/places/tests/unit/test_000_frecency.js +++ b/toolkit/components/places/tests/unit/test_000_frecency.js @@ -148,7 +148,10 @@ bucketPrefs.every(function(bucket) { // visited var points = Math.ceil(1 * ((bonusValue / parseFloat(100.000000)).toFixed(6) * weight) / 1); if (!points) { - if (visitType == Ci.nsINavHistoryService.TRANSITION_EMBED || bonusName == "defaultVisitBonus") + if (!visitType || + visitType == Ci.nsINavHistoryService.TRANSITION_EMBED || + visitType == Ci.nsINavHistoryService.TRANSITION_DOWNLOAD || + bonusName == "defaultVisitBonus") frecency = 0; else frecency = -1; From f5d41d93a43d8c3aa966d0ddbecc5a25564b34c1 Mon Sep 17 00:00:00 2001 From: "jruderman@hmc.edu" Date: Wed, 26 Mar 2008 21:06:24 -0700 Subject: [PATCH 072/129] Add crashtest --- layout/generic/crashtests/400244-1.html | 31 +++++++++++++++++++++++ layout/generic/crashtests/crashtests.list | 1 + 2 files changed, 32 insertions(+) create mode 100644 layout/generic/crashtests/400244-1.html diff --git a/layout/generic/crashtests/400244-1.html b/layout/generic/crashtests/400244-1.html new file mode 100644 index 000000000000..3b1b7bfa064c --- /dev/null +++ b/layout/generic/crashtests/400244-1.html @@ -0,0 +1,31 @@ + + + + + + + + +

+ + + diff --git a/layout/generic/crashtests/crashtests.list b/layout/generic/crashtests/crashtests.list index 21c90dc37b6d..ae962ff716b5 100644 --- a/layout/generic/crashtests/crashtests.list +++ b/layout/generic/crashtests/crashtests.list @@ -98,6 +98,7 @@ load 399407-1.xhtml load 399843-1.html load 400223-1.html load 400232-1.html +load 400244-1.html load 403576-1.html load 404140-1.html load 404146-1.html From 84b97585e33e7c4ecc5eb2e56898d769488f6953 Mon Sep 17 00:00:00 2001 From: "jruderman@hmc.edu" Date: Wed, 26 Mar 2008 21:09:57 -0700 Subject: [PATCH 073/129] Add crashtests --- layout/generic/crashtests/402380-1.html | 13 +++++++++++++ layout/generic/crashtests/402380-2.html | 18 ++++++++++++++++++ layout/generic/crashtests/crashtests.list | 2 ++ 3 files changed, 33 insertions(+) create mode 100644 layout/generic/crashtests/402380-1.html create mode 100644 layout/generic/crashtests/402380-2.html diff --git a/layout/generic/crashtests/402380-1.html b/layout/generic/crashtests/402380-1.html new file mode 100644 index 000000000000..3f9e21ec00f3 --- /dev/null +++ b/layout/generic/crashtests/402380-1.html @@ -0,0 +1,13 @@ + + + + + +
is text
+ + diff --git a/layout/generic/crashtests/402380-2.html b/layout/generic/crashtests/402380-2.html new file mode 100644 index 000000000000..f3b0217404d0 --- /dev/null +++ b/layout/generic/crashtests/402380-2.html @@ -0,0 +1,18 @@ + + + + + + + +
is text
+ + + diff --git a/layout/generic/crashtests/crashtests.list b/layout/generic/crashtests/crashtests.list index ae962ff716b5..b4dd8405c65c 100644 --- a/layout/generic/crashtests/crashtests.list +++ b/layout/generic/crashtests/crashtests.list @@ -99,6 +99,8 @@ load 399843-1.html load 400223-1.html load 400232-1.html load 400244-1.html +load 402380-1.html +load 402380-2.html load 403576-1.html load 404140-1.html load 404146-1.html From 4c4199453c5915f6a7dd0e609e91516d16001d6a Mon Sep 17 00:00:00 2001 From: "jruderman@hmc.edu" Date: Wed, 26 Mar 2008 21:19:21 -0700 Subject: [PATCH 074/129] Add crashtest. (This file has caused leaks and crashes at various times in the 1.9 cycle.) --- content/base/crashtests/324871-1.html | 14 ++++++++++++++ content/base/crashtests/crashtests.list | 1 + 2 files changed, 15 insertions(+) create mode 100644 content/base/crashtests/324871-1.html diff --git a/content/base/crashtests/324871-1.html b/content/base/crashtests/324871-1.html new file mode 100644 index 000000000000..21aa46230fbe --- /dev/null +++ b/content/base/crashtests/324871-1.html @@ -0,0 +1,14 @@ + + + + + +
+ + \ No newline at end of file diff --git a/content/base/crashtests/crashtests.list b/content/base/crashtests/crashtests.list index 90bf7bd81ff0..77adfacbe095 100644 --- a/content/base/crashtests/crashtests.list +++ b/content/base/crashtests/crashtests.list @@ -1,4 +1,5 @@ load 308120-1.xul +load 324871-1.html load 325730-1.html load 326618-1.html load 326646-1.html From 8c070d91b80c2dec8d7035198a9b90cc99aea45a Mon Sep 17 00:00:00 2001 From: "jruderman@hmc.edu" Date: Wed, 26 Mar 2008 21:27:43 -0700 Subject: [PATCH 075/129] Adding crashtest --- layout/forms/crashtests/404118-1.html | 5 +++++ layout/forms/crashtests/crashtests.list | 1 + 2 files changed, 6 insertions(+) create mode 100644 layout/forms/crashtests/404118-1.html diff --git a/layout/forms/crashtests/404118-1.html b/layout/forms/crashtests/404118-1.html new file mode 100644 index 000000000000..40a2ac72b0d5 --- /dev/null +++ b/layout/forms/crashtests/404118-1.html @@ -0,0 +1,5 @@ + + + + + diff --git a/layout/forms/crashtests/crashtests.list b/layout/forms/crashtests/crashtests.list index 00fd6fc20cad..abd078c9e46a 100644 --- a/layout/forms/crashtests/crashtests.list +++ b/layout/forms/crashtests/crashtests.list @@ -20,4 +20,5 @@ load 388374-1.xhtml load 388374-2.html load 393656-1.xhtml load 393656-2.xhtml +load 404118-1.html load 404123-1.html From 56b0de490d1c9ba97aa825c2a1c25673a2d4b38e Mon Sep 17 00:00:00 2001 From: "jruderman@hmc.edu" Date: Wed, 26 Mar 2008 21:53:01 -0700 Subject: [PATCH 076/129] Add crashtest --- layout/base/crashtests/406675-1.html | 17 +++++++++++++++++ layout/base/crashtests/crashtests.list | 1 + 2 files changed, 18 insertions(+) create mode 100644 layout/base/crashtests/406675-1.html diff --git a/layout/base/crashtests/406675-1.html b/layout/base/crashtests/406675-1.html new file mode 100644 index 000000000000..779d82b675ce --- /dev/null +++ b/layout/base/crashtests/406675-1.html @@ -0,0 +1,17 @@ + + + + + + + diff --git a/layout/base/crashtests/crashtests.list b/layout/base/crashtests/crashtests.list index 8d0ef275f688..9865ca867a0f 100644 --- a/layout/base/crashtests/crashtests.list +++ b/layout/base/crashtests/crashtests.list @@ -95,6 +95,7 @@ load 403569-3.xhtml load 404218-1.xhtml load 405184-1.xhtml load 405186-1.xhtml +load 406675-1.html load 408292.html load 408299.html load 409513.html From cf86eefebb2f17ea0b37c62bca3026b8965f66ce Mon Sep 17 00:00:00 2001 From: "dietrich@mozilla.com" Date: Wed, 26 Mar 2008 22:00:47 -0700 Subject: [PATCH 077/129] Bug 419315 - All bookmarks lost after using "Restore all user preferences" (r=mano, re-land, testing perf) --- browser/app/profile/firefox.js | 6 ------ browser/components/nsBrowserGlue.js | 11 +++++++++++ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js index 76cc9cfd2a6a..6f7488b0ea16 100644 --- a/browser/app/profile/firefox.js +++ b/browser/app/profile/firefox.js @@ -640,12 +640,6 @@ pref("browser.sessionstore.max_tabs_undo", 10); // allow META refresh by default pref("accessibility.blockautorefresh", false); -// import bookmarks.html into Places bookmarks -pref("browser.places.importBookmarksHTML", true); - -// if false, will add the "Smart Bookmarks" folder to the personal toolbar -pref("browser.places.createdSmartBookmarks", false); - // If true, will migrate uri post-data annotations to // bookmark post-data annotations (bug 398914) // XXX to be removed after beta 2 (bug 391419) diff --git a/browser/components/nsBrowserGlue.js b/browser/components/nsBrowserGlue.js index 7959c2967b27..8b20da89d5e2 100644 --- a/browser/components/nsBrowserGlue.js +++ b/browser/components/nsBrowserGlue.js @@ -401,6 +401,14 @@ BrowserGlue.prototype = { } catch(ex) {} if (!importBookmarks) { ++ /** ++ * These prefs are set by the backend services upon creation (or recreation) ++ * of the Places db: ++ * - browser.places.importBookmarksHTML ++ * Set to false by the history service to indicate we need to re-import. ++ * - browser.places.createdSmartBookmarks ++ * Set during HTML import to indicate that the queries were created. ++ */ // Call it here for Fx3 profiles created before the Places folder // has been added, otherwise it's called during import. this.ensurePlacesDefaultQueriesInitialized(); @@ -417,6 +425,9 @@ BrowserGlue.prototype = { else { // if there's no json backup use bookmarks.html + // ensurePlacesDefaultQueriesInitialized() is called by import. + prefBranch.setBoolPref("browser.places.createdSmartBookmarks", false); + var dirService = Cc["@mozilla.org/file/directory_service;1"]. getService(Ci.nsIProperties); var bookmarksFile = dirService.get("BMarks", Ci.nsILocalFile); From 8b8fcfb0918da402df64e7860c65629bec508a1e Mon Sep 17 00:00:00 2001 From: "bmlk@gmx.de" Date: Wed, 26 Mar 2008 22:03:02 -0700 Subject: [PATCH 078/129] lookup all columns for possible originating cells, bug 423514 r/sr=bzbarsky a=mtschrep --- layout/tables/nsTableRowGroupFrame.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/layout/tables/nsTableRowGroupFrame.cpp b/layout/tables/nsTableRowGroupFrame.cpp index 13eae1b5f267..d100f0f2cddf 100644 --- a/layout/tables/nsTableRowGroupFrame.cpp +++ b/layout/tables/nsTableRowGroupFrame.cpp @@ -1662,7 +1662,8 @@ nsTableRowGroupFrame::GetLine(PRInt32 aLineNumber, if (*aNumFramesOnLine == 0) { return NS_OK; } - for (PRInt32 i = 0; i < *aNumFramesOnLine; i++) { + PRInt32 colCount = table->GetColCount(); + for (PRInt32 i = 0; i < colCount; i++) { CellData* data = cellMap->GetDataAt(aLineNumber, i); if (data && data->IsOrig()) { *aFirstFrameOnLine = (nsIFrame*)data->GetCellFrame(); From f47a0f477c023599fde57a404f2e355bcf507789 Mon Sep 17 00:00:00 2001 From: "jruderman@hmc.edu" Date: Wed, 26 Mar 2008 22:28:56 -0700 Subject: [PATCH 079/129] Add a crashtest --- content/svg/content/src/crashtests/409811-1.html | 15 +++++++++++++++ .../svg/content/src/crashtests/crashtests.list | 1 + 2 files changed, 16 insertions(+) create mode 100644 content/svg/content/src/crashtests/409811-1.html diff --git a/content/svg/content/src/crashtests/409811-1.html b/content/svg/content/src/crashtests/409811-1.html new file mode 100644 index 000000000000..28a064e4d10e --- /dev/null +++ b/content/svg/content/src/crashtests/409811-1.html @@ -0,0 +1,15 @@ + + + + + + + diff --git a/content/svg/content/src/crashtests/crashtests.list b/content/svg/content/src/crashtests/crashtests.list index 399cd14ec14b..40cea7a3e549 100644 --- a/content/svg/content/src/crashtests/crashtests.list +++ b/content/svg/content/src/crashtests/crashtests.list @@ -27,6 +27,7 @@ load 398926-fill.svg load 398926-stroke.svg load 405639-1.svg load 406361-1.html +load 409811-1.html load 410659-1.svg load 410659-2.svg load 410659-3.svg From 5b27bd0b9ec68251b2acc5b3c3452de4e12a780f Mon Sep 17 00:00:00 2001 From: "joshmoz@gmail.com" Date: Wed, 26 Mar 2008 22:36:20 -0700 Subject: [PATCH 080/129] Scrollbar thumb is drawn with wrong size for custom scrollbars. b=424074 r=josh sr=vlad --- layout/reftests/bugs/424074-1-ref.xul | 11 +++++++++++ layout/reftests/bugs/424074-1-ref2.xul | 11 +++++++++++ layout/reftests/bugs/424074-1-ref3.xul | 11 +++++++++++ layout/reftests/bugs/424074-1.xul | 7 +++++++ layout/reftests/bugs/reftest.list | 3 +++ widget/src/cocoa/nsNativeThemeCocoa.mm | 17 +++++++++-------- widget/src/gtk2/nsNativeThemeGTK.cpp | 8 ++++---- widget/src/xpwidgets/nsNativeTheme.cpp | 8 ++++---- widget/src/xpwidgets/nsNativeTheme.h | 5 ++--- widget/src/xpwidgets/nsWidgetAtomList.h | 1 + 10 files changed, 63 insertions(+), 19 deletions(-) create mode 100644 layout/reftests/bugs/424074-1-ref.xul create mode 100644 layout/reftests/bugs/424074-1-ref2.xul create mode 100644 layout/reftests/bugs/424074-1-ref3.xul create mode 100644 layout/reftests/bugs/424074-1.xul diff --git a/layout/reftests/bugs/424074-1-ref.xul b/layout/reftests/bugs/424074-1-ref.xul new file mode 100644 index 000000000000..5e08d2a8b12a --- /dev/null +++ b/layout/reftests/bugs/424074-1-ref.xul @@ -0,0 +1,11 @@ + + + + + + + diff --git a/layout/reftests/bugs/424074-1-ref2.xul b/layout/reftests/bugs/424074-1-ref2.xul new file mode 100644 index 000000000000..8b538a33f3df --- /dev/null +++ b/layout/reftests/bugs/424074-1-ref2.xul @@ -0,0 +1,11 @@ + + + + + + + diff --git a/layout/reftests/bugs/424074-1-ref3.xul b/layout/reftests/bugs/424074-1-ref3.xul new file mode 100644 index 000000000000..42edc44e0ba2 --- /dev/null +++ b/layout/reftests/bugs/424074-1-ref3.xul @@ -0,0 +1,11 @@ + + + + + + + diff --git a/layout/reftests/bugs/424074-1.xul b/layout/reftests/bugs/424074-1.xul new file mode 100644 index 000000000000..315faf51781c --- /dev/null +++ b/layout/reftests/bugs/424074-1.xul @@ -0,0 +1,7 @@ + + + + + + + diff --git a/layout/reftests/bugs/reftest.list b/layout/reftests/bugs/reftest.list index e37abfe85412..8c8a2194d1ac 100644 --- a/layout/reftests/bugs/reftest.list +++ b/layout/reftests/bugs/reftest.list @@ -779,3 +779,6 @@ fails == 413027-3.html 413027-3-ref.html == 423385-1.html 423385-1-ref.html == 423599-1.html 423599-1-ref.html == 423676-1.html 423676-1-ref.html +== 424074-1.xul 424074-1-ref.xul +!= 424074-1.xul 424074-1-ref2.xul +== 424074-1-ref2.xul 424074-1-ref3.xul diff --git a/widget/src/cocoa/nsNativeThemeCocoa.mm b/widget/src/cocoa/nsNativeThemeCocoa.mm index eb797296df62..d533d3bb5bbe 100644 --- a/widget/src/cocoa/nsNativeThemeCocoa.mm +++ b/widget/src/cocoa/nsNativeThemeCocoa.mm @@ -837,9 +837,10 @@ nsNativeThemeCocoa::GetScrollbarDrawInfo(HIThemeTrackDrawInfo& aTdi, nsIFrame *a { NS_OBJC_BEGIN_TRY_ABORT_BLOCK; - PRInt32 curpos = CheckIntAttr(aFrame, nsWidgetAtoms::curpos); - PRInt32 minpos = CheckIntAttr(aFrame, nsWidgetAtoms::minpos); - PRInt32 maxpos = CheckIntAttr(aFrame, nsWidgetAtoms::maxpos); + PRInt32 curpos = CheckIntAttr(aFrame, nsWidgetAtoms::curpos, 0); + PRInt32 minpos = CheckIntAttr(aFrame, nsWidgetAtoms::minpos, 0); + PRInt32 maxpos = CheckIntAttr(aFrame, nsWidgetAtoms::maxpos, 100); + PRInt32 thumbSize = CheckIntAttr(aFrame, nsWidgetAtoms::pageincrement, 10); PRBool isHorizontal = aFrame->GetContent()->AttrValueIs(kNameSpaceID_None, nsWidgetAtoms::orient, nsWidgetAtoms::horizontal, eCaseMatters); @@ -856,12 +857,12 @@ nsNativeThemeCocoa::GetScrollbarDrawInfo(HIThemeTrackDrawInfo& aTdi, nsIFrame *a if (isHorizontal) aTdi.attributes |= kThemeTrackHorizontal; - PRInt32 longSideLength = (PRInt32)(isHorizontal ? (aRect.size.width) : (aRect.size.height)); - aTdi.trackInfo.scrollbar.viewsize = (SInt32)longSideLength; + aTdi.trackInfo.scrollbar.viewsize = (SInt32)thumbSize; /* Only display features if we have enough room for them. * Gecko still maintains the scrollbar info; this is just a visual issue (bug 380185). */ + PRInt32 longSideLength = (PRInt32)(isHorizontal ? (aRect.size.width) : (aRect.size.height)); if (longSideLength >= (isSmall ? MIN_SMALL_SCROLLBAR_SIZE_WITH_THUMB : MIN_SCROLLBAR_SIZE_WITH_THUMB)) { aTdi.attributes |= kThemeTrackShowThumb; } @@ -1240,9 +1241,9 @@ nsNativeThemeCocoa::DrawWidgetBackground(nsIRenderingContext* aContext, nsIFrame case NS_THEME_SCALE_HORIZONTAL: case NS_THEME_SCALE_VERTICAL: { - PRInt32 curpos = CheckIntAttr(aFrame, nsWidgetAtoms::curpos); - PRInt32 minpos = CheckIntAttr(aFrame, nsWidgetAtoms::minpos); - PRInt32 maxpos = CheckIntAttr(aFrame, nsWidgetAtoms::maxpos); + PRInt32 curpos = CheckIntAttr(aFrame, nsWidgetAtoms::curpos, 0); + PRInt32 minpos = CheckIntAttr(aFrame, nsWidgetAtoms::minpos, 0); + PRInt32 maxpos = CheckIntAttr(aFrame, nsWidgetAtoms::maxpos, 100); if (!maxpos) maxpos = 100; diff --git a/widget/src/gtk2/nsNativeThemeGTK.cpp b/widget/src/gtk2/nsNativeThemeGTK.cpp index 18ca6260c495..dc43da53eb4f 100644 --- a/widget/src/gtk2/nsNativeThemeGTK.cpp +++ b/widget/src/gtk2/nsNativeThemeGTK.cpp @@ -267,8 +267,8 @@ nsNativeThemeGTK::GetGtkWidgetAndState(PRUint8 aWidgetType, nsIFrame* aFrame, // the slider to the actual scrollbar object nsIFrame *tmpFrame = aFrame->GetParent()->GetParent(); - aState->curpos = CheckIntAttr(tmpFrame, nsWidgetAtoms::curpos); - aState->maxpos = CheckIntAttr(tmpFrame, nsWidgetAtoms::maxpos); + aState->curpos = CheckIntAttr(tmpFrame, nsWidgetAtoms::curpos, 0); + aState->maxpos = CheckIntAttr(tmpFrame, nsWidgetAtoms::maxpos, 100); } if (aWidgetType == NS_THEME_SCROLLBAR_BUTTON_UP || @@ -277,8 +277,8 @@ nsNativeThemeGTK::GetGtkWidgetAndState(PRUint8 aWidgetType, nsIFrame* aFrame, aWidgetType == NS_THEME_SCROLLBAR_BUTTON_RIGHT) { // set the state to disabled when the scrollbar is scrolled to // the beginning or the end, depending on the button type. - PRInt32 curpos = CheckIntAttr(aFrame, nsWidgetAtoms::curpos); - PRInt32 maxpos = CheckIntAttr(aFrame, nsWidgetAtoms::maxpos); + PRInt32 curpos = CheckIntAttr(aFrame, nsWidgetAtoms::curpos, 0); + PRInt32 maxpos = CheckIntAttr(aFrame, nsWidgetAtoms::maxpos, 100); if ((curpos == 0 && (aWidgetType == NS_THEME_SCROLLBAR_BUTTON_UP || aWidgetType == NS_THEME_SCROLLBAR_BUTTON_LEFT)) || (curpos == maxpos && diff --git a/widget/src/xpwidgets/nsNativeTheme.cpp b/widget/src/xpwidgets/nsNativeTheme.cpp index 259e063f3da2..c5767d492dd9 100644 --- a/widget/src/xpwidgets/nsNativeTheme.cpp +++ b/widget/src/xpwidgets/nsNativeTheme.cpp @@ -114,16 +114,16 @@ nsNativeTheme::CheckBooleanAttr(nsIFrame* aFrame, nsIAtom* aAtom) } PRInt32 -nsNativeTheme::CheckIntAttr(nsIFrame* aFrame, nsIAtom* aAtom) +nsNativeTheme::CheckIntAttr(nsIFrame* aFrame, nsIAtom* aAtom, PRInt32 defaultValue) { if (!aFrame) - return 0; + return defaultValue; nsAutoString attr; aFrame->GetContent()->GetAttr(kNameSpaceID_None, aAtom, attr); PRInt32 err, value = attr.ToInteger(&err); - if (NS_FAILED(err)) - return 0; + if (attr.IsEmpty() || NS_FAILED(err)) + return defaultValue; return value; } diff --git a/widget/src/xpwidgets/nsNativeTheme.h b/widget/src/xpwidgets/nsNativeTheme.h index caf07b852d4d..7ac02e53966b 100644 --- a/widget/src/xpwidgets/nsNativeTheme.h +++ b/widget/src/xpwidgets/nsNativeTheme.h @@ -131,7 +131,7 @@ class nsNativeTheme PRBool IsIndeterminateProgress(nsIFrame* aFrame); PRInt32 GetProgressValue(nsIFrame* aFrame) { - return CheckIntAttr(aFrame, nsWidgetAtoms::value); + return CheckIntAttr(aFrame, nsWidgetAtoms::value, 0); } // textfield: @@ -139,9 +139,8 @@ class nsNativeTheme return CheckBooleanAttr(aFrame, nsWidgetAtoms::readonly); } - // These are used by nsNativeThemeGtk nsIPresShell *GetPresShell(nsIFrame* aFrame); - PRInt32 CheckIntAttr(nsIFrame* aFrame, nsIAtom* aAtom); + PRInt32 CheckIntAttr(nsIFrame* aFrame, nsIAtom* aAtom, PRInt32 defaultValue); PRBool CheckBooleanAttr(nsIFrame* aFrame, nsIAtom* aAtom); PRBool GetCheckedOrSelected(nsIFrame* aFrame, PRBool aCheckSelected); diff --git a/widget/src/xpwidgets/nsWidgetAtomList.h b/widget/src/xpwidgets/nsWidgetAtomList.h index 75a35a8d468a..27f677e749e0 100644 --- a/widget/src/xpwidgets/nsWidgetAtomList.h +++ b/widget/src/xpwidgets/nsWidgetAtomList.h @@ -99,6 +99,7 @@ WIDGET_ATOM(name, "name") WIDGET_ATOM(onAppCommand, "onAppCommand") WIDGET_ATOM(open, "open") // Whether or not a menu, tree, etc. is open WIDGET_ATOM(orient, "orient") +WIDGET_ATOM(pageincrement, "pageincrement") WIDGET_ATOM(parentfocused, "parentfocused") WIDGET_ATOM(radio, "radio") WIDGET_ATOM(readonly, "readonly") From c236c042fc5132ca60c84a6ba18cf6cabe0f80c7 Mon Sep 17 00:00:00 2001 From: "jruderman@hmc.edu" Date: Thu, 27 Mar 2008 00:03:22 -0700 Subject: [PATCH 081/129] Add crashtest --- layout/tables/crashtests/423514-1.xhtml | 35 ++++++++++++++++++++++++ layout/tables/crashtests/crashtests.list | 1 + 2 files changed, 36 insertions(+) create mode 100644 layout/tables/crashtests/423514-1.xhtml diff --git a/layout/tables/crashtests/423514-1.xhtml b/layout/tables/crashtests/423514-1.xhtml new file mode 100644 index 000000000000..b6e3876ded59 --- /dev/null +++ b/layout/tables/crashtests/423514-1.xhtml @@ -0,0 +1,35 @@ + + + + + + + +
+ +
+ + diff --git a/layout/tables/crashtests/crashtests.list b/layout/tables/crashtests/crashtests.list index e74297362c38..c794be294a63 100644 --- a/layout/tables/crashtests/crashtests.list +++ b/layout/tables/crashtests/crashtests.list @@ -45,3 +45,4 @@ load 403579-1.html load 404301-1.xhtml load 411582.xhtml load 413180-1.html +load 423514-1.xhtml From 072ebb3175e607fd1843ce5e989d7534a58c797f Mon Sep 17 00:00:00 2001 From: "dtownsend@oxymoronical.com" Date: Thu, 27 Mar 2008 02:17:19 -0700 Subject: [PATCH 082/129] Marking test from bug 424074 as failing on linux --- layout/reftests/bugs/reftest.list | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layout/reftests/bugs/reftest.list b/layout/reftests/bugs/reftest.list index 8c8a2194d1ac..2953c8dc1cdf 100644 --- a/layout/reftests/bugs/reftest.list +++ b/layout/reftests/bugs/reftest.list @@ -781,4 +781,4 @@ fails == 413027-3.html 413027-3-ref.html == 423676-1.html 423676-1-ref.html == 424074-1.xul 424074-1-ref.xul != 424074-1.xul 424074-1-ref2.xul -== 424074-1-ref2.xul 424074-1-ref3.xul +fails-if(MOZ_WIDGET_TOOLKIT=="gtk2") == 424074-1-ref2.xul 424074-1-ref3.xul From 907cb2f6714f75444ff289a41aaa099dd320c647 Mon Sep 17 00:00:00 2001 From: "neil@parkwaycc.co.uk" Date: Thu, 27 Mar 2008 02:30:48 -0700 Subject: [PATCH 083/129] Make it possible for elements to notice checkbox listitems b=423407 r=Mano a=beltzner --- toolkit/content/widgets/listbox.xml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/toolkit/content/widgets/listbox.xml b/toolkit/content/widgets/listbox.xml index 298deb4a3798..65429492d9f0 100644 --- a/toolkit/content/widgets/listbox.xml +++ b/toolkit/content/widgets/listbox.xml @@ -843,8 +843,10 @@ if (this.currentItem) { if (this.currentItem.getAttribute("type") != "checkbox") this.addItemToSelection(this.currentItem); - else if (!this.currentItem.disabled) + else if (!this.currentItem.disabled) { this.currentItem.checked = !this.currentItem.checked; + this.currentItem.doCommand(); + } } ]]> @@ -1039,8 +1041,10 @@ From f1b3eaa64dff88f3848bd4cf4bf645a04e9152b1 Mon Sep 17 00:00:00 2001 From: "dtownsend@oxymoronical.com" Date: Thu, 27 Mar 2008 02:37:45 -0700 Subject: [PATCH 084/129] Bug 424107: Extension updates installed from app mismatches window are lost. r=robstrong --- .../extensions/src/nsExtensionManager.js.in | 28 ++++--- .../test/unit/data/test_bug424107_1.rdf | 20 +++++ .../test/unit/data/test_bug424107_2.rdf | 20 +++++ .../test/unit/head_extensionmanager.js | 34 ++------- .../extensions/test/unit/test_bug394717.js | 7 +- .../extensions/test/unit/test_bug424107.js | 73 +++++++++++++++++++ 6 files changed, 145 insertions(+), 37 deletions(-) create mode 100644 toolkit/mozapps/extensions/test/unit/data/test_bug424107_1.rdf create mode 100644 toolkit/mozapps/extensions/test/unit/data/test_bug424107_2.rdf create mode 100644 toolkit/mozapps/extensions/test/unit/test_bug424107.js diff --git a/toolkit/mozapps/extensions/src/nsExtensionManager.js.in b/toolkit/mozapps/extensions/src/nsExtensionManager.js.in index c49c24177710..b841eb6ccd5c 100644 --- a/toolkit/mozapps/extensions/src/nsExtensionManager.js.in +++ b/toolkit/mozapps/extensions/src/nsExtensionManager.js.in @@ -849,8 +849,22 @@ function extractRDFFileToTempDir(zipFile, fileName, suppressErrors) { * @returns The Install Manifest datasource */ function getInstallManifest(file) { - var fileURL = getURLSpecFromFile(file); - var ds = gRDF.GetDataSourceBlocking(fileURL); + var fis = Cc["@mozilla.org/network/file-input-stream;1"]. + createInstance(Ci.nsIFileInputStream); + fis.init(file, -1, -1, false); + fis.QueryInterface(Ci.nsILineInputStream); + var line = { value: "" }; + var text = ""; + while (fis.readLine(line)) + text += line.value; + fis.close(); + + var rdfParser = Cc["@mozilla.org/rdf/xml-parser;1"]. + createInstance(Ci.nsIRDFXMLParser) + var ds = Cc["@mozilla.org/rdf/datasource;1?name=in-memory-datasource"]. + createInstance(Ci.nsIRDFDataSource); + rdfParser.parseString(ds, getURIFromFile(file), text); + var arcs = ds.ArcLabelsOut(gInstallManifestRoot); if (!arcs.hasMoreElements()) { ds = null; @@ -3586,10 +3600,10 @@ ExtensionManager.prototype = { if (ds.getItemProperty(id, "providesUpdatesSecurely") == "false") { /* It's possible the previous version did not understand updateKeys so * check if we can import one for this addon from it's manifest. */ - var location = this.getInstallLocation(id); - var installRDF = location.getItemFile(id, FILE_INSTALL_MANIFEST); + location = this.getInstallLocation(id); + installRDF = location.getItemFile(id, FILE_INSTALL_MANIFEST); if (installRDF.exists()) { - var metadataDS = getInstallManifest(installRDF); + metadataDS = getInstallManifest(installRDF); var literal = metadataDS.GetTarget(gInstallManifestRoot, EM_R("updateKey"), true); if (literal && literal instanceof Ci.nsIRDFLiteral) ds.setItemProperty(id, EM_R("updateKey"), literal); @@ -4408,10 +4422,6 @@ ExtensionManager.prototype = { addon.maxAppVersion, null); } - // Prevent the datasource file from being lazily recreated after - // it is deleted by calling Flush. - this._installManifest.QueryInterface(Ci.nsIRDFRemoteDataSource); - this._installManifest.Flush(); } else { em.datasource.removeDownload(this._xpi.path); diff --git a/toolkit/mozapps/extensions/test/unit/data/test_bug424107_1.rdf b/toolkit/mozapps/extensions/test/unit/data/test_bug424107_1.rdf new file mode 100644 index 000000000000..a8f33789a081 --- /dev/null +++ b/toolkit/mozapps/extensions/test/unit/data/test_bug424107_1.rdf @@ -0,0 +1,20 @@ + + + + + + bug424107@tests.mozilla.org + 1 + + + + xpcshell@tests.mozilla.org + 5 + 5 + + + + Bug 424107 test 1 + + diff --git a/toolkit/mozapps/extensions/test/unit/data/test_bug424107_2.rdf b/toolkit/mozapps/extensions/test/unit/data/test_bug424107_2.rdf new file mode 100644 index 000000000000..18da35d5b1c2 --- /dev/null +++ b/toolkit/mozapps/extensions/test/unit/data/test_bug424107_2.rdf @@ -0,0 +1,20 @@ + + + + + + bug424107@tests.mozilla.org + 2 + + + + xpcshell@tests.mozilla.org + 5 + 5 + + + + Bug 424107 test 2 + + diff --git a/toolkit/mozapps/extensions/test/unit/head_extensionmanager.js b/toolkit/mozapps/extensions/test/unit/head_extensionmanager.js index baff1638b2af..712be8f1975b 100644 --- a/toolkit/mozapps/extensions/test/unit/head_extensionmanager.js +++ b/toolkit/mozapps/extensions/test/unit/head_extensionmanager.js @@ -218,20 +218,21 @@ function startupEM() gEM.QueryInterface(Components.interfaces.nsIObserver); gEM.observe(null, "app-startup", null); gEM.observe(null, "profile-after-change", "startup"); - + + // First run is a new profile which nsAppRunner would consider as an update + // (no existing compatibility.ini) + var upgraded = true; var needsRestart = false; try { needsRestart = gEM.checkForMismatches(); } catch (e) { - needsRestart = gEM.start(null); + needsRestart = false; + upgraded = false; } - - if (needsRestart) - gEM.start(null); - // Make sure extension manager datasource is initialized by requesting it - var dummy = gEM.datasource; + if (!upgraded || !needsRestart) + needsRestart = gEM.start(null); } /** @@ -251,25 +252,6 @@ function shutdownEM() */ function restartEM() { - // We must unregister any datasources that may have been read from addons. - var extensions = gProfD.clone(); - extensions.append("extensions"); - if (extensions.exists()) { - var ioServ = Components.classes["@mozilla.org/network/io-service;1"] - .getService(Components.interfaces.nsIIOService); - var addons = extensions.directoryEntries; - while (addons.hasMoreElements()) { - var addon = addons.getNext().QueryInterface(Components.interfaces.nsIFile); - if (addon.isDirectory() && addon.leafName != "staged-xpis") { - addon.append("install.rdf"); - if (addon.exists()) { - var ds = gRDF.GetDataSource(ioServ.newFileURI(addon).spec); - gRDF.UnregisterDataSource(ds); - } - } - } - } - var needsRestart = gEM.start(null); if (needsRestart) gEM.start(null); diff --git a/toolkit/mozapps/extensions/test/unit/test_bug394717.js b/toolkit/mozapps/extensions/test/unit/test_bug394717.js index 43138f46ee57..b6cf908f8ff0 100644 --- a/toolkit/mozapps/extensions/test/unit/test_bug394717.js +++ b/toolkit/mozapps/extensions/test/unit/test_bug394717.js @@ -39,6 +39,8 @@ const checkListener = { _onUpdateStartedCalled: false, _onUpdateEndedCalled: false, + _onAddonUpdateStartedCount: 0, + _onAddonUpdateEndedCount: 0, // nsIAddonUpdateCheckListener onUpdateStarted: function onUpdateStarted() { @@ -52,12 +54,12 @@ const checkListener = { // nsIAddonUpdateCheckListener onAddonUpdateStarted: function onAddonUpdateStarted(aAddon) { - do_throw("Unexpected call to onAddonUpdateStarted!"); + this._onAddonUpdateStartedCount++; }, // nsIAddonUpdateCheckListener onAddonUpdateEnded: function onAddonUpdateEnded(aAddon, aStatus) { - do_throw("Unexpected call to onAddonUpdateEnded!"); + this._onAddonUpdateEndedCount++; } } @@ -78,5 +80,6 @@ function run_test_pt2() { do_check_true(checkListener._onUpdateStartedCalled); dump("Checking onUpdateEnded\n"); do_check_true(checkListener._onUpdateEndedCalled); + do_check_eq(checkListener._onAddonUpdateStartedCount, checkListener._onAddonUpdateEndedCount); do_test_finished(); } diff --git a/toolkit/mozapps/extensions/test/unit/test_bug424107.js b/toolkit/mozapps/extensions/test/unit/test_bug424107.js new file mode 100644 index 000000000000..8c31c17f6f5e --- /dev/null +++ b/toolkit/mozapps/extensions/test/unit/test_bug424107.js @@ -0,0 +1,73 @@ +/* ***** 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 + * Dave Townsend . + * + * Portions created by the Initial Developer are Copyright (C) 2008 + * 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 ***** + */ + +function run_test() +{ + // Copy an initial add-on into the profile. + var extension = gProfD.clone() + extension.append("extensions"); + extension.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0755); + extension.append("bug424107@tests.mozilla.org"); + extension.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0755); + var sourcerdf = do_get_file("toolkit/mozapps/extensions/test/unit/data/test_bug424107_1.rdf"); + sourcerdf.copyTo(extension, "install.rdf"); + + createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "5", "1.9"); + startupEM(); + var addon = gEM.getItemForID("bug424107@tests.mozilla.org"); + do_check_neq(addon, null); + do_check_eq(addon.version, 1); + + // Uninstall + extension.remove(true); + + restartEM(); + addon = gEM.getItemForID("bug424107@tests.mozilla.org"); + do_check_eq(addon, null); + + // Install a new version + extension.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0755); + sourcerdf = do_get_file("toolkit/mozapps/extensions/test/unit/data/test_bug424107_2.rdf"); + sourcerdf.copyTo(extension, "install.rdf"); + + restartEM(); + addon = gEM.getItemForID("bug424107@tests.mozilla.org"); + do_check_neq(addon, null); + do_check_eq(addon.version, 2); +} + From c801b40f7e15a8c235024fbc66f0a4fa1cc65ae7 Mon Sep 17 00:00:00 2001 From: "smichaud@pobox.com" Date: Thu, 27 Mar 2008 08:40:48 -0700 Subject: [PATCH 085/129] Fix crash on quit in nsMenuX::RemoveAll() on 10.5.X (work around Apple bug). b=422827 r=josh sr=vlad --- widget/src/cocoa/nsCocoaUtils.h | 21 ++++ widget/src/cocoa/nsMenuX.mm | 175 ++++++++++++++++++++++++++++++++ widget/src/cocoa/nsToolkit.h | 3 +- widget/src/cocoa/nsToolkit.mm | 15 ++- 4 files changed, 210 insertions(+), 4 deletions(-) diff --git a/widget/src/cocoa/nsCocoaUtils.h b/widget/src/cocoa/nsCocoaUtils.h index e661f574ec15..46191dbb5d97 100644 --- a/widget/src/cocoa/nsCocoaUtils.h +++ b/widget/src/cocoa/nsCocoaUtils.h @@ -46,6 +46,27 @@ #include "nsRect.h" #include "nsIWidget.h" +// "Borrowed" in part from the QTKit framework's QTKitDefines.h. This is +// needed when building on OS X Tiger (10.4.X) or with a 10.4 SDK. It won't +// be used when building on Leopard (10.5.X) or higher (or with a 10.5 or +// higher SDK). +// +// These definitions for NSInteger and NSUInteger are the 32-bit ones -- since +// we assume we'll always be building 32-bit binaries when building on Tiger +// (or with a 10.4 SDK). +#ifndef NSINTEGER_DEFINED + +typedef int NSInteger; +typedef unsigned int NSUInteger; + +#define NSIntegerMax LONG_MAX +#define NSIntegerMin LONG_MIN +#define NSUIntegerMax ULONG_MAX + +#define NSINTEGER_DEFINED 1 + +#endif /* NSINTEGER_DEFINED */ + @interface NSApplication (Undocumented) // Present in all versions of OS X from (at least) 10.2.8 through 10.5. diff --git a/widget/src/cocoa/nsMenuX.mm b/widget/src/cocoa/nsMenuX.mm index b46f12f6b1f4..8faf6a0fbf8a 100644 --- a/widget/src/cocoa/nsMenuX.mm +++ b/widget/src/cocoa/nsMenuX.mm @@ -53,6 +53,7 @@ #include "nsIMenuBar.h" #include "nsIMenuItem.h" #include "nsToolkit.h" +#include "nsCocoaUtils.h" #include "nsString.h" #include "nsReadableUtils.h" @@ -79,6 +80,8 @@ extern nsIWidget * gRollupWidget; static PRBool gConstructingMenu = PR_FALSE; +static PRBool gMenuMethodsSwizzled = PR_FALSE; + // CIDs #include "nsWidgetsCID.h" static NS_DEFINE_CID(kMenuCID, NS_MENU_CID); @@ -95,6 +98,14 @@ nsMenuX::nsMenuX() { NS_OBJC_BEGIN_TRY_ABORT_BLOCK; + if (nsToolkit::OnLeopardOrLater() && !gMenuMethodsSwizzled) { + nsToolkit::SwizzleMethods([NSMenu class], @selector(_addItem:toTable:), + @selector(nsMenuX_NSMenu_addItem:toTable:), PR_TRUE); + nsToolkit::SwizzleMethods([NSMenu class], @selector(_removeItem:fromTable:), + @selector(nsMenuX_NSMenu_removeItem:fromTable:), PR_TRUE); + gMenuMethodsSwizzled = PR_TRUE; + } + mMenuDelegate = [[MenuDelegate alloc] initWithGeckoMenu:this]; if (!nsMenuBarX::sNativeEventTarget) @@ -1254,3 +1265,167 @@ static OSStatus InstallMyMenuEventHandler(MenuRef menuRef, void* userData, Event } @end + + +// OS X Leopard (at least as of 10.5.2) has an obscure bug triggered by some +// behavior that's present in Mozilla.org browsers but not (as best I can +// tell) in Apple products like Safari. (It's not yet clear exactly what this +// behavior is.) +// +// The bug is that sometimes you crash on quit in nsMenuX::RemoveAll(), on a +// call to [NSMenu removeItemAtIndex:]. The crash is caused by trying to +// access a deleted NSMenuItem object (sometimes (perhaps always?) by trying +// to send it a _setChangedFlags: message). Though this object was deleted +// some time ago, it remains registered as a potential target for a particular +// key equivalent. So when [NSMenu removeItemAtIndex:] removes the current +// target for that same key equivalent, the OS tries to "activate" the +// previous target. +// +// The underlying reason appears to be that NSMenu's _addItem:toTable: and +// _removeItem:fromTable: methods (which are used to keep a hashtable of +// registered key equivalents) don't properly "retain" and "release" +// NSMenuItem objects as they are added to and removed from the hashtable. +// +// Our (hackish) workaround is to shadow the OS's hashtable with another +// hastable of our own (gShadowKeyEquivDB), and use it to "retain" and +// "release" NSMenuItem objects as needed. This resolves bmo bugs 422287 and +// 423669. When (if) Apple fixes this bug, we can remove this workaround. + +static NSMutableDictionary *gShadowKeyEquivDB = nil; + +// Class for numerical-index keys in gShadowKeyEquivDB (each is the NSUInteger +// equivalent of an NSMenuItem's address). Using this kind of key is more +// efficient and also less dangerous -- we won't get into trouble if an +// NSMenuItem object contains invalid pointers (as it appears they sometimes +// do). +// +// Note: NSUInteger is 64-bit safe, but below we must (if we want to be able +// build on OS X 10.4.X) create IndexNumbers using a method that _isn't_ +// 64-bit safe -- [NSNumber numberWithUnsignedInt:(unsigned int)value]. Once +// we start compiling 64-bit binaries, we will need to change this to +// [NSNumber numberWithUnsignedInteger:(NSUInteger)value] (which is only +// available starting with OS X 10.5). We should get a compiler error if we +// try to compile a 64-bit binary without making this change. + +@interface IndexNumber : NSNumber +- (BOOL)isEqual:(id)anObject; +@end + +@implementation IndexNumber + +// Ensure that hastable comparisons use an NSNumber object's value -- not its +// address in memory. +- (BOOL)isEqual:(id)anObject +{ + if ([anObject isKindOfClass:[NSNumber class]]) + return [self isEqualToNumber:(NSNumber *)anObject]; + return [super isEqual:anObject]; +} + +@end + +// Class for values in gShadowKeyEquivDB. + +@interface KeyEquivDBItem : NSObject +{ + NSMenuItem *mItem; + NSMutableIndexSet *mTables; +} + +- (id)initWithItem:(NSMenuItem *)aItem table:(NSMapTable *)aTable; +- (BOOL)hasTable:(NSMapTable *)aTable; +- (int)addTable:(NSMapTable *)aTable; +- (int)removeTable:(NSMapTable *)aTable; + +@end + +@implementation KeyEquivDBItem + +- (id)initWithItem:(NSMenuItem *)aItem table:(NSMapTable *)aTable +{ + if (!gShadowKeyEquivDB) + gShadowKeyEquivDB = [[NSMutableDictionary alloc] init]; + self = [super init]; + if (aItem && aTable) { + mTables = [[NSMutableIndexSet alloc] init]; + mItem = [aItem retain]; + [mTables addIndex:(NSUInteger)aTable]; + } else { + mTables = nil; + mItem = nil; + } + return self; +} + +- (void)dealloc +{ + if (mTables) + [mTables release]; + if (mItem) + [mItem release]; + [super dealloc]; +} + +- (BOOL)hasTable:(NSMapTable *)aTable +{ + return [mTables containsIndex:(NSUInteger)aTable]; +} + +// Does nothing if aTable (its index value) is already present in mTables. +- (int)addTable:(NSMapTable *)aTable +{ + if (aTable) + [mTables addIndex:(NSUInteger)aTable]; + return [mTables count]; +} + +- (int)removeTable:(NSMapTable *)aTable +{ + if (aTable) + [mTables removeIndex:(NSUInteger)aTable]; + return [mTables count]; +} + +@end + +@interface NSMenu (MethodSwizzling) ++ (void)nsMenuX_NSMenu_addItem:(NSMenuItem *)aItem toTable:(NSMapTable *)aTable; ++ (void)nsMenuX_NSMenu_removeItem:(NSMenuItem *)aItem fromTable:(NSMapTable *)aTable; +@end + +@implementation NSMenu (MethodSwizzling) + ++ (void)nsMenuX_NSMenu_addItem:(NSMenuItem *)aItem toTable:(NSMapTable *)aTable +{ + if (aItem && aTable) { + IndexNumber *itemNumber = (IndexNumber *) + [NSNumber numberWithUnsignedInt:(NSUInteger)aItem]; + KeyEquivDBItem *shadowItem = [gShadowKeyEquivDB objectForKey:itemNumber]; + if (shadowItem) { + [shadowItem addTable:aTable]; + } else { + shadowItem = [[KeyEquivDBItem alloc] initWithItem:aItem table:aTable]; + [gShadowKeyEquivDB setObject:shadowItem forKey:itemNumber]; + // Release after [NSMutableDictionary setObject:forKey:] retains it (so + // that it will get dealloced when removeObjectForKey: is called). + [shadowItem release]; + } + } + [self nsMenuX_NSMenu_addItem:aItem toTable:aTable]; +} + ++ (void)nsMenuX_NSMenu_removeItem:(NSMenuItem *)aItem fromTable:(NSMapTable *)aTable +{ + [self nsMenuX_NSMenu_removeItem:aItem fromTable:aTable]; + if (aItem && aTable) { + IndexNumber *itemNumber = (IndexNumber *) + [NSNumber numberWithUnsignedInt:(NSUInteger)aItem]; + KeyEquivDBItem *shadowItem = [gShadowKeyEquivDB objectForKey:itemNumber]; + if (shadowItem && [shadowItem hasTable:aTable]) { + if (![shadowItem removeTable:aTable]) + [gShadowKeyEquivDB removeObjectForKey:itemNumber]; + } + } +} + +@end diff --git a/widget/src/cocoa/nsToolkit.h b/widget/src/cocoa/nsToolkit.h index fceb83aec25c..8aa5334a40f9 100644 --- a/widget/src/cocoa/nsToolkit.h +++ b/widget/src/cocoa/nsToolkit.h @@ -66,7 +66,8 @@ public: static void PostSleepWakeNotification(const char* aNotification); - static nsresult SwizzleMethods(Class aClass, SEL orgMethod, SEL posedMethod); + static nsresult SwizzleMethods(Class aClass, SEL orgMethod, SEL posedMethod, + PRBool classMethods = PR_FALSE); protected: diff --git a/widget/src/cocoa/nsToolkit.mm b/widget/src/cocoa/nsToolkit.mm index 552b99770ecc..d6729060177f 100644 --- a/widget/src/cocoa/nsToolkit.mm +++ b/widget/src/cocoa/nsToolkit.mm @@ -435,12 +435,21 @@ PRBool nsToolkit::OnLeopardOrLater() // subclasses. In order for method swizzling to work properly, posedMethod // needs to be unique in the class where the substitution takes place and all // of its subclasses. -nsresult nsToolkit::SwizzleMethods(Class aClass, SEL orgMethod, SEL posedMethod) +nsresult nsToolkit::SwizzleMethods(Class aClass, SEL orgMethod, SEL posedMethod, + PRBool classMethods) { NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT; - Method original = class_getInstanceMethod(aClass, orgMethod); - Method posed = class_getInstanceMethod(aClass, posedMethod); + Method original = nil; + Method posed = nil; + + if (classMethods) { + original = class_getClassMethod(aClass, orgMethod); + posed = class_getClassMethod(aClass, posedMethod); + } else { + original = class_getInstanceMethod(aClass, orgMethod); + posed = class_getInstanceMethod(aClass, posedMethod); + } if (!original || !posed) return NS_ERROR_FAILURE; From b21679d8d2ac2395936bb3d090e53e93de1b0ffb Mon Sep 17 00:00:00 2001 From: "smichaud@pobox.com" Date: Thu, 27 Mar 2008 09:07:27 -0700 Subject: [PATCH 086/129] Back out patch for bug 422827 because of leak test failure. --- widget/src/cocoa/nsCocoaUtils.h | 21 ---- widget/src/cocoa/nsMenuX.mm | 175 -------------------------------- widget/src/cocoa/nsToolkit.h | 3 +- widget/src/cocoa/nsToolkit.mm | 15 +-- 4 files changed, 4 insertions(+), 210 deletions(-) diff --git a/widget/src/cocoa/nsCocoaUtils.h b/widget/src/cocoa/nsCocoaUtils.h index 46191dbb5d97..e661f574ec15 100644 --- a/widget/src/cocoa/nsCocoaUtils.h +++ b/widget/src/cocoa/nsCocoaUtils.h @@ -46,27 +46,6 @@ #include "nsRect.h" #include "nsIWidget.h" -// "Borrowed" in part from the QTKit framework's QTKitDefines.h. This is -// needed when building on OS X Tiger (10.4.X) or with a 10.4 SDK. It won't -// be used when building on Leopard (10.5.X) or higher (or with a 10.5 or -// higher SDK). -// -// These definitions for NSInteger and NSUInteger are the 32-bit ones -- since -// we assume we'll always be building 32-bit binaries when building on Tiger -// (or with a 10.4 SDK). -#ifndef NSINTEGER_DEFINED - -typedef int NSInteger; -typedef unsigned int NSUInteger; - -#define NSIntegerMax LONG_MAX -#define NSIntegerMin LONG_MIN -#define NSUIntegerMax ULONG_MAX - -#define NSINTEGER_DEFINED 1 - -#endif /* NSINTEGER_DEFINED */ - @interface NSApplication (Undocumented) // Present in all versions of OS X from (at least) 10.2.8 through 10.5. diff --git a/widget/src/cocoa/nsMenuX.mm b/widget/src/cocoa/nsMenuX.mm index 8faf6a0fbf8a..b46f12f6b1f4 100644 --- a/widget/src/cocoa/nsMenuX.mm +++ b/widget/src/cocoa/nsMenuX.mm @@ -53,7 +53,6 @@ #include "nsIMenuBar.h" #include "nsIMenuItem.h" #include "nsToolkit.h" -#include "nsCocoaUtils.h" #include "nsString.h" #include "nsReadableUtils.h" @@ -80,8 +79,6 @@ extern nsIWidget * gRollupWidget; static PRBool gConstructingMenu = PR_FALSE; -static PRBool gMenuMethodsSwizzled = PR_FALSE; - // CIDs #include "nsWidgetsCID.h" static NS_DEFINE_CID(kMenuCID, NS_MENU_CID); @@ -98,14 +95,6 @@ nsMenuX::nsMenuX() { NS_OBJC_BEGIN_TRY_ABORT_BLOCK; - if (nsToolkit::OnLeopardOrLater() && !gMenuMethodsSwizzled) { - nsToolkit::SwizzleMethods([NSMenu class], @selector(_addItem:toTable:), - @selector(nsMenuX_NSMenu_addItem:toTable:), PR_TRUE); - nsToolkit::SwizzleMethods([NSMenu class], @selector(_removeItem:fromTable:), - @selector(nsMenuX_NSMenu_removeItem:fromTable:), PR_TRUE); - gMenuMethodsSwizzled = PR_TRUE; - } - mMenuDelegate = [[MenuDelegate alloc] initWithGeckoMenu:this]; if (!nsMenuBarX::sNativeEventTarget) @@ -1265,167 +1254,3 @@ static OSStatus InstallMyMenuEventHandler(MenuRef menuRef, void* userData, Event } @end - - -// OS X Leopard (at least as of 10.5.2) has an obscure bug triggered by some -// behavior that's present in Mozilla.org browsers but not (as best I can -// tell) in Apple products like Safari. (It's not yet clear exactly what this -// behavior is.) -// -// The bug is that sometimes you crash on quit in nsMenuX::RemoveAll(), on a -// call to [NSMenu removeItemAtIndex:]. The crash is caused by trying to -// access a deleted NSMenuItem object (sometimes (perhaps always?) by trying -// to send it a _setChangedFlags: message). Though this object was deleted -// some time ago, it remains registered as a potential target for a particular -// key equivalent. So when [NSMenu removeItemAtIndex:] removes the current -// target for that same key equivalent, the OS tries to "activate" the -// previous target. -// -// The underlying reason appears to be that NSMenu's _addItem:toTable: and -// _removeItem:fromTable: methods (which are used to keep a hashtable of -// registered key equivalents) don't properly "retain" and "release" -// NSMenuItem objects as they are added to and removed from the hashtable. -// -// Our (hackish) workaround is to shadow the OS's hashtable with another -// hastable of our own (gShadowKeyEquivDB), and use it to "retain" and -// "release" NSMenuItem objects as needed. This resolves bmo bugs 422287 and -// 423669. When (if) Apple fixes this bug, we can remove this workaround. - -static NSMutableDictionary *gShadowKeyEquivDB = nil; - -// Class for numerical-index keys in gShadowKeyEquivDB (each is the NSUInteger -// equivalent of an NSMenuItem's address). Using this kind of key is more -// efficient and also less dangerous -- we won't get into trouble if an -// NSMenuItem object contains invalid pointers (as it appears they sometimes -// do). -// -// Note: NSUInteger is 64-bit safe, but below we must (if we want to be able -// build on OS X 10.4.X) create IndexNumbers using a method that _isn't_ -// 64-bit safe -- [NSNumber numberWithUnsignedInt:(unsigned int)value]. Once -// we start compiling 64-bit binaries, we will need to change this to -// [NSNumber numberWithUnsignedInteger:(NSUInteger)value] (which is only -// available starting with OS X 10.5). We should get a compiler error if we -// try to compile a 64-bit binary without making this change. - -@interface IndexNumber : NSNumber -- (BOOL)isEqual:(id)anObject; -@end - -@implementation IndexNumber - -// Ensure that hastable comparisons use an NSNumber object's value -- not its -// address in memory. -- (BOOL)isEqual:(id)anObject -{ - if ([anObject isKindOfClass:[NSNumber class]]) - return [self isEqualToNumber:(NSNumber *)anObject]; - return [super isEqual:anObject]; -} - -@end - -// Class for values in gShadowKeyEquivDB. - -@interface KeyEquivDBItem : NSObject -{ - NSMenuItem *mItem; - NSMutableIndexSet *mTables; -} - -- (id)initWithItem:(NSMenuItem *)aItem table:(NSMapTable *)aTable; -- (BOOL)hasTable:(NSMapTable *)aTable; -- (int)addTable:(NSMapTable *)aTable; -- (int)removeTable:(NSMapTable *)aTable; - -@end - -@implementation KeyEquivDBItem - -- (id)initWithItem:(NSMenuItem *)aItem table:(NSMapTable *)aTable -{ - if (!gShadowKeyEquivDB) - gShadowKeyEquivDB = [[NSMutableDictionary alloc] init]; - self = [super init]; - if (aItem && aTable) { - mTables = [[NSMutableIndexSet alloc] init]; - mItem = [aItem retain]; - [mTables addIndex:(NSUInteger)aTable]; - } else { - mTables = nil; - mItem = nil; - } - return self; -} - -- (void)dealloc -{ - if (mTables) - [mTables release]; - if (mItem) - [mItem release]; - [super dealloc]; -} - -- (BOOL)hasTable:(NSMapTable *)aTable -{ - return [mTables containsIndex:(NSUInteger)aTable]; -} - -// Does nothing if aTable (its index value) is already present in mTables. -- (int)addTable:(NSMapTable *)aTable -{ - if (aTable) - [mTables addIndex:(NSUInteger)aTable]; - return [mTables count]; -} - -- (int)removeTable:(NSMapTable *)aTable -{ - if (aTable) - [mTables removeIndex:(NSUInteger)aTable]; - return [mTables count]; -} - -@end - -@interface NSMenu (MethodSwizzling) -+ (void)nsMenuX_NSMenu_addItem:(NSMenuItem *)aItem toTable:(NSMapTable *)aTable; -+ (void)nsMenuX_NSMenu_removeItem:(NSMenuItem *)aItem fromTable:(NSMapTable *)aTable; -@end - -@implementation NSMenu (MethodSwizzling) - -+ (void)nsMenuX_NSMenu_addItem:(NSMenuItem *)aItem toTable:(NSMapTable *)aTable -{ - if (aItem && aTable) { - IndexNumber *itemNumber = (IndexNumber *) - [NSNumber numberWithUnsignedInt:(NSUInteger)aItem]; - KeyEquivDBItem *shadowItem = [gShadowKeyEquivDB objectForKey:itemNumber]; - if (shadowItem) { - [shadowItem addTable:aTable]; - } else { - shadowItem = [[KeyEquivDBItem alloc] initWithItem:aItem table:aTable]; - [gShadowKeyEquivDB setObject:shadowItem forKey:itemNumber]; - // Release after [NSMutableDictionary setObject:forKey:] retains it (so - // that it will get dealloced when removeObjectForKey: is called). - [shadowItem release]; - } - } - [self nsMenuX_NSMenu_addItem:aItem toTable:aTable]; -} - -+ (void)nsMenuX_NSMenu_removeItem:(NSMenuItem *)aItem fromTable:(NSMapTable *)aTable -{ - [self nsMenuX_NSMenu_removeItem:aItem fromTable:aTable]; - if (aItem && aTable) { - IndexNumber *itemNumber = (IndexNumber *) - [NSNumber numberWithUnsignedInt:(NSUInteger)aItem]; - KeyEquivDBItem *shadowItem = [gShadowKeyEquivDB objectForKey:itemNumber]; - if (shadowItem && [shadowItem hasTable:aTable]) { - if (![shadowItem removeTable:aTable]) - [gShadowKeyEquivDB removeObjectForKey:itemNumber]; - } - } -} - -@end diff --git a/widget/src/cocoa/nsToolkit.h b/widget/src/cocoa/nsToolkit.h index 8aa5334a40f9..fceb83aec25c 100644 --- a/widget/src/cocoa/nsToolkit.h +++ b/widget/src/cocoa/nsToolkit.h @@ -66,8 +66,7 @@ public: static void PostSleepWakeNotification(const char* aNotification); - static nsresult SwizzleMethods(Class aClass, SEL orgMethod, SEL posedMethod, - PRBool classMethods = PR_FALSE); + static nsresult SwizzleMethods(Class aClass, SEL orgMethod, SEL posedMethod); protected: diff --git a/widget/src/cocoa/nsToolkit.mm b/widget/src/cocoa/nsToolkit.mm index d6729060177f..552b99770ecc 100644 --- a/widget/src/cocoa/nsToolkit.mm +++ b/widget/src/cocoa/nsToolkit.mm @@ -435,21 +435,12 @@ PRBool nsToolkit::OnLeopardOrLater() // subclasses. In order for method swizzling to work properly, posedMethod // needs to be unique in the class where the substitution takes place and all // of its subclasses. -nsresult nsToolkit::SwizzleMethods(Class aClass, SEL orgMethod, SEL posedMethod, - PRBool classMethods) +nsresult nsToolkit::SwizzleMethods(Class aClass, SEL orgMethod, SEL posedMethod) { NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT; - Method original = nil; - Method posed = nil; - - if (classMethods) { - original = class_getClassMethod(aClass, orgMethod); - posed = class_getClassMethod(aClass, posedMethod); - } else { - original = class_getInstanceMethod(aClass, orgMethod); - posed = class_getInstanceMethod(aClass, posedMethod); - } + Method original = class_getInstanceMethod(aClass, orgMethod); + Method posed = class_getInstanceMethod(aClass, posedMethod); if (!original || !posed) return NS_ERROR_FAILURE; From 5bf9939627c734e807227816cd9628a227a58338 Mon Sep 17 00:00:00 2001 From: "enndeakin@sympatico.ca" Date: Thu, 27 Mar 2008 09:19:05 -0700 Subject: [PATCH 087/129] Bug 424482, full keyboard access setting not respected regression, add test as well, r=smaug,sr=neil --- content/xul/content/src/nsXULElement.cpp | 23 ++-- toolkit/content/tests/widgets/Makefile.in | 1 + .../content/tests/widgets/test_tabindex.xul | 125 ++++++++++++++++++ 3 files changed, 141 insertions(+), 8 deletions(-) create mode 100644 toolkit/content/tests/widgets/test_tabindex.xul diff --git a/content/xul/content/src/nsXULElement.cpp b/content/xul/content/src/nsXULElement.cpp index a6c51986aa3b..6b5269664be1 100644 --- a/content/xul/content/src/nsXULElement.cpp +++ b/content/xul/content/src/nsXULElement.cpp @@ -573,7 +573,7 @@ nsXULElement::IsFocusable(PRInt32 *aTabIndex) * * Confusingly, the supplied value for the aTabIndex argument may indicate * whether the element may be focused as a result of the -moz-user-focus - * property. + * property, where -1 means no and 0 means yes. * * For controls, the element cannot be focused and is not part of the tab * order if it is disabled. @@ -611,13 +611,20 @@ nsXULElement::IsFocusable(PRInt32 *aTabIndex) } if (aTabIndex) { - if (xulControl && HasAttr(kNameSpaceID_None, nsGkAtoms::tabindex)) { - // if either the aTabIndex argument or a specified tabindex is non-negative, - // the element becomes focusable. - PRInt32 tabIndex = 0; - xulControl->GetTabIndex(&tabIndex); - shouldFocus = *aTabIndex >= 0 || tabIndex >= 0; - *aTabIndex = tabIndex; + if (xulControl) { + if (HasAttr(kNameSpaceID_None, nsGkAtoms::tabindex)) { + // if either the aTabIndex argument or a specified tabindex is non-negative, + // the element becomes focusable. + PRInt32 tabIndex = 0; + xulControl->GetTabIndex(&tabIndex); + shouldFocus = *aTabIndex >= 0 || tabIndex >= 0; + *aTabIndex = tabIndex; + } + else { + // otherwise, if there is no tabindex attribute, just use the value of + // *aTabIndex to indicate focusability + shouldFocus = *aTabIndex >= 0; + } if (shouldFocus && sTabFocusModelAppliesToXUL && !(sTabFocusModel & eTabFocus_formElementsMask)) { diff --git a/toolkit/content/tests/widgets/Makefile.in b/toolkit/content/tests/widgets/Makefile.in index 699fd2084f65..5415c93abe4f 100644 --- a/toolkit/content/tests/widgets/Makefile.in +++ b/toolkit/content/tests/widgets/Makefile.in @@ -100,6 +100,7 @@ _TEST_FILES = test_bug360220.xul \ test_menu.xul \ test_menu_hide.xul \ test_focus.xul \ + test_tabindex.xul \ $(NULL) ifeq (,$(filter mac cocoa,$(MOZ_WIDGET_TOOLKIT))) diff --git a/toolkit/content/tests/widgets/test_tabindex.xul b/toolkit/content/tests/widgets/test_tabindex.xul new file mode 100644 index 000000000000..8ad0922b9185 --- /dev/null +++ b/toolkit/content/tests/widgets/test_tabindex.xul @@ -0,0 +1,125 @@ + + + + + + + + + + + +