<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>22935</bug_id>
          
          <creation_ts>2008-12-19 08:27:17 -0800</creation_ts>
          <short_desc>navigate elements with directional pad</short_desc>
          <delta_ts>2009-01-06 11:05:13 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Cary Clark">caryclark</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>102982</commentid>
    <comment_count>0</comment_count>
    <who name="Cary Clark">caryclark</who>
    <bug_when>2008-12-19 08:27:17 -0800</bug_when>
    <thetext>A mobile device may have only a directional pad to navigate between links. Allow input and select elements to navigate between entries and radio buttons using the directional pad. Also, if dpad navigation is enabled, allow &apos;Enter&apos; to set the radio&apos;s state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102983</commentid>
    <comment_count>1</comment_count>
      <attachid>26143</attachid>
    <who name="Cary Clark">caryclark</who>
    <bug_when>2008-12-19 08:29:36 -0800</bug_when>
    <thetext>Created attachment 26143
add directional navigation to elements</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104131</commentid>
    <comment_count>2</comment_count>
      <attachid>26143</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-02 11:17:13 -0800</bug_when>
    <thetext>Comment on attachment 26143
add directional navigation to elements

&gt; +#if !defined(ENABLE_DPAD_NAVIGATION)
&gt; +#define ENABLE_DPAD_NAVIGATION 0
&gt; +#endif

I don&apos;t think DPAD is an abbreviation for &quot;directional pad&quot; that everyone looking at WebKit would recognize, so please use ENABLE_DIRECTIONAL_PAD_NAVIGATION.

&gt; @@ -196,6 +196,7 @@ bool HTMLInputElement::isKeyboardFocusab
&gt;          if (name().isEmpty())
&gt;              return false;
&gt;  
&gt; +if !ENABLE(DPAD_NAVIGATION)
&gt;          // Never allow keyboard tabbing to leave you in the same radio group.  Always
&gt;          // skip any other elements in the group.
&gt;          Node* currentFocusedNode = document()-&gt;focusedNode();
&gt; @@ -205,6 +206,7 @@ bool HTMLInputElement::isKeyboardFocusab
&gt;                  focusedInput-&gt;name() == name())
&gt;                  return false;
&gt;          }
&gt; +#endif
&gt;          
&gt;          // Allow keyboard focus if we&apos;re checked or if nothing in the group is checked.
&gt;          return checked() || !checkedRadioButtons(this).checkedButtonForGroup(name());

I don&apos;t understand the connection between a &quot;directional pad&quot; and this change, and the change log comments don&apos;t make it clear either. Is the tab key considered to be input from the directional pad? If so, is that the best design? Maybe this should not be a compile time setting, but rather a different event, related to the tab key but not identical. The reason isKeyboardFocusable gets a KeyboardEvent argument is so that different types of keyboard navigation can support different rules about what&apos;s skipped.

I don&apos;t think this change is designed correctly.

&gt; +#if ENABLE(DPAD_NAVIGATION)
&gt; +                    if (!checked()) // allow enter to set state of radio
&gt; +                        clickElement = true;
&gt; +                    break;
&gt; +#else
&gt;                      break; // Don&apos;t do anything for enter on a radio button.
&gt; +#endif

Same comment here. I think the directional pad Enter event should contain something in it that makes it different at runtime. Just compiling in different behavior for all Enter events doesn&apos;t seem like the right design.

Looking at the other two changes, I have exactly the same thought.

This patch seems to be a set of behavior changes at compile time that should instead be tied to some difference in the directional pad events.

Or maybe you could convince me otherwise.

review- for now</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104577</commentid>
    <comment_count>3</comment_count>
    <who name="Cary Clark">caryclark</who>
    <bug_when>2009-01-06 11:05:13 -0800</bug_when>
    <thetext>this code is obsolete in the android tree and has been removed; please ignore this patch request</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26143</attachid>
            <date>2008-12-19 08:29:36 -0800</date>
            <delta_ts>2009-01-02 11:17:13 -0800</delta_ts>
            <desc>add directional navigation to elements</desc>
            <filename>patchForBug22935.txt</filename>
            <type>text/plain</type>
            <size>4643</size>
            <attacher name="Cary Clark">caryclark</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM5NDAzKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMDgtMTItMTkgIENhcnkgQ2xh
cmsgIDxjYXJ5Y2xhcmtAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgb3B0aW9uIHRvIGVuYWJsZSBuYXZpZ2F0aW9uIHVzaW5n
IGEgZGlyZWN0aW9uYWwKKyAgICAgICAgKGZvdXItd2F5KSBwYWQsIGNvbW1vbiB0byBtYW55IG1v
YmlsZSBkZXZpY2VzLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMDgtMTItMTkg
IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyICA8emVja2VAc2VsZmlzaC5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYv
UGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAko
cmV2aXNpb24gMzk0MDIpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDI3LDYgKzQyNywxMCBAQAogI2RlZmluZSBFTkFCTEVfVEVYVF9DQVJFVCAx
CiAjZW5kaWYKIAorI2lmICFkZWZpbmVkKEVOQUJMRV9EUEFEX05BVklHQVRJT04pCisjZGVmaW5l
IEVOQUJMRV9EUEFEX05BVklHQVRJT04gMAorI2VuZGlmCisKICNpZiAhZGVmaW5lZChFTkFCTEVf
SklUKQogLyogeDg2LTY0IHN1cHBvcnQgaXMgdW5kZXIgZGV2ZWxvcG1lbnQuICovCiAjaWYgUExB
VEZPUk0oWDg2XzY0KSAmJiBQTEFURk9STShNQUMpCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMzk0MDMpCisrKyBXZWJD
b3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDA4LTEyLTE5
ICBDYXJ5IENsYXJrICA8Y2FyeWNsYXJrQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV0FSTklORzogTk8gVEVTVCBDQVNFUyBBRERF
RCBPUiBDSEFOR0VECisKKyAgICAgICAgQSBtb2JpbGUgZGV2aWNlIG1heSBoYXZlIG9ubHkgYSBk
aXJlY3Rpb25hbCBwYWQgdG8gbmF2aWdhdGUgYmV0d2VlbgorICAgICAgICBsaW5rcy4gQWxsb3cg
aW5wdXQgYW5kIHNlbGVjdCBlbGVtZW50cyB0byBuYXZpZ2F0ZSBiZXR3ZWVuIGVudHJpZXMKKyAg
ICAgICAgYW5kIHJhZGlvIGJ1dHRvbnMgdXNpbmcgdGhlIGRpcmVjdGlvbmFsIHBhZC4gQWxzbywg
aWYgZHBhZAorICAgICAgICBuYXZpZ2F0aW9uIGlzIGVuYWJsZWQsIGFsbG93ICdFbnRlcicgdG8g
c2V0IHRoZSByYWRpbydzIHN0YXRlLgorCisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmlzS2V5Ym9hcmRGb2N1
c2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50
SGFuZGxlcik6CisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6bWVudUxpc3REZWZhdWx0RXZlbnRIYW5kbGVy
KToKKwogMjAwOC0xMi0xOSAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgV2luZG93cyBidWlsZCBmaXggb24gb2xkZXIgdmVyc2lvbnMgb2YgQ0ZOZXR3b3JrIGFmdGVy
IHIzOTM5MwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAkocmV2aXNpb24gMzk0MDIp
CisrKyBXZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE5Niw2ICsxOTYsNyBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmlzS2V5Ym9hcmRGb2N1c2Fi
CiAgICAgICAgIGlmIChuYW1lKCkuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCitpZiAhRU5BQkxFKERQQURfTkFWSUdBVElPTikKICAgICAgICAgLy8gTmV2ZXIgYWxsb3cg
a2V5Ym9hcmQgdGFiYmluZyB0byBsZWF2ZSB5b3UgaW4gdGhlIHNhbWUgcmFkaW8gZ3JvdXAuICBB
bHdheXMKICAgICAgICAgLy8gc2tpcCBhbnkgb3RoZXIgZWxlbWVudHMgaW4gdGhlIGdyb3VwLgog
ICAgICAgICBOb2RlKiBjdXJyZW50Rm9jdXNlZE5vZGUgPSBkb2N1bWVudCgpLT5mb2N1c2VkTm9k
ZSgpOwpAQCAtMjA1LDYgKzIwNiw3IEBAIGJvb2wgSFRNTElucHV0RWxlbWVudDo6aXNLZXlib2Fy
ZEZvY3VzYWIKICAgICAgICAgICAgICAgICBmb2N1c2VkSW5wdXQtPm5hbWUoKSA9PSBuYW1lKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CisjZW5kaWYKICAgICAg
ICAgCiAgICAgICAgIC8vIEFsbG93IGtleWJvYXJkIGZvY3VzIGlmIHdlJ3JlIGNoZWNrZWQgb3Ig
aWYgbm90aGluZyBpbiB0aGUgZ3JvdXAgaXMgY2hlY2tlZC4KICAgICAgICAgcmV0dXJuIGNoZWNr
ZWQoKSB8fCAhY2hlY2tlZFJhZGlvQnV0dG9ucyh0aGlzKS5jaGVja2VkQnV0dG9uRm9yR3JvdXAo
bmFtZSgpKTsKQEAgLTEyNzYsNyArMTI3OCwxMyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmRl
ZmF1bHRFdmVudEhhbmRsCiAgICAgICAgICAgICAgICAgICAgIGNsaWNrRWxlbWVudCA9IHRydWU7
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgUkFESU86
CisjaWYgRU5BQkxFKERQQURfTkFWSUdBVElPTikKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFj
aGVja2VkKCkpIC8vIGFsbG93IGVudGVyIHRvIHNldCBzdGF0ZSBvZiByYWRpbworICAgICAgICAg
ICAgICAgICAgICAgICAgY2xpY2tFbGVtZW50ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisjZWxzZQogICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8gRG9uJ3QgZG8gYW55
dGhpbmcgZm9yIGVudGVyIG9uIGEgcmFkaW8gYnV0dG9uLgorI2VuZGlmCiAgICAgICAgICAgICB9
CiAgICAgICAgIH0gZWxzZSBpZiAoY2hhckNvZGUgPT0gJyAnKSB7CiAgICAgICAgICAgICBzd2l0
Y2ggKGlucHV0VHlwZSgpKSB7CkBAIC0xMzIyLDYgKzEzMzAsNyBAQCB2b2lkIEhUTUxJbnB1dEVs
ZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAorI2lm
ICFFTkFCTEUoRFBBRF9OQVZJR0FUSU9OKQogICAgICAgICBpZiAoaW5wdXRUeXBlKCkgPT0gUkFE
SU8gJiYgKGtleSA9PSAiVXAiIHx8IGtleSA9PSAiRG93biIgfHwga2V5ID09ICJMZWZ0IiB8fCBr
ZXkgPT0gIlJpZ2h0IikpIHsKICAgICAgICAgICAgIC8vIExlZnQgYW5kIHVwIG1lYW4gInByZXZp
b3VzIHJhZGlvIGJ1dHRvbiIuCiAgICAgICAgICAgICAvLyBSaWdodCBhbmQgZG93biBtZWFuICJu
ZXh0IHJhZGlvIGJ1dHRvbiIuCkBAIC0xMzU2LDYgKzEzNjUsNyBAQCB2b2lkIEhUTUxJbnB1dEVs
ZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQogICAgICAgICB9CisjZW5kaWYKICAgICB9CiAKICAgICBpZiAoZXZ0LT50eXBlKCkgPT0gZXZl
bnROYW1lcygpLmtleXVwRXZlbnQgJiYgZXZ0LT5pc0tleWJvYXJkRXZlbnQoKSkgewpJbmRleDog
V2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCShyZXZpc2lvbiAzOTQwMikKKysrIFdlYkNvcmUv
aHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzMyw2ICs2MzMs
MTEgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6bWVudUxpc3REZWZhdWx0RQogICAgICAgICAg
ICAgbWVudUxpc3QtPnNob3dQb3B1cCgpOwogICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7CiAg
ICAgICAgIH0KKyNlbGlmIEVOQUJMRShEUEFEX05BVklHQVRJT04pCisgICAgICAgIGlmIChrZXlJ
ZGVudGlmaWVyID09ICJFbnRlciIgJiYgdXNlc01lbnVMaXN0KCkpIHsKKyAgICAgICAgICAgIG1l
bnVMaXN0LT5zaG93UG9wdXAoKTsKKyAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlOworICAgICAg
ICB9CiAjZWxzZQogICAgICAgICBpbnQgbGlzdEluZGV4ID0gb3B0aW9uVG9MaXN0SW5kZXgoc2Vs
ZWN0ZWRJbmRleCgpKTsKICAgICAgICAgaWYgKGtleUlkZW50aWZpZXIgPT0gIkRvd24iIHx8IGtl
eUlkZW50aWZpZXIgPT0gIlJpZ2h0Iikgewo=
</data>
<flag name="review"
          id="12342"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>