diff --git a/mozilla/content/base/src/nsDocument.cpp b/mozilla/content/base/src/nsDocument.cpp index 7b65c1a2c00..6ff706d01b3 100644 --- a/mozilla/content/base/src/nsDocument.cpp +++ b/mozilla/content/base/src/nsDocument.cpp @@ -2369,6 +2369,19 @@ nsDocument::SetBoxObjectFor(nsIDOMElement* aElement, nsIBoxObject* aBoxObject) return NS_OK; } +NS_IMETHODIMP +nsDocument::GetDir(nsAWritableString& aDirection) +{ + aDirection.Assign(NS_LITERAL_STRING("ltr") ); + return NS_OK; +} + +NS_IMETHODIMP +nsDocument::SetDir(const nsAReadableString& aDirection) +{ + return NS_OK; +} + // // nsIDOMNode methods // diff --git a/mozilla/content/base/src/nsDocument.h b/mozilla/content/base/src/nsDocument.h index 978bd3fdce6..51707b114e4 100644 --- a/mozilla/content/base/src/nsDocument.h +++ b/mozilla/content/base/src/nsDocument.h @@ -371,6 +371,8 @@ public: NS_IMETHOD GetPlugins(nsIDOMPluginArray** aPlugins); NS_IMETHOD GetBoxObjectFor(nsIDOMElement* aElement, nsIBoxObject** aResult); NS_IMETHOD SetBoxObjectFor(nsIDOMElement* aElement, nsIBoxObject* aBoxObject); + NS_IMETHOD GetDir(nsAWritableString& aDirection); + NS_IMETHOD SetDir(const nsAReadableString& aDirection); // nsIDOMNode interface NS_DECL_IDOMNODE diff --git a/mozilla/content/xul/document/src/nsXULDocument.cpp b/mozilla/content/xul/document/src/nsXULDocument.cpp index 36286de4c05..a6e65af0547 100644 --- a/mozilla/content/xul/document/src/nsXULDocument.cpp +++ b/mozilla/content/xul/document/src/nsXULDocument.cpp @@ -2932,6 +2932,19 @@ nsXULDocument::GetPlugins(nsIDOMPluginArray** aPlugins) return NS_ERROR_NOT_IMPLEMENTED; } +NS_IMETHODIMP +nsXULDocument::GetDir(nsAWritableString& aDirection) +{ + aDirection.Assign(NS_LITERAL_STRING("ltr") ); + return NS_OK; +} + +NS_IMETHODIMP +nsXULDocument::SetDir(const nsAReadableString& aDirection) +{ + return NS_OK; +} + //---------------------------------------------------------------------- // // nsIDOMXULDocument interface diff --git a/mozilla/dom/public/coreDom/nsIDOMNSDocument.h b/mozilla/dom/public/coreDom/nsIDOMNSDocument.h index 98ff113ecaf..30edc745f88 100644 --- a/mozilla/dom/public/coreDom/nsIDOMNSDocument.h +++ b/mozilla/dom/public/coreDom/nsIDOMNSDocument.h @@ -44,6 +44,9 @@ public: NS_IMETHOD GetCharacterSet(nsAWritableString& aCharacterSet)=0; + NS_IMETHOD GetDir(nsAWritableString& aDir)=0; + NS_IMETHOD SetDir(const nsAReadableString& aDir)=0; + NS_IMETHOD GetPlugins(nsIDOMPluginArray** aPlugins)=0; NS_IMETHOD GetLocation(jsval* aLocation)=0; @@ -61,6 +64,8 @@ public: #define NS_DECL_IDOMNSDOCUMENT \ NS_IMETHOD GetCharacterSet(nsAWritableString& aCharacterSet); \ + NS_IMETHOD GetDir(nsAWritableString& aDir); \ + NS_IMETHOD SetDir(const nsAReadableString& aDir); \ NS_IMETHOD GetPlugins(nsIDOMPluginArray** aPlugins); \ NS_IMETHOD GetLocation(jsval* aLocation); \ NS_IMETHOD SetLocation(jsval aLocation); \ @@ -73,6 +78,8 @@ public: #define NS_FORWARD_IDOMNSDOCUMENT(_to) \ NS_IMETHOD GetCharacterSet(nsAWritableString& aCharacterSet) { return _to GetCharacterSet(aCharacterSet); } \ + NS_IMETHOD GetDir(nsAWritableString& aDir); \ + NS_IMETHOD SetDir(const nsAReadableString& aDir); \ NS_IMETHOD GetPlugins(nsIDOMPluginArray** aPlugins) { return _to GetPlugins(aPlugins); } \ NS_IMETHOD GetLocation(jsval* aLocation) { return _to GetLocation(aLocation); } \ NS_IMETHOD SetLocation(jsval aLocation) { return _to SetLocation(aLocation); } \ diff --git a/mozilla/dom/public/idl/coreDom/Document.idl b/mozilla/dom/public/idl/coreDom/Document.idl index 8701bad059c..f48f4380438 100644 --- a/mozilla/dom/public/idl/coreDom/Document.idl +++ b/mozilla/dom/public/idl/coreDom/Document.idl @@ -91,6 +91,7 @@ interface NSDocument { { 0x93, 0x2e, 0x00, 0x80, 0x5f, 0x8a, 0xdd, 0x32} } */ readonly attribute DOMString characterSet; + attribute DOMString dir; readonly attribute PluginArray plugins; attribute jsval location; diff --git a/mozilla/dom/public/nsDOMPropEnums.h b/mozilla/dom/public/nsDOMPropEnums.h index ee75a18cf6c..79760fcb0ff 100644 --- a/mozilla/dom/public/nsDOMPropEnums.h +++ b/mozilla/dom/public/nsDOMPropEnums.h @@ -768,6 +768,7 @@ enum nsDOMProp { NS_DOM_PROP_NOTATION_SYSTEMID, NS_DOM_PROP_NSDOCUMENT_CHARACTERSET, NS_DOM_PROP_NSDOCUMENT_CREATERANGE, + NS_DOM_PROP_NSDOCUMENT_DIR, NS_DOM_PROP_NSDOCUMENT_GETBOXOBJECTFOR, NS_DOM_PROP_NSDOCUMENT_LOAD, NS_DOM_PROP_NSDOCUMENT_LOCATION, diff --git a/mozilla/dom/public/nsDOMPropNames.h b/mozilla/dom/public/nsDOMPropNames.h index 34eccfc8d98..3e7a8fb3ad2 100644 --- a/mozilla/dom/public/nsDOMPropNames.h +++ b/mozilla/dom/public/nsDOMPropNames.h @@ -766,6 +766,7 @@ "notation.systemid", \ "nsdocument.characterset", \ "nsdocument.createrange", \ + "nsdocument.dir", \ "nsdocument.getboxobjectfor", \ "nsdocument.load", \ "nsdocument.location", \ diff --git a/mozilla/dom/src/coreDOM/nsJSDocument.cpp b/mozilla/dom/src/coreDOM/nsJSDocument.cpp index a87a83b072f..9d267f0485b 100644 --- a/mozilla/dom/src/coreDOM/nsJSDocument.cpp +++ b/mozilla/dom/src/coreDOM/nsJSDocument.cpp @@ -102,8 +102,9 @@ enum Document_slots { DOCUMENTSTYLE_STYLESHEETS = -4, DOCUMENTVIEW_DEFAULTVIEW = -5, NSDOCUMENT_CHARACTERSET = -6, - NSDOCUMENT_PLUGINS = -7, - NSDOCUMENT_LOCATION = -8 + NSDOCUMENT_DIR = -7, + NSDOCUMENT_PLUGINS = -8, + NSDOCUMENT_LOCATION = -9 }; /***********************************************************************/ @@ -224,6 +225,25 @@ GetDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) } break; } + case NSDOCUMENT_DIR: + { + rv = secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSDOCUMENT_DIR, PR_FALSE); + if (NS_SUCCEEDED(rv)) { + nsAutoString prop; + nsIDOMNSDocument* b; + if (NS_OK == a->QueryInterface(kINSDocumentIID, (void **)&b)) { + rv = b->GetDir(prop); + if(NS_SUCCEEDED(rv)) { + nsJSUtils::nsConvertStringToJSVal(prop, cx, vp); + } + NS_RELEASE(b); + } + else { + rv = NS_ERROR_DOM_WRONG_TYPE_ERR; + } + } + break; + } case NSDOCUMENT_PLUGINS: { rv = secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSDOCUMENT_PLUGINS, PR_FALSE); @@ -292,6 +312,26 @@ SetDocumentProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp) if (!secMan) return PR_FALSE; switch(JSVAL_TO_INT(id)) { + case NSDOCUMENT_DIR: + { + rv = secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSDOCUMENT_DIR, PR_TRUE); + if (NS_SUCCEEDED(rv)) { + nsAutoString prop; + nsJSUtils::nsConvertJSValToString(prop, cx, *vp); + + nsIDOMNSDocument *b; + if (NS_OK == a->QueryInterface(kINSDocumentIID, (void **)&b)) { + b->SetDir(prop); + NS_RELEASE(b); + } + else { + + rv = NS_ERROR_DOM_WRONG_TYPE_ERR; + } + + } + break; + } case NSDOCUMENT_LOCATION: { rv = secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_NSDOCUMENT_LOCATION, PR_TRUE); @@ -337,6 +377,7 @@ static JSPropertySpec DocumentProperties[] = {"styleSheets", DOCUMENTSTYLE_STYLESHEETS, JSPROP_ENUMERATE | JSPROP_READONLY}, {"defaultView", DOCUMENTVIEW_DEFAULTVIEW, JSPROP_ENUMERATE | JSPROP_READONLY}, {"characterSet", NSDOCUMENT_CHARACTERSET, JSPROP_ENUMERATE | JSPROP_READONLY}, + {"dir", NSDOCUMENT_DIR, JSPROP_ENUMERATE}, {"plugins", NSDOCUMENT_PLUGINS, JSPROP_ENUMERATE | JSPROP_READONLY}, {"location", NSDOCUMENT_LOCATION, JSPROP_ENUMERATE}, {0}