- From: Yoav Weiss <yoav@yoav.ws>
- Date: Mon, 10 Feb 2020 10:04:44 +0100
- To: public-web-perf <public-web-perf@w3.org>
- Message-ID: <CACj=BEg7D9_VTS74EKWZZagbavosx5oCMPsqyobGoN2Cx8YW0g@mail.gmail.com>
Hey all, Apologies for the late minutes publication, but travel got in the way... The minutes <https://docs.google.com/document/d/e/2PACX-1vRVEHQyqUAOR3f0i_b99huuR783PARUBex3S1RZYLAWrCHc0wHfseVFlhiK9r4QXH0NUs7ww8EF4627/pub> and video <https://www.youtube.com/watch?v=h47QOdlvo-c&feature=youtu.be> from the last WG call are now available. Copying the minutes here for safe keeping: WebPerfWG call - January 30th 2019 Participants: Philippe Le Hegaret, Yoav Weiss, Philip Walton, Annie Sullivan, Steven Bougon, Andrew Comminos, Ryosuke Niwa Next call: Feb 13th, 10am PST isInputPending Andrew: Continuing from last week. Talked about the security implications of differences between hit tests, and the approach different UAs take towards it Yoav: Can’t we perform hit-testing once, or mandate that both hit tests match? Chrome security folks don’t think the information is highly-exploitable, but blocking the race condition sounds like a better option. Andrew: locking event to origin may leak information in itself, The frame that received the initial isInputPending and no event could infer the event was dispatched to another frame Yoav: That’s the leak in the current implementation. In the single hit-test case, you’d get the event even in case your iframe moved. In the other option, you’d get isInputPending but no event, in which case you know you have an event that was supposed to arrive, but someone moved your frame. Andrew: Is “event should have been dispatched?” cross-origin information that we don’t want to leak Yoav: The information “leaks” to same-origin in which the event should have been dispatched Andrew: depends on how you define “should have” Yoav: Agree AI - discuss 3 options as part of a TAG review Ryosuke: discarding the event in case of a mismatch sounds risky. Andrew: changes hit testing expectations, so agree Ryosuke: what about doing hit testing once? That sounds low risk. If anything, improves the synchronization between user click and event. Seems preferable Andrew: now to spec changes. … Using DOM event types wasn’t ideal. Initially provided a list of DOM events, because we wanted to provide UAs a way to avoid continuous events (mouse move, etc). … That turned out hard to spec out, because implementations don’t really match and spec that, … Tried to solve this problem by picking the right set of events, which works other than a few edge cases … Primary objective was to focus on discrete events rather than continuous … So we need to define what is “continuous events”, and expect most users to not be interested, but want to continue to expose this information Philippe: there’s work that the pointer events folks do on that front. Need to be aware of getCoalescedEvents <https://www.google.com/url?q=https://w3c.github.io/pointerevents/%23dom-pointerevent-getcoalescedevents&sa=D&ust=1581328912653000> /getPredictedEvents <https://www.google.com/url?q=https://w3c.github.io/pointerevents/%23dom-pointerevent-getpredictedevents&sa=D&ust=1581328912654000> In Pointer Events 3. Yoav: Also Event Timing Andrew: working with Nicolás and want to unify the definition between this and EventTiming. Yoav: will also unify with other WG if makes sense Andrew: Moving on to IDL. IDL uses an Options struct which is more efficient to call this frequently. … The original implementation resulted in many string comparisons so it was expensive. … The idea is that if you want to track continuous events you add that as a boolean. Yoav: Makes sense. Ryosuke: why support continuous events at all? Andrew: use case could be a game that reacts to mouse moves. Won’t oppose shipping just UI events if that’s better. Ryosuke: definition of continuous events should be in HTML or UI events spec. Would be better to define it elsewhere. There could also be sub-categories (e.g. touch events, mouse events). Andrew: starting from a small set of options makes sense Ryosuke: also need to make sure it’s implementable so it's easier to start small. Philippe: sounds like there’s overlap with Pointer Events Andrew: will file an issue on GH to track that ( https://github.com/WICG/is-input-pending/issues/24 <https://www.google.com/url?q=https://github.com/WICG/is-input-pending/issues/24&sa=D&ust=1581328912662000> ) Page Visibility and hidden Philip: There are many use cases where developers want a reliable signal that a user is about to leave the page (switching tabs, switching apps, etc). … There are a lot of situations where you’re trying to run some idle code, which is not urgent but needs to run before the user leaves. … Unload, pagehide and beforeunload are not reliable, especially on mobile. Visibility change has been *the* event to solve this for a while. … More recently I’ve been working with people at Google on that use case. But there are a bunch of issues in different OSes and the issue is around ambiguity in the spec, resulting in missed cases. … So the main cases are cases involving the tab and app switchers in mobile OSes. … As soon as the user moves to the switcher, they can dismiss the tab or app, and only firefox fires the event in this case. … On iOS, it’s not clear if firing the event is at all feasible. … So it would be easier to say that as soon as the user moves to the switcher, the page can be considered “in the background” and visibilitychange should fire. … But the spec says that if a part of the page is visible, the page is “visible”. Some questions: - Do we agree that in iOS, it’s not possible to fire the event after the user is in the switcher? - If so, can we change the spec to fire the event as soon as the user moved to the switcher? - Thoughts on definition change? Ryosuke: Confused about the distinction between switching and closing in the switcher Philip: Not sure what the distinction is, and why iOS does different things. I think that when the app is dismissed, Safari can’t run. Ryosuke: What is the difference in your testing between those cases? Philip: Tested in iPhone X. swipe gesture from the bottom gives you the app switcher. Then a swipe sideways switches to a different tab, swipe up closes applications. … So switching app is swipe from bottom then swipe sideways to pick a different app. … Closing app is swipe from bottom then swipe up to close the Safari app. … So want to change the model to fire before entering the app switcher, not after taking an action there. Ryosuke: I think we know when we go into the app switcher, so probably possible to change. Philip: I believe the blur event fires so there’s opportunity to fire an event. Yoav: If we assume that it's feasible, would you agree with the definition? From my perspective, the main problem is the name “hidden”, but otherwise the page is hidden. All those switcher should trigger the hidden state. Philip: On desktop, a browser could implement a UI that shows a screenshot of all tabs. But it’d be ridiculous to fire events for all those tabs in that case. Philippe: When you say screenshot, would a video on that page play? Philip: No Philippe: So we’re not really seeing the viewport Philip: I agree but need to clarify the spec. Also, do we want to change to “active”/”inactive”? Yoav: Won’t be able to change the names for compat, but don’t think it’s a major source of confusion. So need to clarify the spec, and it probably won’t trip up a lot of people Philip: Agree Ryosuke: Sounds reasonable, assuming it’s implementable. I agree that if rendering is not updated, it’s not “visible”. In Windows you could see the preview of apps, but wouldn’t consider it visible. Same in Safari’s “select tabs” view, but it’s just screenshots. Philip: Anyone from Mozilla on the call? They would need to change their implementation if we change the definition, as they now fire the event after the tab switcher action happened. Yoav: Not on the call (between FOSSDEM and their all-hands). But we can tag them on the GH issue. Changing the spe sounds relatively easy, and then the question is how hard it would be for implementations to follow. Philip: There was another issue where someone was complaining about information leak in the “hidden” state. We can clarify that “hidden” doesn’t mean that the user can’t see a screenshot Yoav: So we have agreement. Philip - would you be able to summarize the discussion on the issue? Philip: Yup. Issue TriagePage Visibility Update spec so Bikeshed can automatically pick up linkable terms <https://www.google.com/url?q=https://github.com/w3c/page-visibility/issues/57&sa=D&ust=1581328912678000> Philippe: Open PR on 54 <https://www.google.com/url?q=https://github.com/w3c/page-visibility/pull/54&sa=D&ust=1581328912679000> Yoav: Last comment from Marcos says “don’t merge yet”. Should we give it more time? Philippe: I’ll look into it Lack of clarity on how occlusion behavior interacts with iframes <https://www.google.com/url?q=https://github.com/w3c/page-visibility/issues/56&sa=D&ust=1581328912681000> Philippe: long standing issue - do we classify an iframe the same as its parent or not. Yoav: So if the window is occluded and that covers an entire iframe, what should the iframe state be. … But before concluding what we should do, is this blocking? According to the current spec, iframes just inherit from their parent. So any occlusion behavior that does interact with iframes sounds like a feature request. Philippe: and in the past we said we won’t change that behavior. I’ll find a pointer to past-issues. Yoav: In the meantime, we can set it as a feature request and bump it to L3. Philippe: I’d be surprised if we’d change behavior. User TimingAllow marks and measures to be shown in developer tooling without adding it to the performance timeline <https://www.google.com/url?q=https://github.com/w3c/user-timing/issues/68&sa=D&ust=1581328912686000> Yoav: Using mark and measure in a tight loop results in performance costs. Annie: People also complained about the spamming of the perf timeline. Console.time and timeEnd are too constrained compared to User Timing L3 Yoav: Where is the console specified? Ryosuke: https://console.spec.whatwg.org/ <https://www.google.com/url?q=https://console.spec.whatwg.org/&sa=D&ust=1581328912688000> Yoav: I would split the ask into 2 different parts 1. UT implementation in Chrome has too much overhead. Chrome should fix it 2. Console should enable all the things that UT enables … But I don’t think we want a UT option to not fire user timing entries. Annie: They don’t want it in the console, but in the performance tab Ryosuke: still a developer tooling feature. The tab in which it shows up is UA dependent Yoav: Tend to say that they should send a feature request for the console spec. Maybe they want a console function that doesn’t print to console, which is admittedly weird … Otherwise, the Chrome slowness is on me and I should fix it Philip: The spamming is only a problem because some analytics vendors collect all the entries, and they should ask them to do the filtering. Yoav: Yup. Andy Davies commented the same on the bug. Some RUM products support it. I’ll sum it up on the issue. requestIdleCallbackDefine algorithm for determining whether high priority work exists <https://www.google.com/url?q=https://github.com/w3c/requestidlecallback/pull/88&sa=D&ust=1581328912694000> Yoav: Since Ryosuke won’t have time to review in the near future, we can look for other reviewers. Boris, Anne and/or Domenic come to mind. Resource TimingThe step to queue a task to run fire a buffer full event should specify its source <https://www.google.com/url?q=https://github.com/w3c/resource-timing/issues/215&sa=D&ust=1581328912696000> Yoav: Can we use the “performance timeline task source” Ryosuke: Sure. Yoav: Assigning to myself Page Visibility (again)Switching tabs in Safari for iOS still displays the elements that should be hidden <https://www.google.com/url?q=https://github.com/w3c/page-visibility/issues/58&sa=D&ust=1581328912699000> Ryosuke: After pageVisibility fires Safari never updates the rendering. … They are updating the DOM as part of the pageVisibility event to hide sensitive information. … But the rendering will never get updated. Yoav: Maybe the first step would be to clarify what they meant on the issue. How does page visibility related to rendering opportunities? Ryosuke: Switching tabs fires the event, but rendering is not updated. Question to the WG: Is there an expectation in the spec that rendering will happen? Philip: “hidden” state doesn’t mean the user can’t see the page, and is not a security feature. Ryosuke: Banking app can want to hide the content when going to the app switcher. … When the app is inactive, they want to hide that content. … Does the spec have that expectation right now? … It’s not implementable in Safari Philip: doesn’t seem like it’s in violation of the spec. We need to clarify that to set expectations. Ryosuke: can add a note saying that there can not be rendering opportunities after the event runs. Philip: We could clarify that when updating the definition of hidden: updates to rendering may not fire until the page becomes visible again Yoav: Makes sense, don’t think we want to provide guarantees that the page is “hidden from view” and gets rendering updates. AI - Philip to sum up #58 as well. On Tue, Jan 28, 2020 at 9:59 PM Yoav Weiss <yoav@yoav.ws> wrote: > Hey all, > > Join us <https://meet.google.com/agz-fbji-spp> to talk webperf this > Thursday!! On the agenda we have Long Task reentrency > <https://github.com/w3c/longtasks/issues/76>, continuing the discussion > on IsInputPending from the last call, as well as a long list of issues to > triage. > > As always, the call will be recorded and posted online. > > See y'all there! > Yoav >
Received on Monday, 10 February 2020 09:05:07 UTC