LayoutTests:
authoraliceli1 <aliceli1@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 1 Sep 2006 02:28:53 +0000 (02:28 +0000)
committeraliceli1 <aliceli1@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 1 Sep 2006 02:28:53 +0000 (02:28 +0000)
        Reviewed by Darin.

        Revised expected results for an isindex element because of
        <rdar://problem/4463870> Switch to use new text field implementation for <isindex>
        Now the field is rendered as a textfield

        * fast/dom/isindex-002-expected.checksum:
        * fast/dom/isindex-002-expected.png:
        * fast/dom/isindex-002-expected.txt:

WebCore:

        Reviewed by Darin.

        Fixed <rdar://problem/4463870> Switch to use new text field implementation for <isindex>

        * bindings/objc/DOMHTML.mm:
        (-[DOMHTMLInputElement _isTextField]):
        moved isindex from the list of nonTextInputTypes to the list of textInputTypes
        * css/html4.css:
        added isindex to certain rules that applied to input fields
        * html/HTMLInputElement.cpp:
        (WebCore::HTMLInputElement::canHaveSelection):
        (WebCore::HTMLInputElement::selectionStart):
        (WebCore::HTMLInputElement::selectionEnd):
        (WebCore::HTMLInputElement::setSelectionStart):
        (WebCore::HTMLInputElement::setSelectionEnd):
        (WebCore::HTMLInputElement::select):
        (WebCore::HTMLInputElement::setSelectionRange):
        (WebCore::HTMLInputElement::createRenderer):
        for the 8 methods above, moved the case for isindex to the same case as text
        * html/HTMLInputElement.h:
        (WebCore::HTMLInputElement::isNonWidgetTextField):
        added isindex to this test
        * html/HTMLIsIndexElement.idl:
        HTMLIsIndexElement inherits from HTMLInputElement
        * rendering/RenderLineEdit.cpp:
        (WebCore::RenderLineEdit::RenderLineEdit):
        removed the case for isindex since we changed the renderer type from a RenderLineEdit
        to a RenderTextControl in WebCore::HTMLInputElement::createRenderer()

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@16171 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/fast/dom/isindex-002-expected.checksum
LayoutTests/fast/dom/isindex-002-expected.png
LayoutTests/fast/dom/isindex-002-expected.txt
WebCore/ChangeLog
WebCore/bindings/objc/DOMHTML.mm
WebCore/css/html4.css
WebCore/html/HTMLInputElement.cpp
WebCore/html/HTMLInputElement.h
WebCore/html/HTMLIsIndexElement.idl
WebCore/rendering/RenderLineEdit.cpp

index dfab2d73922bbb18182554eea9ad9464119ae3de..c685948e7defdd954cda833a1eedac03c9f1cf67 100644 (file)
@@ -1,3 +1,15 @@
+2006-08-31  Alice Liu  <alice.liu@apple.com>
+
+        Reviewed by Darin.
+
+        Revised expected results for an isindex element because of 
+        <rdar://problem/4463870> Switch to use new text field implementation for <isindex>
+        Now the field is rendered as a textfield
+
+        * fast/dom/isindex-002-expected.checksum:
+        * fast/dom/isindex-002-expected.png:
+        * fast/dom/isindex-002-expected.txt:
+
 2006-08-30  Rob Buis  <buis@kde.org>
 
         Reviewed by Eric.
index 05dd18249c59a63567bc221ef3d0b92123ee7724..27b81455305b5b06210e8c086e5712aa12528d43 100644 (file)
@@ -1 +1 @@
-b02d88e6600f288dffeaca5de2c17269
\ No newline at end of file
+5853e3bcd037029c936a7f14b4dd9030
\ No newline at end of file
index 9b09c80913d86836ea6d033e1191004c2d30e20d..ddbb139537e7677c6c803a36570ff6c27c81a5c1 100644 (file)
Binary files a/LayoutTests/fast/dom/isindex-002-expected.png and b/LayoutTests/fast/dom/isindex-002-expected.png differ
index e85fe2cadf17a9eaed06c8d2913b9ee4f0007626..4d59f4eec0866d18b31df2ed63dcc836b10fd354 100644 (file)
@@ -3,18 +3,22 @@ layer at (0,0) size 800x600
 layer at (0,0) size 800x600
   RenderBlock {HTML} at (0,0) size 800x600
     RenderBody {BODY} at (8,8) size 784x584
-      RenderBlock {FORM} at (0,0) size 784x45
-        RenderBlock {DIV} at (0,0) size 784x45
+      RenderBlock {FORM} at (0,0) size 784x43
+        RenderBlock {DIV} at (0,0) size 784x43
           RenderBlock {HR} at (0,0) size 784x2 [border: (1px inset #000000)]
-          RenderBlock (anonymous) at (0,10) size 784x25
-            RenderText {#text} at (0,4) size 322x18
-              text run at (0,4) width 322: "This is a searchable index. Enter search keywords: "
-            RenderLineEdit {ISINDEX} at (322,0) size 168x25
-          RenderBlock {HR} at (0,43) size 784x2 [border: (1px inset #000000)]
-      RenderBlock {DIV} at (0,61) size 784x45
+          RenderBlock (anonymous) at (0,10) size 784x23
+            RenderText {#text} at (0,2) size 322x18
+              text run at (0,2) width 322: "This is a searchable index. Enter search keywords: "
+            RenderTextField {ISINDEX} at (324,2) size 148x19 [bgcolor=#FFFFFF] [border: (2px inset #000000)]
+          RenderBlock {HR} at (0,41) size 784x2 [border: (1px inset #000000)]
+      RenderBlock {DIV} at (0,59) size 784x43
         RenderBlock {HR} at (0,0) size 784x2 [border: (1px inset #000000)]
-        RenderBlock (anonymous) at (0,10) size 784x25
-          RenderText {#text} at (0,4) size 322x18
-            text run at (0,4) width 322: "This is a searchable index. Enter search keywords: "
-          RenderLineEdit {ISINDEX} at (322,0) size 168x25
-        RenderBlock {HR} at (0,43) size 784x2 [border: (1px inset #000000)]
+        RenderBlock (anonymous) at (0,10) size 784x23
+          RenderText {#text} at (0,2) size 322x18
+            text run at (0,2) width 322: "This is a searchable index. Enter search keywords: "
+          RenderTextField {ISINDEX} at (324,2) size 148x19 [bgcolor=#FFFFFF] [border: (2px inset #000000)]
+        RenderBlock {HR} at (0,41) size 784x2 [border: (1px inset #000000)]
+layer at (335,23) size 142x13
+  RenderBlock {DIV} at (3,3) size 142x13
+layer at (335,82) size 142x13
+  RenderBlock {DIV} at (3,3) size 142x13
index 61599e02889dd0a0bdf1d56d328bdfd3855b2b31..ba12539e384534ca7533e41098671bc301968b73 100644 (file)
@@ -1,3 +1,34 @@
+2006-08-31  Alice Liu  <alice.liu@apple.com>
+
+        Reviewed by Darin.
+
+        Fixed <rdar://problem/4463870> Switch to use new text field implementation for <isindex>
+
+        * bindings/objc/DOMHTML.mm:
+        (-[DOMHTMLInputElement _isTextField]):
+        moved isindex from the list of nonTextInputTypes to the list of textInputTypes
+        * css/html4.css:
+        added isindex to certain rules that applied to input fields
+        * html/HTMLInputElement.cpp:
+        (WebCore::HTMLInputElement::canHaveSelection):
+        (WebCore::HTMLInputElement::selectionStart):
+        (WebCore::HTMLInputElement::selectionEnd):
+        (WebCore::HTMLInputElement::setSelectionStart):
+        (WebCore::HTMLInputElement::setSelectionEnd):
+        (WebCore::HTMLInputElement::select):
+        (WebCore::HTMLInputElement::setSelectionRange):
+        (WebCore::HTMLInputElement::createRenderer):
+        for the 8 methods above, moved the case for isindex to the same case as text
+        * html/HTMLInputElement.h:
+        (WebCore::HTMLInputElement::isNonWidgetTextField):
+        added isindex to this test
+        * html/HTMLIsIndexElement.idl:
+        HTMLIsIndexElement inherits from HTMLInputElement
+        * rendering/RenderLineEdit.cpp:
+        (WebCore::RenderLineEdit::RenderLineEdit):
+        removed the case for isindex since we changed the renderer type from a RenderLineEdit
+        to a RenderTextControl in WebCore::HTMLInputElement::createRenderer()
+
 2006-08-31  David Harrison  <harrison@apple.com>
 
         Reviewed by Adele.
index 01ee46f46dd9eea93c8681eaa2ada1791f97584f..2b18f21048341c4f4b85b59338708af66844bf0c 100644 (file)
@@ -2350,13 +2350,13 @@ static NSView *viewForElement(DOMElement *element)
         return YES;
     
     if (textInputTypes == nil)
-        textInputTypes = [[NSSet alloc] initWithObjects:@"text", @"password", @"search", nil];
+        textInputTypes = [[NSSet alloc] initWithObjects:@"text", @"password", @"search", @"isindex", nil];
     
     BOOL isText = [textInputTypes containsObject:[fieldType lowercaseString]];
     
 #ifndef NDEBUG
     if (nonTextInputTypes == nil)
-        nonTextInputTypes = [[NSSet alloc] initWithObjects:@"isindex", @"checkbox", @"radio", @"submit", @"reset", @"file", @"hidden", @"image", @"button", @"range", nil];
+        nonTextInputTypes = [[NSSet alloc] initWithObjects:@"checkbox", @"radio", @"submit", @"reset", @"file", @"hidden", @"image", @"button", @"range", nil];
     
     // Catch cases where a new input type has been added that's not in these lists.
     ASSERT(isText || [nonTextInputTypes containsObject:[fieldType lowercaseString]]);
index 8dd792f4bc1b3495e3eb88792504e29d1235f4f6..9b9bfc0e1adcbb2d1fbf4b91399fdcc5d7446367 100644 (file)
@@ -294,7 +294,7 @@ button {
     -webkit-appearance: button;
 }
 
-input, textarea, select, button {
+input, textarea, select, button, isindex {
     margin: 0__qem;
     font: -webkit-small-control;
     color: initial;
@@ -311,7 +311,7 @@ input[type="hidden"] {
     display: none
 }
 
-input {
+input, isindex {
     -webkit-appearance: textfield;
     padding: 1px;
     background-color: white;
@@ -519,7 +519,7 @@ html:focus, body:focus {
     outline: none
 }
   
-input:focus, textarea:focus {
+input:focus, textarea:focus, isindex:focus {
     outline-offset: -2px
 }
 
index 57269e9d641f38434b0a6bd04dfb6d4b9e0bca51..e2432d5d740ec28acef0d7551d18c06c087407a5 100644 (file)
@@ -449,7 +449,6 @@ bool HTMLInputElement::canHaveSelection() const
         case FILE:
         case HIDDEN:
         case IMAGE:
-        case ISINDEX:
         case RADIO:
         case RANGE:
         case RESET:
@@ -457,6 +456,7 @@ bool HTMLInputElement::canHaveSelection() const
             return false;
         case PASSWORD:
         case SEARCH:
+        case ISINDEX:
         case TEXT:
             return true;
     }
@@ -474,7 +474,6 @@ int HTMLInputElement::selectionStart() const
         case FILE:
         case HIDDEN:
         case IMAGE:
-        case ISINDEX:
         case RADIO:
         case RANGE:
         case RESET:
@@ -482,6 +481,7 @@ int HTMLInputElement::selectionStart() const
             break;
         case SEARCH:
             return static_cast<RenderLineEdit*>(renderer())->selectionStart();
+        case ISINDEX:
         case TEXT:
             if (document()->focusNode() != this && cachedSelStart >= 0)
                 return cachedSelStart;
@@ -506,7 +506,6 @@ int HTMLInputElement::selectionEnd() const
         case FILE:
         case HIDDEN:
         case IMAGE:
-        case ISINDEX:
         case RADIO:
         case RANGE:
         case RESET:
@@ -514,6 +513,7 @@ int HTMLInputElement::selectionEnd() const
             break;
         case SEARCH:
             return static_cast<RenderLineEdit*>(renderer())->selectionEnd();
+        case ISINDEX:
         case TEXT:
             if (document()->focusNode() != this && cachedSelEnd >= 0)
                 return cachedSelEnd;
@@ -538,7 +538,6 @@ void HTMLInputElement::setSelectionStart(int start)
         case FILE:
         case HIDDEN:
         case IMAGE:
-        case ISINDEX:
         case RADIO:
         case RANGE:
         case RESET:
@@ -547,6 +546,7 @@ void HTMLInputElement::setSelectionStart(int start)
         case SEARCH:
             static_cast<RenderLineEdit*>(renderer())->setSelectionStart(start);
             break;
+        case ISINDEX:
         case TEXT:
             static_cast<RenderTextControl*>(renderer())->setSelectionStart(start);
             break;
@@ -570,7 +570,6 @@ void HTMLInputElement::setSelectionEnd(int end)
         case FILE:
         case HIDDEN:
         case IMAGE:
-        case ISINDEX:
         case RADIO:
         case RANGE:
         case RESET:
@@ -579,6 +578,7 @@ void HTMLInputElement::setSelectionEnd(int end)
         case SEARCH:
             static_cast<RenderLineEdit*>(renderer())->setSelectionEnd(end);
             break;
+        case ISINDEX:
         case TEXT:
             static_cast<RenderTextControl*>(renderer())->setSelectionEnd(end);
             break;
@@ -601,7 +601,6 @@ void HTMLInputElement::select()
         case CHECKBOX:
         case HIDDEN:
         case IMAGE:
-        case ISINDEX:
         case RADIO:
         case RANGE:
         case RESET:
@@ -613,6 +612,7 @@ void HTMLInputElement::select()
         case SEARCH:
             static_cast<RenderLineEdit*>(renderer())->select();
             break;
+        case ISINDEX:
         case TEXT:
             static_cast<RenderTextControl*>(renderer())->select();
             break;
@@ -636,7 +636,6 @@ void HTMLInputElement::setSelectionRange(int start, int end)
         case FILE:
         case HIDDEN:
         case IMAGE:
-        case ISINDEX:
         case RADIO:
         case RANGE:
         case RESET:
@@ -645,6 +644,7 @@ void HTMLInputElement::setSelectionRange(int start, int end)
         case SEARCH:
             static_cast<RenderLineEdit*>(renderer())->setSelectionRange(start, end);
             break;
+        case ISINDEX:
         case TEXT:
             static_cast<RenderTextControl*>(renderer())->setSelectionRange(start, end);
             break;
@@ -869,11 +869,11 @@ RenderObject *HTMLInputElement::createRenderer(RenderArena *arena, RenderStyle *
             break;
         case IMAGE:
             return new (arena) RenderImage(this);
-        case ISINDEX:
         case SEARCH:
             return new (arena) RenderLineEdit(this);
         case RANGE:
             return new (arena) DeprecatedSlider(this);
+        case ISINDEX:
         case TEXT:
             return new (arena) RenderTextControl(this, false);
         case PASSWORD:
index ee0dba61d31c839a5f02aed6969cc2aeae614e73..5b6af10982ad862f8883d496aaa00d209d49c04f 100644 (file)
@@ -85,7 +85,7 @@ public:
     bool isTextField() const { return m_type == TEXT || m_type == PASSWORD || m_type == SEARCH; }
     // FIXME: When other text fields switch to the non-NSView implementation, we should add them here.
     // Once all text fields switch over, we should merge this with isTextField.
-    bool isNonWidgetTextField() const { return m_type == TEXT || (m_type == PASSWORD /* FIXME: Remove this style check when converting password */ 
+    bool isNonWidgetTextField() const { return m_type == TEXT || m_type == ISINDEX || (m_type == PASSWORD /* FIXME: Remove this style check when converting password */ 
                                         && renderer() && renderer()->style()->appearance() == TextFieldAppearance); }
 
     bool checked() const { return m_checked; }
index cb93bc94f1a77c467f3f8c9f939e28884df6913e..88ec14c9477405d5d159ad688772c40788d1513d 100644 (file)
@@ -18,7 +18,7 @@
  */
 
 module html {
-    interface [LegacyParent=KJS::JSHTMLElement] HTMLIsIndexElement : HTMLElement {
+    interface [LegacyParent=KJS::JSHTMLElement] HTMLIsIndexElement : HTMLInputElement {
         readonly attribute HTMLFormElement form;
         attribute DOMString prompt;
     };
index 96ba28aa507797d0d91f84c38968bfb27d3b2416..897048be17ce0a576dfc4836c5566ad5ae03e8ef 100644 (file)
@@ -50,9 +50,6 @@ RenderLineEdit::RenderLineEdit(HTMLInputElement* element)
         case HTMLInputElement::SEARCH:
             type = TextField::Search;
             break;
-        case HTMLInputElement::ISINDEX:
-            type = TextField::Normal;
-            break;
         default:
             ASSERT(false);
             type = TextField::Normal;