[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/KDE/4.6/kdelibs/khtml
From:       Maks Orlovich <maksim () kde ! org>
Date:       2011-01-19 1:00:42
Message-ID: 20110119010042.03CAEAC8B7 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1215545 by orlovich:

Merged revision:r1215544 | orlovich | 2011-01-18 19:59:02 -0500 (Tue, 18 \
Jan 2011) | 18 lines


Various fixes for the new twitter website:
1) The alleged DOM 0 DOMNode::item doesn't exist in Gecko and WebCore at \
least, and it confuses the script loader (as we have NodeList-like .item, \
but not an  index [[Get]]). Remove it, but add one to HTMLSelectElement as \
that's legit  HTML5.

2) When document.domain is set to the present domain, we still want to call
setDomainFromDOM(), as it would set the 'script-set domain' bit moving the
origin into that namespace --- otherwise it will be inaccessible to other
things that opted in.

3) XMLHttpRequest should complete relative URLs in its own context, not the
dynamic one.

BUG: 261041

 M  +0 -6      ecma/kjs_dom.cpp  
 M  +1 -1      ecma/kjs_dom.h  
 M  +5 -0      ecma/kjs_html.cpp  
 M  +1 -1      ecma/kjs_html.h  
 M  +1 -4      ecma/xmlhttprequest.cpp  
 M  +7 -2      xml/dom_docimpl.cpp  


--- branches/KDE/4.6/kdelibs/khtml/ecma/kjs_dom.cpp #1215544:1215545
@@ -107,8 +107,6 @@
 # IE extensions
   contains	DOMNode::Contains		DontDelete|Function 1
   insertAdjacentHTML	DOMNode::InsertAdjacentHTML	DontDelete|Function 2
-# "DOM level 0" (from Gecko DOM reference; also in WinIE)
-  item          DOMNode::Item           DontDelete|Function 1
 @end
 */
 KJS_IMPLEMENT_PROTOFUNC(DOMNodeProtoFunc)
@@ -693,10 +691,6 @@
 
       return jsUndefined();
     }
-    case DOMNode::Item: {
-      SharedPtr<NodeListImpl> childNodes = node.childNodes();
-      return getDOMNode(exec, childNodes->item(static_cast<unsigned \
                long>(args[0]->toNumber(exec))));
-    }
     case DOMNode::CompareDocumentPosition: {
        DOM::NodeImpl* other = toNode(args[0]);
        if (!other)
--- branches/KDE/4.6/kdelibs/khtml/ecma/kjs_dom.h #1215544:1215545
@@ -56,7 +56,7 @@
     virtual void pushEventHandlerScope(ExecState *exec, ScopeChain &scope) \
const;  
     enum { NodeName, NodeValue, NodeType, ParentNode, ParentElement,
-           ChildNodes, FirstChild, LastChild, PreviousSibling, \
NextSibling, Item, +           ChildNodes, FirstChild, LastChild, \
                PreviousSibling, NextSibling, 
            Attributes, NamespaceURI, Prefix, LocalName, OwnerDocument, \
                InsertBefore,
            ReplaceChild, RemoveChild, AppendChild, HasAttributes, \
                HasChildNodes,
            CloneNode, Normalize, IsSupported, AddEventListener, \
                RemoveEventListener,
--- branches/KDE/4.6/kdelibs/khtml/ecma/kjs_html.cpp #1215544:1215545
@@ -808,6 +808,7 @@
 @end
 @begin HTMLSelectElementProtoTable 4
   add		KJS::HTMLElement::SelectAdd	DontDelete|Function 2
+  item		KJS::HTMLElement::SelectItem	DontDelete|Function 1
   remove	KJS::HTMLElement::SelectRemove	DontDelete|Function 1
 @end
 @begin HTMLOptGroupElementTable 2
@@ -2206,6 +2207,10 @@
         select.add(toHTMLElement(args[0]),toHTMLElement(args[1]),exception);
  return jsUndefined();
       }
+      else if (id == KJS::HTMLElement::SelectItem) {
+        SharedPtr<DOM::HTMLCollectionImpl> opts = select.options();
+        return getDOMNode(exec, opts->item(static_cast<unsigned \
long>(args[0]->toNumber(exec)))); +      }
       else if (id == KJS::HTMLElement::SelectRemove) {
         // Apparently this takes both elements and indices (ebay.fr)
         DOM::NodeImpl* node = toNode(args[0]);
--- branches/KDE/4.6/kdelibs/khtml/ecma/kjs_html.h #1215544:1215545
@@ -100,7 +100,7 @@
            FormReset, FormTarget, FormName, FormMethod, FormSubmit, \
                SelectAdd,
            SelectTabIndex, SelectValue, SelectSelectedIndex, SelectLength,
            SelectRemove, SelectForm, SelectType, SelectOptions,
-           SelectDisabled, SelectMultiple, SelectName, SelectSize, 
+           SelectDisabled, SelectMultiple, SelectName, SelectSize, \
SelectItem,    OptGroupDisabled, OptGroupLabel, OptionIndex, \
OptionSelected,  OptionForm, OptionText, OptionDefaultSelected, \
OptionDisabled,  OptionLabel, OptionValue, InputReadOnly, InputAccept,
--- branches/KDE/4.6/kdelibs/khtml/ecma/xmlhttprequest.cpp #1215544:1215545
@@ -917,10 +917,7 @@
           return throwError(exec, SyntaxError, "Not enough arguments");
 
       QString method = args[0]->toString(exec).qstring();
-      KHTMLPart *part = \
                qobject_cast<KHTMLPart*>(Window::retrieveActive(exec)->part());
                
-      if (!part)
-        return jsUndefined();
-      KUrl url = KUrl(part->document().completeURL(args[1]->toString(exec).qstring()).string());
 +      KUrl url = KUrl(request->doc->completeURL(args[1]->toString(exec).qstring()));
  
       bool async = true;
       if (args.size() >= 3) {
--- branches/KDE/4.6/kdelibs/khtml/xml/dom_docimpl.cpp #1215544:1215545
@@ -2870,8 +2870,7 @@
     // the new domain is a suffix of the old domain.
     int oldLength = oldDomain.length();
     int newLength = newDomain.length();
-    if ( newLength < oldLength ) // e.g. newDomain=kde.org (7) and \
                m_domain=www.kde.org (11)
-    {
+    if ( newLength < oldLength ) { // e.g. newDomain=kde.org (7) and \
m_domain=www.kde.org (11)  DOMString test = oldDomain.copy();
         DOMString reference = newDomain.lower();
         if ( test[oldLength - newLength - 1] == '.' ) // Check that it's a \
subdomain, not e.g. "de.org" @@ -2880,6 +2879,12 @@
             if ( test == reference )                 // and we check that \
it's the same thing as newDomain  m_origin->setDomainFromDOM( \
reference.string() );  }
+    } else if ( oldLength == newLength ) {
+        // It's OK and not a no-op to set the domain to the present one:
+        // we want to set the 'set from DOM' bit in that case
+        DOMString reference = newDomain.lower();
+        if ( oldDomain.lower() == reference )
+            m_origin->setDomainFromDOM( reference.string() );
     }
 }
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic