06:32 | <annevk> | jgraham: parse it and see if the serialized result is the same as the input |
06:32 | <annevk> | jamesr___: ah, but what it's called? |
06:43 | <karlcow> | https://bugzilla.mozilla.org/show_bug.cgi?id=1137079 |
06:43 | <karlcow> | Bug 1137079 - https://whatwg.org/ Secure Connection Failed (Error code: ssl_error_no_cypher_overlap) |
07:25 | <annevk> | karlcow: can you reproduce it? |
07:31 | karlcow | is switching to Firefox 39.0a1 (2015-02-25) |
07:31 | karlcow | is going to https://bugzilla.mozilla.org/show_bug.cgi?id=1137079 |
07:33 | <karlcow> | failing on https://forums.whatwg.org/ |
07:34 | <annevk> | karlcow: yeah, multiple subdomains are not on the whitelist, I left a comment on the whitelist bug emk pointed out |
07:34 | karlcow | sees https://hg.mozilla.org/releases/mozilla-aurora/file/2e3aaa26bca4/security/manager/ssl/src/IntolerantFallbackList.inc |
07:34 | <annevk> | karlcow: euh, emk did point that out, someone else did |
07:34 | <annevk> | karlcow: e.g. images.w.o spec.w.o validator.w.o all fail too |
07:35 | <karlcow> | ah yes. |
07:35 | <karlcow> | https://bugzilla.mozilla.org/show_bug.cgi?id=1137079#c6 |
07:35 | karlcow | hopes the whitelist is serverside and not included in the client. |
07:37 | <annevk> | karlcow: it's included in the client |
07:37 | <annevk> | karlcow: not sure why it matters |
07:40 | <karlcow> | annevk: for updates. |
07:40 | <karlcow> | When it's included in the client you create a delay |
07:41 | <karlcow> | it's becoming an acute issue when it's on Mobile. |
07:41 | <karlcow> | because not all operators decide to update the OS. |
07:41 | <karlcow> | (for FIrefox OS) |
07:41 | <karlcow> | so you keep having a whitelist which is not accurate anymore. |
07:41 | <karlcow> | And domains get bought by other people, etc. |
07:42 | <karlcow> | We had the issue for UA override on Firefox OS 1.0. |
07:43 | <karlcow> | So we decided to switch to server-side for the next version. |
07:44 | <karlcow> | So we could remove (or add) at will a UA override without having to wait for the operator to cherry pick the update, or waiting that it will never update. :) |
07:48 | <annevk> | That depends on what the update logic is. If operators decide to remove the update logic... |
08:35 | <JakeA> | wanderview: yeah, kill it |
08:53 | <JakeA> | wanderview: I've removed it from the spec. I forgot it was still there. I think there are uses, but we'll properly think it through before adding it back |
09:08 | <zcorpan> | Hixie: looks like there are a few markup errors in your source that darobin fixed in https://github.com/w3c/spork/commits/master (like x-data) |
09:39 | <JakeA> | "Release the storage mutex!" is my favourite thing to shout in an evil voice |
10:07 | <annevk> | JakeA: why is default() still in the spec? |
10:08 | <annevk> | JakeA: also, nobody implements the storage mutex :-( |
10:08 | <JakeA> | annevk: I'm working through issues now. Will get to that one :) |
10:08 | <annevk> | JakeA++ |
10:09 | <annevk> | (I like to think that gives you extra speed.) |
10:12 | <JakeA> | :D |
11:58 | <JakeA> | annevk: https://github.com/slightlyoff/ServiceWorker/issues/631#issuecomment-75740946 are you saying the client may have gone before the beacon initiates its request? |
12:15 | <JakeA> | annevk: So, without event.default(), how would I fetch a resource (say, CSS) in a way that makes relative urls in the CSS relative to finalURL |
12:15 | <JakeA> | ? |
13:33 | <annevk> | JakeA: yes, the client may have gone |
13:34 | <annevk> | JakeA: ping="" and such are required to be done at some point, but usually after the user has navigated away, the whole point is that they're a replacement for synchronous beforeunload tricks |
13:34 | <annevk> | JakeA: might still not be a problem I suppose, depends a bit on the definitions |
13:34 | <JakeA> | annevk: that's a good case for it being clientless, or perhaps even not using the SW at all |
13:34 | <annevk> | JakeA: I think it should use the SW just like it should be subject to CSP, we don't really want special cases |
13:35 | <JakeA> | that's fair, as long as they don't hold up a waiting SW promoting to active |
13:35 | <annevk> | JakeA: people are going to want to be able to catch all networking activity |
13:35 | <JakeA> | but I think that's fine |
13:35 | <annevk> | JakeA: https://fetch.spec.whatwg.org/#dom-response-finalurl was the answer we designed together for base URLs |
13:37 | <JakeA> | annevk: if I use fetch('/static/fallback.html') as a response to a navigation, does it effect base urls or the url bar? |
13:39 | <annevk> | JakeA: not unless you set finalURL |
13:40 | <annevk> | JakeA: I'm not sure we fully considered the case of contexts that set the manual redirect flag though... Hmm |
13:40 | <JakeA> | annevk: ahhh ok, so it's not automatically set. So fetch('/blah.css') will swallow redirects by default, if I want the base url to reflect that I have to set finalURL manually (but, I can't observe the redirects) |
13:41 | <annevk> | JakeA: yes |
13:42 | <annevk> | JakeA: for navigation and other contexts that don't follow redirects finalURL should probably be either be ignored or be cause for a network error or a really special synthetic redirect that I'm sure of how it would work |
13:43 | <JakeA> | ignore seems good |
13:43 | <JakeA> | annevk: So if I wanted to fetch(someCSS) & have potential redirects reflected in the base url, is there a way to do that? |
13:46 | <annevk> | JakeA: yeah, but it's cumbersome I see now |
13:46 | <annevk> | JakeA: once you get hold of res, you'd do res.finalURL = true |
13:46 | <JakeA> | ohhhhhhhhh, it's a boolean! |
13:46 | <JakeA> | That was the missing bit |
13:46 | <JakeA> | nah, that's not cumbersome that's fine |
13:46 | <annevk> | JakeA: but it seems like you want something like fetch(someCSS, {finalURL:true }) maybe... hmm |
13:47 | <annevk> | ok |
13:47 | <annevk> | It feels a bit better to expose it only on response |
13:47 | <JakeA> | fetch(url).then(r => r.finalURL = true && r) |
13:47 | <JakeA> | fetch(url).then(r => (r.finalURL = true) && r) |
13:49 | <JakeA> | annevk: Willing to bikeshed on the name? I totally assumed finalURL would be a string url |
13:51 | <annevk> | JakeA: yeah, though I would prefer a ticket someplace then |
13:55 | <JakeA> | annevk: https://github.com/slightlyoff/ServiceWorker/issues/607#issuecomment-76181254 |
13:57 | <annevk> | JakeA: yeah that seems good, and yeah, it's supposed to be stored as part of transfering the response |
13:58 | <annevk> | JakeA: otherwise it wouldn't make it into the Fetch process either |
14:02 | <annevk> | "Intent to Remove showModalDialog" exciting day |
14:18 | <annevk> | JakeA: renamed finalURL btw |
14:18 | <JakeA> | \o/ |
14:18 | <JakeA> | Lemmie remove event.default() |
14:18 | <JakeA> | I'm going to enjoy this |
14:36 | <r4vi> | is there any proposals for a 'force incognito' API |
14:36 | <r4vi> | for sites that say domestic abuse victims |
14:36 | <r4vi> | or something would use |
14:42 | <JakeA> | It'd be nice if a browser could take a tab incognito. Undoing history should be ok, tougher to deal with cookie/idb/ls changes |
14:43 | <zcorpan> | JakeA: try opera 12 |
14:43 | <JakeA> | zcorpan: did it do that? |
14:43 | <JakeA> | those guys thought of everything |
14:43 | <zcorpan> | yes |
14:44 | <jgraham> | "Opera did it first" |
14:44 | <zcorpan> | well you could open a new private tab, you couldn't make an existing tab private |
14:45 | <JakeA> | oh, I meant taking an existing tab private |
14:45 | <JakeA> | *everyone* can open private tabs |
14:45 | <zcorpan> | um... how? |
14:46 | <JakeA> | incognito… or are you going to be pedantic and say that's a new window not tab? :P |
14:46 | <zcorpan> | yes? of course a window is not a tab :-) |
14:46 | <JakeA> | *fert* |
14:47 | <JakeA> | that's a fart sound for your pedantry |
14:48 | <zcorpan> | ah ok, i never knew it was pedantry that came out of my ass :-D |
14:49 | <JakeA> | But the idea of a forcing incognito is interesting. It'd need to be done as a header. I imagine banks would all do it for "security" reasons, so the user would need a way to opt out, and if that opt out is "remembered" you kinda lose the original use-case |
14:49 | <zcorpan> | so going back, what would you expect to happen when you make an existing tab private? |
14:50 | <JakeA> | zcorpan: it to "undo" any non-private stuff it did, and reload in private mode. I realise the undo part is not really possible |
14:51 | <JakeA> | r4vi: is this just a sudden idea or is a group lobbying for this? |
14:53 | <r4vi> | JakeA: I'm actually working on a site that would find this useful |
14:53 | <r4vi> | so sudden idea |
14:53 | <jgraham> | It should be noted that it doesn't offer any "meaningful" security e.g. someone could set up the router to log all outbound DNS |
14:53 | <JakeA> | that's true. Could even be false security. |
14:53 | <jgraham> | Of course the population of people who would do that is smaller than the population of people that can look through browser history |
14:54 | <r4vi> | JakeA: we're currently linking them to this guide http://www.youandco.org.uk/node/240 |
14:54 | <r4vi> | but wish there was a more user-friendly way |
17:19 | <Ms2ger> | :( https://bugzilla.mozilla.org/show_bug.cgi?id=1107378 |
17:29 | <jgraham> | Not that surprising |
18:09 | <Ms2ger> | So who supports before/afterscriptexecute now? Gecko/Servo/Presto? |
18:27 | <wanderview> | JakeA: if a ServiceWorker script does "new Worker('nested_worker.js')"... is that something we support? should the nested worker script be automatically cached like importScript()? |
19:11 | <JakeA> | wanderview: I don't see why we wouldn't support it, but I don't think it should be importScript cached. |
19:11 | <JakeA> | But it wouldn't be a lot of use |
19:12 | <JakeA> | But if devs find a use for it, they can store the script text in idb or a cache |
19:28 | <wanderview> | JakeA: I think we're going to disallow it for now in gecko... another problem is life cycle... if the SW gets killed at any time... it should stop the dedicated worker... (right?) seems like it will be very difficult to use |
19:28 | <wanderview> | JakeA: if they store the script text manually... then they are using a data URI worker, right? |
19:29 | <wanderview> | it was my impressions blink didn't support nested workers at all yet, anyway... so this may just be a gecko thing |
19:41 | <JakeA> | wanderview: yeah, and yeah it'll get killed when the SW does. I can't think of many use cases for wanting a dedicated worker in a SW. |
19:41 | <wanderview> | JakeA: the nested SharedWorker, though... that could be useful |
19:42 | <JakeA> | wanderview: an interesting question I guess is whether the request for the worker/sharedworker goes through the SW |
19:43 | <wanderview> | JakeA: if it originates from a ServiceWorker, I thought the skip serviceworker flag was set |
19:46 | <wanderview> | JakeA: so if the sharedworker was first created from the document... then intercepted by SW... if first created from SW, then no interception... so dead simple for devs! |
19:46 | <wanderview> | ^so dead simple^sounds dead simple |
19:46 | <wanderview> | of course no one supports this case currently as far I know |
19:46 | <wanderview> | we only expose SharedWorker on the main thread |
20:36 | <Ms2ger> | longdesc is a rec |
20:36 | <Ms2ger> | Good job everyone |
20:37 | <Ms2ger> | Can we now finally go back to something useful? |
20:44 | <smaug____> | like reviewing perf wg's specs? Sounds like a good idea |
20:44 | smaug____ | hears Ms2ger just volunteered |
20:45 | <Ms2ger> | I was thinking more shutting them down on the next rechartering |
20:45 | <jamesr___> | sgtm |
20:45 | <jamesr___> | like most things in w3c it was created to work around other badness in w3c process |
20:46 | <jamesr___> | now that all vendors have official joined the WG there's no point in having it be separate |
20:46 | <jamesr___> | (before they joined there was the possibility of moving things through that WG faster than others like public-webapps due to membership differences) |
20:46 | <smaug____> | (perf wg's issues aren't w3c process issues) |
20:47 | smaug____ | goes back to reviewing |
20:47 | <Ms2ger> | Perf wg is more "eh, whatever" |
20:47 | <Ms2ger> | "You got comments? Ain't nobody got time for that!" |
20:55 | <TabAtkins> | Ms2ger: "But we can measure exactly how much time ain't nobody got!" |
20:58 | <miketaylr> | can't wait for longdesc2 |
21:21 | <jamesr___> | smaug____: i'm just talking about why it was created and used, not how it functions in practice |
21:21 | <jamesr___> | i agree it's pretty terrible |
21:30 | <smaug____> | ah, I don't even recall why it was created (and why the specs aren't written in webapps wg) |
21:45 | <jamesr___> | concerns about charter or velocity or both in the webapps wg |
21:46 | <jamesr___> | in w3c if you make a new wg you get to pick the members and charter and you can pick a set of members that will agree to the charter you want |
21:46 | <jamesr___> | whereas to spec a new thing in an existing WG you have to make sure it's within charter and if not get all existing members of the WG to agree to that charter |
21:46 | <Ms2ger> | In whatwg, you can write a spec :) |
21:51 | <caitp-> | who is going to stop you from writing a spec |
21:52 | <caitp-> | the tzar of the internet? |
22:12 | <jamesr___> | if you want to publish it as a w3c spec (which some people find important, not that i find all that much value in that personally) then the w3c will |
22:13 | <Ms2ger> | Sure, every monkey can get a spec published at w3c |
22:13 | <Ms2ger> | Case in point: me |
22:14 | <TabAtkins> | Ms2ger: Wait, which spec did you write? |
22:15 | <Ms2ger> | DOM |
22:15 | <Ms2ger> | Under various names |
22:15 | <wanderview> | jsbell: hi! do you know about how blink offlines the ServiceWorker script itself and its importScript() scripts? |
22:16 | <wanderview> | jsbell: just curious how blink handles a delayed importScript() call... like if the script does setTimeout(function() { importScript('annoying.js'); }, 5000) |
22:17 | <wanderview> | I guess we just don't guarantee that any delayed script loads will be cached? |
22:17 | <wanderview> | just makes it difficult to ensure we have a coherent set of scripts cached for offline use |
22:17 | <TabAtkins> | wanderview: ServiceWorkers that last too long just get killed; nothing gets preserved across. |
22:18 | <TabAtkins> | If you want to cache scripts with better guarantees, do a standard fetch and put it in a cache, then import it. |
22:19 | <wanderview> | TabAtkins: with importScript(datauri) or something? I wasn't clear how someone could take a fetch Response and get it into importScript() |
22:19 | <TabAtkins> | Given the current API, yeah, a data: url. |
22:21 | <wanderview> | TabAtkins: so you think this is a dev evangelism issue? people should just use importScripts() synchronously with the top line SW script or not at all? |
22:21 | <TabAtkins> | I suspect so, yeah. |
22:21 | <TabAtkins> | Standard SW wisdom: don't count on anything sticking around, you'll be disappointed eventually. |
22:22 | <wanderview> | TabAtkins: yea... I know... but as an implementer, I'd like to be able to say "we've successfully offlined this SW and its dependent scripts"... but basically we can't ever know when its done |
22:22 | <TabAtkins> | Well, yeah, you have no idea when a SW is going to request more things off the network. |
22:24 | <wanderview> | I guess thats why this is still open: https://github.com/slightlyoff/ServiceWorker/issues/106 |
22:25 | <slightlyoff> | hrm, I'm not sure that still needs to be open |
22:26 | <slightlyoff> | TabAtkins: also, that's pretty BS |
22:26 | <Ms2ger> | Bikeshed? |
22:26 | <TabAtkins> | slightlyoff: ? |
22:26 | <slightlyoff> | TabAtkins: "requesting more things off the network" post-install-setup phase means you didn't really want 'em |
22:26 | <slightlyoff> | TabAtkins: if you liked it, you should have put a top-level importScripts() on it |
22:27 | <TabAtkins> | Um, okay. I mean, sure, it's obviously not a *strict dependency*, but I fail to see the relevance. |
22:27 | <wanderview> | slightlyoff: its unclear to me from #106 what the end result of this was... |
22:28 | <wanderview> | and searching the spec for importScript does not reveal anything |
22:28 | slightlyoff | looks |
22:28 | <slightlyoff> | yeah, I'm not sure we spec'd it, so having it open does seem right |
22:28 | <wanderview> | sorry if its obvious and I missed it |
22:29 | <wanderview> | it sounds like its just a best effort caching... when the ServiceWorker script loads something through importScript()... put it in the cache |
22:29 | <slightlyoff> | or behavior (Blink) is to cache resources requested at initial download time (via importScripts) alongside the SW script version |
22:29 | <slightlyoff> | and the dependencies are only updated when the SW script updates |
22:29 | <wanderview> | slightlyoff: for delayed importScripts... it does not cache? |
22:29 | <slightlyoff> | (e.g., you run through an upgrade) |
22:29 | <wanderview> | or thats just best effort |
22:29 | <slightlyoff> | wanderview: I don't think we cache. |
22:30 | <wanderview> | hmm |
22:30 | <slightlyoff> | wanderview: at least not more than the HTTP cache provides |
22:30 | <slightlyoff> | wanderview: and that's the intended behavior |
22:30 | <slightlyoff> | wanderview: you can do more eval()-ing cache'd content if you want to |
22:31 | <slightlyoff> | wanderview: but that's all very explicit, which is what we were going for in the design |
22:31 | <wanderview> | slightlyoff: in gecko, I'm not sure we have an easy way to tell the difference between top level importScripts() and delayed importScripts() |
22:31 | <slightlyoff> | you don't have some marker for the SW script that you're caching? |
22:32 | <slightlyoff> | i.e., do you have a way of storing the SW script that opts it out of HTTP cache eviction? |
22:32 | <slightlyoff> | I don't know it's a problem to cache other importScripts more aggressively |
22:32 | <wanderview> | slightlyoff: we definitely know which one is the SW script |
22:33 | <slightlyoff> | but I think we want to keep devs from depending on that |
22:33 | <wanderview> | I'm not 100% sure... but I think the importScripts all just come out of the js engine as "something called importScripts!"... we don't know which parent script called it |
22:33 | <slightlyoff> | otherwise it becomes nearly impossible to reason about what's going to work in your SW as a download error in an importScript can screw you entirely |
22:33 | wanderview | traces more code. |
22:34 | <slightlyoff> | how do you keep them with the same durability as the SW script? That's the only invariant we NEED to preserve |
22:34 | <wanderview> | slightlyoff: we are internally using the Cache API |
22:34 | <slightlyoff> | would be fatal to a site if it importscripts started failing but the main SW script were there |
22:34 | <slightlyoff> | wanderview: seems legit. Don't think you've got a problem here then. |
22:34 | <wanderview> | slightlyoff: right... we are keeping the importScripts as persistent as the SW script... |
22:35 | <wanderview> | slightlyoff: its just we may over-cache compared to blink |
22:35 | <wanderview> | for delayed importScripts |
22:35 | <wanderview> | its a subtle compatibility difference... hopefully it doesn't bite too many people |
22:36 | <slightlyoff> | I think that's fine; contra TabAtkins, we're going to understand install-time vs. post-install-time requests for imported scripts |
22:36 | <wanderview> | I guess the http cache being there also muddies the water... people may think its fully offlined, but its just an aging http cache |
22:36 | <slightlyoff> | TabAtkins: I don't think this is really that bad, though...do you? |
22:36 | <slightlyoff> | wanderview: I think our long-term solution will be devtools warnings about dynamic importScripts() calls |
22:37 | <TabAtkins> | I'm pretty sure everything you said agrees with what I said, so no, I don't think it's bad. ^_^ |
22:37 | <slightlyoff> | TabAtkins: ah, right, then I misunderstood you. Sorry! |
22:37 | <wanderview> | thanks for the help |
22:37 | <TabAtkins> | (I said that dynamic/delayed importScript() calls should instead be fetch()/cache, then import them when you're sure they've arrived.) |
22:38 | <slightlyoff> | TabAtkins: yeah, that's totally true |
22:38 | <slightlyoff> | will ping jungkees about getting this squred away. I think we only need to say that importScripts post-initial-download MAY be discarded by the UA |
22:39 | <slightlyoff> | wanderview: using the Cache API should prevent the real compat worry (in my mind), which is the scripts getting updated at different rates by UAs |
22:43 | <wanderview> | slightlyoff: I've been corrected by baku and nsm... we do have a way to implement the same "cache only top importScript() calls" |
22:43 | <wanderview> | we're going to do that |
22:43 | <slightlyoff> | rad! |
22:44 | slightlyoff | does happy compatibility dance |
22:44 | <wanderview> | yea, good to be compatible and I like knowing when we are done caching |
22:44 | <wanderview> | slightlyoff: so I guess formalize that behavior in the spec? |
22:44 | <slightlyoff> | yep! |
22:44 | <wanderview> | awesome, thanks! |
22:48 | <TabAtkins> | +1 |