[Bug 27865] New: Interaction issues between fullscreen and <dialog>

https://www.w3.org/Bugs/Public/show_bug.cgi?id=27865

            Bug ID: 27865
           Summary: Interaction issues between fullscreen and <dialog>
           Product: WebAppsWG
           Version: unspecified
          Hardware: All
                OS: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Fullscreen
          Assignee: annevk@annevk.nl
          Reporter: quanxunzhen@gmail.com
        QA Contact: public-webapps-bugzilla@w3.org
                CC: mike@w3.org, public-webapps@w3.org

I found there are several issues on interaction between fullscreen and
<dialog>.

If we have the following document:

div id=a
|
+-div id=b
|
+-dialog id=c
  |
  +-div id=d

Case #1:
1. request fullscreen on #b,
2. open modal dialog #c,
3. request fullscreen on #d.

If I understand the specs correctly, in this case, the third step is a no-op.
#d will not be made fullscreen because it is not a descendent of #b, which is
the top element in the "fullscreen element stack". [1]

But, if we change a little:

Case #2:
1. request fullscreen on #a
2. open modal dialog #c,
3. request fullscreen on #d.

This time, #d is successfully made fullscreen.

I think it is an odd behavior, because authors should expect that #d is either 
(1) always open because its a descendent of the top element in the top layer
stack, or
(2) never open because a modal dialog is present.

And what if we do this:

Case #3:
1. open modal dialog #c
2. request fullscreen on #b

If I read the specs correctly, it is the most unfortunate case.

#b will be made fullscreen, because there was no element in the "fullscreen
element stack" before, and cover the modal dialog, because it is added to the
top layer stack later than #c, which makes it be closer to the user than the
dialog. [2]

However, according to the HTML spec, when there is any modal dialog opened, any
element except the dialog and its descendent is marked inert, [3][4] which
means although #b is the topmost element, it cannot receive any user
interaction event before the invisible modal dialog get closed. [5]


To solve these issues, I propose the following changes to the Fullscreen API
spec:
1. Change the third and the last step of the "fullscreen element ready check"
algorithm, make it check according to top layer stack instead of the
"fullscreen element stack";
2. Replace the "fullscreen element stack" with "fullscreen element set", and
make all order depend on top layer stack only, so that we don't need to worry
when their order is out of sync.


[1] https://fullscreen.spec.whatwg.org/#fullscreen-element-ready-check
[2] https://fullscreen.spec.whatwg.org/#new-stacking-layer
[3] https://html.spec.whatwg.org/multipage/forms.html#dom-dialog-showmodal
[4]
https://html.spec.whatwg.org/multipage/interaction.html#blocked-by-a-modal-dialog
[5] https://html.spec.whatwg.org/multipage/interaction.html#inert

-- 
You are receiving this mail because:
You are on the CC list for the bug.

Received on Tuesday, 20 January 2015 12:33:48 UTC