diff --git a/content/html/document/src/nsHTMLContentSink.cpp b/content/html/document/src/nsHTMLContentSink.cpp
index ebf392c2783c..82e24e805187 100644
--- a/content/html/document/src/nsHTMLContentSink.cpp
+++ b/content/html/document/src/nsHTMLContentSink.cpp
@@ -23,6 +23,7 @@
#include "nsHTMLDocument.h"
#include "nsIPresShell.h"
#include "nsIPresContext.h"
+#include "nsIViewManager.h"
#include "nsHTMLTokens.h"
#include "nsCRT.h"
#include "prtime.h"
@@ -132,7 +133,7 @@ public:
virtual PRBool AddLeaf(const nsIParserNode& aNode);
virtual void WillBuildModel(void);
- virtual void DidBuildModel(void);
+ virtual void DidBuildModel(PRInt32 aQualityLevel);
virtual void WillInterrupt(void);
virtual void WillResume(void);
@@ -1367,16 +1368,31 @@ HTMLContentSink::WillBuildModel(void)
StartLayout();
}
+
/**
* This method gets called when the parser concludes the process
* of building the content model via the content sink.
*
- * @update 5/7/98 gess
+ * @param aQualityLevel describes how well formed the doc was.
+ * 0=GOOD; 1=FAIR; 2=POOR;
+ * @update 6/21/98 gess
*/
-void
-HTMLContentSink::DidBuildModel(void)
-{
+void HTMLContentSink::DidBuildModel(PRInt32 aQualityLevel) {
PR_LogPrint("DidBuildModel");
+
+ PRInt32 i, ns = mDocument->GetNumberOfShells();
+ for (i = 0; i < ns; i++) {
+ nsIPresShell* shell = mDocument->GetShellAt(i);
+ if (nsnull != shell) {
+ nsIViewManager* vm = shell->GetViewManager();
+ if(vm) {
+ vm->SetQuality(nsContentQuality(aQualityLevel));
+ }
+ NS_RELEASE(vm);
+ NS_RELEASE(shell);
+ }
+ }
+
ReflowNewContent();
mDocument->EndLoad();
}
@@ -1404,6 +1420,7 @@ HTMLContentSink::WillResume(void)
{
}
+
//----------------------------------------------------------------------
nsresult NS_NewHTMLContentSink(nsIHTMLContentSink** aInstancePtrResult,
diff --git a/htmlparser/src/CNavDTD.cpp b/htmlparser/src/CNavDTD.cpp
index ccfab970e1e1..db531c7579d0 100644
--- a/htmlparser/src/CNavDTD.cpp
+++ b/htmlparser/src/CNavDTD.cpp
@@ -301,7 +301,7 @@ PRInt32 CNavDTD::DidBuildModel(PRInt32 anErrorCode){
CloseContainersTo(0,eHTMLTag_unknown,PR_FALSE);
}
if(mSink) {
- mSink->DidBuildModel();
+ mSink->DidBuildModel(1);
}
return result;
diff --git a/htmlparser/src/COtherDTD.cpp b/htmlparser/src/COtherDTD.cpp
index 34576ef25a04..702336c0dc88 100644
--- a/htmlparser/src/COtherDTD.cpp
+++ b/htmlparser/src/COtherDTD.cpp
@@ -303,7 +303,7 @@ PRInt32 COtherDTD::DidBuildModel(PRInt32 anErrorCode){
CloseContainersTo(0,eHTMLTag_unknown,PR_FALSE);
}
if(mSink) {
- mSink->DidBuildModel();
+ mSink->DidBuildModel(0);
}
return result;
diff --git a/htmlparser/src/nsHTMLContentSink.cpp b/htmlparser/src/nsHTMLContentSink.cpp
index 3e355127b734..864573e8696c 100644
--- a/htmlparser/src/nsHTMLContentSink.cpp
+++ b/htmlparser/src/nsHTMLContentSink.cpp
@@ -442,7 +442,7 @@ void nsHTMLContentSink::WillBuildModel(void){
*
* @update 5/7/98 gess
*/
-void nsHTMLContentSink::DidBuildModel(void){
+void nsHTMLContentSink::DidBuildModel(PRInt32 aQualityLevel){
}
/**
@@ -465,3 +465,4 @@ void nsHTMLContentSink::WillResume(void) {
}
+
diff --git a/htmlparser/src/nsHTMLContentSink.h b/htmlparser/src/nsHTMLContentSink.h
index 21e2f8954823..afc368ac34ba 100644
--- a/htmlparser/src/nsHTMLContentSink.h
+++ b/htmlparser/src/nsHTMLContentSink.h
@@ -127,9 +127,11 @@ class nsHTMLContentSink : public nsIHTMLContentSink {
* This method gets called when the parser concludes the process
* of building the content model via the content sink.
*
+ * @param aQualityLevel describes how well formed the doc was.
+ * 0=GOOD; 1=FAIR; 2=POOR;
* @update 5/7/98 gess
*/
- virtual void DidBuildModel(void);
+ virtual void DidBuildModel(PRInt32 aQualityLevel);
/**
* This method gets called when the parser gets i/o blocked,
diff --git a/htmlparser/src/nsIContentSink.h b/htmlparser/src/nsIContentSink.h
index 425ebc0c68b6..08222789f569 100644
--- a/htmlparser/src/nsIContentSink.h
+++ b/htmlparser/src/nsIContentSink.h
@@ -92,9 +92,11 @@ class nsIContentSink : public nsISupports {
* This method gets called when the parser concludes the process
* of building the content model via the content sink.
*
+ * @param aQualityLevel describes how well formed the doc was.
+ * 0=GOOD; 1=FAIR; 2=POOR;
* @update 5/7/98 gess
*/
- virtual void DidBuildModel(void)=0;
+ virtual void DidBuildModel(PRInt32 aQualityLevel)=0;
/**
* This method gets called when the parser gets i/o blocked,
diff --git a/htmlparser/src/nsIHTMLContentSink.h b/htmlparser/src/nsIHTMLContentSink.h
index a75f5813c2b2..8eb6934f33e5 100644
--- a/htmlparser/src/nsIHTMLContentSink.h
+++ b/htmlparser/src/nsIHTMLContentSink.h
@@ -226,9 +226,11 @@ class nsIHTMLContentSink : public nsIContentSink {
* This method gets called when the parser concludes the process
* of building the content model via the content sink.
*
+ * @param aQualityLevel describes how well formed the doc was.
+ * 0=GOOD; 1=FAIR; 2=POOR;
* @update 5/7/98 gess
*/
- virtual void DidBuildModel(void)=0;
+ virtual void DidBuildModel(PRInt32 aQualityLevel)=0;
/**
* This method gets called when the parser gets i/o blocked,
@@ -246,6 +248,7 @@ class nsIHTMLContentSink : public nsIContentSink {
* @update 5/7/98 gess
*/
virtual void WillResume(void)=0;
+
};
diff --git a/layout/html/document/src/nsHTMLContentSink.cpp b/layout/html/document/src/nsHTMLContentSink.cpp
index ebf392c2783c..82e24e805187 100644
--- a/layout/html/document/src/nsHTMLContentSink.cpp
+++ b/layout/html/document/src/nsHTMLContentSink.cpp
@@ -23,6 +23,7 @@
#include "nsHTMLDocument.h"
#include "nsIPresShell.h"
#include "nsIPresContext.h"
+#include "nsIViewManager.h"
#include "nsHTMLTokens.h"
#include "nsCRT.h"
#include "prtime.h"
@@ -132,7 +133,7 @@ public:
virtual PRBool AddLeaf(const nsIParserNode& aNode);
virtual void WillBuildModel(void);
- virtual void DidBuildModel(void);
+ virtual void DidBuildModel(PRInt32 aQualityLevel);
virtual void WillInterrupt(void);
virtual void WillResume(void);
@@ -1367,16 +1368,31 @@ HTMLContentSink::WillBuildModel(void)
StartLayout();
}
+
/**
* This method gets called when the parser concludes the process
* of building the content model via the content sink.
*
- * @update 5/7/98 gess
+ * @param aQualityLevel describes how well formed the doc was.
+ * 0=GOOD; 1=FAIR; 2=POOR;
+ * @update 6/21/98 gess
*/
-void
-HTMLContentSink::DidBuildModel(void)
-{
+void HTMLContentSink::DidBuildModel(PRInt32 aQualityLevel) {
PR_LogPrint("DidBuildModel");
+
+ PRInt32 i, ns = mDocument->GetNumberOfShells();
+ for (i = 0; i < ns; i++) {
+ nsIPresShell* shell = mDocument->GetShellAt(i);
+ if (nsnull != shell) {
+ nsIViewManager* vm = shell->GetViewManager();
+ if(vm) {
+ vm->SetQuality(nsContentQuality(aQualityLevel));
+ }
+ NS_RELEASE(vm);
+ NS_RELEASE(shell);
+ }
+ }
+
ReflowNewContent();
mDocument->EndLoad();
}
@@ -1404,6 +1420,7 @@ HTMLContentSink::WillResume(void)
{
}
+
//----------------------------------------------------------------------
nsresult NS_NewHTMLContentSink(nsIHTMLContentSink** aInstancePtrResult,
diff --git a/parser/htmlparser/src/CNavDTD.cpp b/parser/htmlparser/src/CNavDTD.cpp
index ccfab970e1e1..db531c7579d0 100644
--- a/parser/htmlparser/src/CNavDTD.cpp
+++ b/parser/htmlparser/src/CNavDTD.cpp
@@ -301,7 +301,7 @@ PRInt32 CNavDTD::DidBuildModel(PRInt32 anErrorCode){
CloseContainersTo(0,eHTMLTag_unknown,PR_FALSE);
}
if(mSink) {
- mSink->DidBuildModel();
+ mSink->DidBuildModel(1);
}
return result;
diff --git a/parser/htmlparser/src/COtherDTD.cpp b/parser/htmlparser/src/COtherDTD.cpp
index 34576ef25a04..702336c0dc88 100644
--- a/parser/htmlparser/src/COtherDTD.cpp
+++ b/parser/htmlparser/src/COtherDTD.cpp
@@ -303,7 +303,7 @@ PRInt32 COtherDTD::DidBuildModel(PRInt32 anErrorCode){
CloseContainersTo(0,eHTMLTag_unknown,PR_FALSE);
}
if(mSink) {
- mSink->DidBuildModel();
+ mSink->DidBuildModel(0);
}
return result;
diff --git a/parser/htmlparser/src/nsHTMLContentSink.cpp b/parser/htmlparser/src/nsHTMLContentSink.cpp
index 3e355127b734..864573e8696c 100644
--- a/parser/htmlparser/src/nsHTMLContentSink.cpp
+++ b/parser/htmlparser/src/nsHTMLContentSink.cpp
@@ -442,7 +442,7 @@ void nsHTMLContentSink::WillBuildModel(void){
*
* @update 5/7/98 gess
*/
-void nsHTMLContentSink::DidBuildModel(void){
+void nsHTMLContentSink::DidBuildModel(PRInt32 aQualityLevel){
}
/**
@@ -465,3 +465,4 @@ void nsHTMLContentSink::WillResume(void) {
}
+
diff --git a/parser/htmlparser/src/nsHTMLContentSink.h b/parser/htmlparser/src/nsHTMLContentSink.h
index 21e2f8954823..afc368ac34ba 100644
--- a/parser/htmlparser/src/nsHTMLContentSink.h
+++ b/parser/htmlparser/src/nsHTMLContentSink.h
@@ -127,9 +127,11 @@ class nsHTMLContentSink : public nsIHTMLContentSink {
* This method gets called when the parser concludes the process
* of building the content model via the content sink.
*
+ * @param aQualityLevel describes how well formed the doc was.
+ * 0=GOOD; 1=FAIR; 2=POOR;
* @update 5/7/98 gess
*/
- virtual void DidBuildModel(void);
+ virtual void DidBuildModel(PRInt32 aQualityLevel);
/**
* This method gets called when the parser gets i/o blocked,
diff --git a/parser/htmlparser/src/nsIContentSink.h b/parser/htmlparser/src/nsIContentSink.h
index 425ebc0c68b6..08222789f569 100644
--- a/parser/htmlparser/src/nsIContentSink.h
+++ b/parser/htmlparser/src/nsIContentSink.h
@@ -92,9 +92,11 @@ class nsIContentSink : public nsISupports {
* This method gets called when the parser concludes the process
* of building the content model via the content sink.
*
+ * @param aQualityLevel describes how well formed the doc was.
+ * 0=GOOD; 1=FAIR; 2=POOR;
* @update 5/7/98 gess
*/
- virtual void DidBuildModel(void)=0;
+ virtual void DidBuildModel(PRInt32 aQualityLevel)=0;
/**
* This method gets called when the parser gets i/o blocked,
diff --git a/parser/htmlparser/src/nsIHTMLContentSink.h b/parser/htmlparser/src/nsIHTMLContentSink.h
index a75f5813c2b2..8eb6934f33e5 100644
--- a/parser/htmlparser/src/nsIHTMLContentSink.h
+++ b/parser/htmlparser/src/nsIHTMLContentSink.h
@@ -226,9 +226,11 @@ class nsIHTMLContentSink : public nsIContentSink {
* This method gets called when the parser concludes the process
* of building the content model via the content sink.
*
+ * @param aQualityLevel describes how well formed the doc was.
+ * 0=GOOD; 1=FAIR; 2=POOR;
* @update 5/7/98 gess
*/
- virtual void DidBuildModel(void)=0;
+ virtual void DidBuildModel(PRInt32 aQualityLevel)=0;
/**
* This method gets called when the parser gets i/o blocked,
@@ -246,6 +248,7 @@ class nsIHTMLContentSink : public nsIContentSink {
* @update 5/7/98 gess
*/
virtual void WillResume(void)=0;
+
};