From 447912a6751d7777645e63d5d6092d891b38014c Mon Sep 17 00:00:00 2001 From: "rods%netscape.com" Date: Wed, 27 Mar 2002 03:02:42 +0000 Subject: [PATCH] Reads the "brand name" property and then caches it so it can use it on documents with no title. Bug 133193 r=dcone sr=attinasi a=dbaron --- content/base/src/nsDocumentViewer.cpp | 43 ++++++++++++++++++++++----- layout/base/nsDocumentViewer.cpp | 43 ++++++++++++++++++++++----- 2 files changed, 70 insertions(+), 16 deletions(-) diff --git a/content/base/src/nsDocumentViewer.cpp b/content/base/src/nsDocumentViewer.cpp index cfa9446a771..6ab41e691b6 100644 --- a/content/base/src/nsDocumentViewer.cpp +++ b/content/base/src/nsDocumentViewer.cpp @@ -451,6 +451,7 @@ public: PRBool mIsCachingPresentation; CachedPresentationObj* mCachedPresObj; + PRUnichar* mBrandName; // needed as a substitute name for a document #ifdef DEBUG_PRINTING FILE * mDebugFD; @@ -521,6 +522,7 @@ public: enum eDocTitleDefault {eDocTitleDefNone, eDocTitleDefBlank, eDocTitleDefDocument, eDocTitleDefURLDoc}; static void GetDisplayTitleAndURL(PrintObject* aPO, nsIPrintSettings* aPrintSettings, + const PRUnichar* aBrandName, PRUnichar** aTitle, PRUnichar** aURLStr, eDocTitleDefault aDefType = eDocTitleDefNone); @@ -846,11 +848,25 @@ PrintData::PrintData() : mShrinkToFit(PR_FALSE), mPrintFrameType(nsIPrintSettings::kFramesAsIs), mNumPrintableDocs(0), mNumDocsPrinted(0), mNumPrintablePages(0), mNumPagesPrinted(0), mShrinkRatio(1.0), mOrigDCScale(1.0), mPPEventListeners(NULL), - mIsCachingPresentation(PR_FALSE), mCachedPresObj(nsnull) + mIsCachingPresentation(PR_FALSE), mCachedPresObj(nsnull), mBrandName(nsnull) { #ifdef DEBUG_PRINTING mDebugFD = fopen("printing.log", "w"); #endif + + nsCOMPtr brandBundle; + nsCOMPtr svc( do_GetService( NS_STRINGBUNDLE_CONTRACTID ) ); + if (svc) { + svc->CreateBundle( "chrome://global/locale/brand.properties", getter_AddRefs( brandBundle ) ); + if (brandBundle) { + brandBundle->GetStringFromName(NS_LITERAL_STRING("brandShortName").get(), &mBrandName ); + } + } + + if (!mBrandName) { + mBrandName = ToNewUnicode(NS_LITERAL_STRING("Mozilla Document")); + } + } PrintData::~PrintData() @@ -896,6 +912,10 @@ PrintData::~PrintData() delete mPrintDocList; } + if (mBrandName) { + nsCRT::free(mBrandName); + } + #ifdef DEBUG_PRINTING fclose(mDebugFD); #endif @@ -2123,9 +2143,10 @@ static void GetDocTitleAndURL(PrintObject* aPO, char *& aDocStr, char *& aURLStr aDocStr = nsnull; aURLStr = nsnull; + PRUnichar * mozillaDoc = ToNewUnicode(NS_LITERAL_STRING("Mozilla Document")); PRUnichar * docTitleStr; PRUnichar * docURLStr; - DocumentViewerImpl::GetDisplayTitleAndURL(aPO, nsnull, &docTitleStr, &docURLStr, DocumentViewerImpl::eDocTitleDefURLDoc); + DocumentViewerImpl::GetDisplayTitleAndURL(aPO, nsnull, mozillaDoc, &docTitleStr, &docURLStr, DocumentViewerImpl::eDocTitleDefURLDoc); if (docTitleStr) { nsAutoString strDocTitle(docTitleStr); @@ -2138,6 +2159,10 @@ static void GetDocTitleAndURL(PrintObject* aPO, char *& aDocStr, char *& aURLStr aURLStr = ToNewCString(strURL); nsMemory::Free(docURLStr); } + + if (mozillaDoc) { + nsMemory::Free(mozillaDoc); + } } static void DumpPrintObjectsTreeLayout(PrintObject * aPO, @@ -2555,12 +2580,14 @@ DocumentViewerImpl::GetWebShellTitleAndURL(nsIWebShell * aWebShell, // then if not title is there we will make sure we send something back // depending on the situation. void -DocumentViewerImpl::GetDisplayTitleAndURL(PrintObject* aPO, +DocumentViewerImpl::GetDisplayTitleAndURL(PrintObject* aPO, nsIPrintSettings* aPrintSettings, + const PRUnichar* aBrandName, PRUnichar** aTitle, PRUnichar** aURLStr, eDocTitleDefault aDefType) { + NS_ASSERTION(aBrandName, "Pointer is null!"); NS_ASSERTION(aPO, "Pointer is null!"); NS_ASSERTION(aTitle, "Pointer is null!"); NS_ASSERTION(aURLStr, "Pointer is null!"); @@ -2604,14 +2631,14 @@ DocumentViewerImpl::GetDisplayTitleAndURL(PrintObject* aPO, case eDocTitleDefBlank: *aTitle = ToNewUnicode(NS_LITERAL_STRING("")); break; - case eDocTitleDefDocument: *aTitle = ToNewUnicode(NS_LITERAL_STRING("Mozilla Document")); + case eDocTitleDefDocument: if (aBrandName) *aTitle = nsCRT::strdup(aBrandName); break; case eDocTitleDefURLDoc: if (*aURLStr) { *aTitle = nsCRT::strdup(*aURLStr); } else { - *aTitle = ToNewUnicode(NS_LITERAL_STRING("Mozilla Document")); + if (aBrandName) *aTitle = nsCRT::strdup(aBrandName); } break; @@ -4281,7 +4308,7 @@ DocumentViewerImpl::DoPrint(PrintObject * aPO, PRBool aDoSyncPrinting, PRBool& a if (!skipSetTitle) { PRUnichar * docTitleStr; PRUnichar * docURLStr; - GetDisplayTitleAndURL(aPO, mPrt->mPrintSettings, &docTitleStr, &docURLStr, eDocTitleDefBlank); + GetDisplayTitleAndURL(aPO, mPrt->mPrintSettings, mPrt->mBrandName, &docTitleStr, &docURLStr, eDocTitleDefBlank); // Set them down into the PrintOptions so // they can used by the DeviceContext @@ -6066,7 +6093,7 @@ DocumentViewerImpl::SetDocAndURLIntoProgress(PrintObject* aPO, nsIPrintProgressP PRUnichar * docTitleStr; PRUnichar * docURLStr; - GetDisplayTitleAndURL(aPO, mPrt->mPrintSettings, &docTitleStr, &docURLStr, eDocTitleDefDocument); + GetDisplayTitleAndURL(aPO, mPrt->mPrintSettings, mPrt->mBrandName, &docTitleStr, &docURLStr, eDocTitleDefDocument); // Make sure the URLS don't get too long for the progress dialog if (docURLStr && nsCRT::strlen(docURLStr) > kTitleLength) { @@ -6489,7 +6516,7 @@ DocumentViewerImpl::Print(nsIPrintSettings* aPrintSettings, PRUnichar * docTitleStr; PRUnichar * docURLStr; - GetDisplayTitleAndURL(mPrt->mPrintObject, mPrt->mPrintSettings, &docTitleStr, &docURLStr, eDocTitleDefURLDoc); + GetDisplayTitleAndURL(mPrt->mPrintObject, mPrt->mPrintSettings, mPrt->mBrandName, &docTitleStr, &docURLStr, eDocTitleDefURLDoc); // BeginDocument may pass back a FAILURE code // i.e. On Windows, if you are printing to a file and hit "Cancel" diff --git a/layout/base/nsDocumentViewer.cpp b/layout/base/nsDocumentViewer.cpp index cfa9446a771..6ab41e691b6 100644 --- a/layout/base/nsDocumentViewer.cpp +++ b/layout/base/nsDocumentViewer.cpp @@ -451,6 +451,7 @@ public: PRBool mIsCachingPresentation; CachedPresentationObj* mCachedPresObj; + PRUnichar* mBrandName; // needed as a substitute name for a document #ifdef DEBUG_PRINTING FILE * mDebugFD; @@ -521,6 +522,7 @@ public: enum eDocTitleDefault {eDocTitleDefNone, eDocTitleDefBlank, eDocTitleDefDocument, eDocTitleDefURLDoc}; static void GetDisplayTitleAndURL(PrintObject* aPO, nsIPrintSettings* aPrintSettings, + const PRUnichar* aBrandName, PRUnichar** aTitle, PRUnichar** aURLStr, eDocTitleDefault aDefType = eDocTitleDefNone); @@ -846,11 +848,25 @@ PrintData::PrintData() : mShrinkToFit(PR_FALSE), mPrintFrameType(nsIPrintSettings::kFramesAsIs), mNumPrintableDocs(0), mNumDocsPrinted(0), mNumPrintablePages(0), mNumPagesPrinted(0), mShrinkRatio(1.0), mOrigDCScale(1.0), mPPEventListeners(NULL), - mIsCachingPresentation(PR_FALSE), mCachedPresObj(nsnull) + mIsCachingPresentation(PR_FALSE), mCachedPresObj(nsnull), mBrandName(nsnull) { #ifdef DEBUG_PRINTING mDebugFD = fopen("printing.log", "w"); #endif + + nsCOMPtr brandBundle; + nsCOMPtr svc( do_GetService( NS_STRINGBUNDLE_CONTRACTID ) ); + if (svc) { + svc->CreateBundle( "chrome://global/locale/brand.properties", getter_AddRefs( brandBundle ) ); + if (brandBundle) { + brandBundle->GetStringFromName(NS_LITERAL_STRING("brandShortName").get(), &mBrandName ); + } + } + + if (!mBrandName) { + mBrandName = ToNewUnicode(NS_LITERAL_STRING("Mozilla Document")); + } + } PrintData::~PrintData() @@ -896,6 +912,10 @@ PrintData::~PrintData() delete mPrintDocList; } + if (mBrandName) { + nsCRT::free(mBrandName); + } + #ifdef DEBUG_PRINTING fclose(mDebugFD); #endif @@ -2123,9 +2143,10 @@ static void GetDocTitleAndURL(PrintObject* aPO, char *& aDocStr, char *& aURLStr aDocStr = nsnull; aURLStr = nsnull; + PRUnichar * mozillaDoc = ToNewUnicode(NS_LITERAL_STRING("Mozilla Document")); PRUnichar * docTitleStr; PRUnichar * docURLStr; - DocumentViewerImpl::GetDisplayTitleAndURL(aPO, nsnull, &docTitleStr, &docURLStr, DocumentViewerImpl::eDocTitleDefURLDoc); + DocumentViewerImpl::GetDisplayTitleAndURL(aPO, nsnull, mozillaDoc, &docTitleStr, &docURLStr, DocumentViewerImpl::eDocTitleDefURLDoc); if (docTitleStr) { nsAutoString strDocTitle(docTitleStr); @@ -2138,6 +2159,10 @@ static void GetDocTitleAndURL(PrintObject* aPO, char *& aDocStr, char *& aURLStr aURLStr = ToNewCString(strURL); nsMemory::Free(docURLStr); } + + if (mozillaDoc) { + nsMemory::Free(mozillaDoc); + } } static void DumpPrintObjectsTreeLayout(PrintObject * aPO, @@ -2555,12 +2580,14 @@ DocumentViewerImpl::GetWebShellTitleAndURL(nsIWebShell * aWebShell, // then if not title is there we will make sure we send something back // depending on the situation. void -DocumentViewerImpl::GetDisplayTitleAndURL(PrintObject* aPO, +DocumentViewerImpl::GetDisplayTitleAndURL(PrintObject* aPO, nsIPrintSettings* aPrintSettings, + const PRUnichar* aBrandName, PRUnichar** aTitle, PRUnichar** aURLStr, eDocTitleDefault aDefType) { + NS_ASSERTION(aBrandName, "Pointer is null!"); NS_ASSERTION(aPO, "Pointer is null!"); NS_ASSERTION(aTitle, "Pointer is null!"); NS_ASSERTION(aURLStr, "Pointer is null!"); @@ -2604,14 +2631,14 @@ DocumentViewerImpl::GetDisplayTitleAndURL(PrintObject* aPO, case eDocTitleDefBlank: *aTitle = ToNewUnicode(NS_LITERAL_STRING("")); break; - case eDocTitleDefDocument: *aTitle = ToNewUnicode(NS_LITERAL_STRING("Mozilla Document")); + case eDocTitleDefDocument: if (aBrandName) *aTitle = nsCRT::strdup(aBrandName); break; case eDocTitleDefURLDoc: if (*aURLStr) { *aTitle = nsCRT::strdup(*aURLStr); } else { - *aTitle = ToNewUnicode(NS_LITERAL_STRING("Mozilla Document")); + if (aBrandName) *aTitle = nsCRT::strdup(aBrandName); } break; @@ -4281,7 +4308,7 @@ DocumentViewerImpl::DoPrint(PrintObject * aPO, PRBool aDoSyncPrinting, PRBool& a if (!skipSetTitle) { PRUnichar * docTitleStr; PRUnichar * docURLStr; - GetDisplayTitleAndURL(aPO, mPrt->mPrintSettings, &docTitleStr, &docURLStr, eDocTitleDefBlank); + GetDisplayTitleAndURL(aPO, mPrt->mPrintSettings, mPrt->mBrandName, &docTitleStr, &docURLStr, eDocTitleDefBlank); // Set them down into the PrintOptions so // they can used by the DeviceContext @@ -6066,7 +6093,7 @@ DocumentViewerImpl::SetDocAndURLIntoProgress(PrintObject* aPO, nsIPrintProgressP PRUnichar * docTitleStr; PRUnichar * docURLStr; - GetDisplayTitleAndURL(aPO, mPrt->mPrintSettings, &docTitleStr, &docURLStr, eDocTitleDefDocument); + GetDisplayTitleAndURL(aPO, mPrt->mPrintSettings, mPrt->mBrandName, &docTitleStr, &docURLStr, eDocTitleDefDocument); // Make sure the URLS don't get too long for the progress dialog if (docURLStr && nsCRT::strlen(docURLStr) > kTitleLength) { @@ -6489,7 +6516,7 @@ DocumentViewerImpl::Print(nsIPrintSettings* aPrintSettings, PRUnichar * docTitleStr; PRUnichar * docURLStr; - GetDisplayTitleAndURL(mPrt->mPrintObject, mPrt->mPrintSettings, &docTitleStr, &docURLStr, eDocTitleDefURLDoc); + GetDisplayTitleAndURL(mPrt->mPrintObject, mPrt->mPrintSettings, mPrt->mBrandName, &docTitleStr, &docURLStr, eDocTitleDefURLDoc); // BeginDocument may pass back a FAILURE code // i.e. On Windows, if you are printing to a file and hit "Cancel"