diff --git a/mozilla/content/html/document/src/nsHTMLDocument.cpp b/mozilla/content/html/document/src/nsHTMLDocument.cpp
index 32192dd85b5..e33dba016c7 100644
--- a/mozilla/content/html/document/src/nsHTMLDocument.cpp
+++ b/mozilla/content/html/document/src/nsHTMLDocument.cpp
@@ -3051,6 +3051,26 @@ nsHTMLDocument::RouteEvent(nsIDOMEvent* aEvt)
return NS_OK;
}
+// readonly attribute DOMString compatMode;
+// Returns "BackCompat" if we are in quirks mode,
+// "CSS1Compat" if we are in strict mode. See bug 105640.
+// This was implemented to match MSIE's compatMode property
+NS_IMETHODIMP
+nsHTMLDocument::GetCompatMode(nsAWritableString& aCompatMode)
+{
+ aCompatMode.Truncate();
+ NS_ASSERTION((mDTDMode == eDTDMode_quirks) || (mDTDMode == eDTDMode_strict),
+ "mDTDMode is neither quirks nor strict for this document");
+
+ if (mDTDMode == eDTDMode_quirks) {
+ aCompatMode.Assign(NS_LITERAL_STRING("BackCompat"));
+ } else {
+ aCompatMode.Assign(NS_LITERAL_STRING("CSS1Compat"));
+ }
+
+ return NS_OK;
+}
+
static PRBool PR_CALLBACK
NameHashCleanupEnumeratorCallback(nsHashKey *aKey, void *aData, void* closure)
{
diff --git a/mozilla/dom/public/idl/html/nsIDOMNSHTMLDocument.idl b/mozilla/dom/public/idl/html/nsIDOMNSHTMLDocument.idl
index 77ef15b085b..31a2508c48d 100644
--- a/mozilla/dom/public/idl/html/nsIDOMNSHTMLDocument.idl
+++ b/mozilla/dom/public/idl/html/nsIDOMNSHTMLDocument.idl
@@ -64,4 +64,6 @@ interface nsIDOMNSHTMLDocument : nsISupports
void captureEvents(in long eventFlags);
void releaseEvents(in long eventFlags);
void routeEvent(in nsIDOMEvent evt);
+
+ readonly attribute DOMString compatMode;
};