- From: Julian Reschke <julian.reschke@gmx.de>
- Date: Sat, 23 Jan 2010 08:47:32 +0100
- To: "Tab Atkins Jr." <jackalmage@gmail.com>
- CC: Karl Dubost <karl@la-grange.net>, "public-html@w3.org" <public-html@w3.org>
Tab Atkins Jr. wrote: > On Fri, Jan 22, 2010 at 10:28 PM, Karl Dubost <karl@la-grange.net> wrote: >> [23:24] <TabAtkins> karlcow: Yeah, it's wrong. The opaque-identifier portion should completely separate from the same-components section. If they're opaque, they don't *have* components. >> [23:25] <karlcow> TabAtkins: ah. I'll modify. It is not clear in the prose of the spec I have the feeling. >> [23:25] * karlcow likes to visualize to understand >> [23:26] <TabAtkins> If you translate it from prose directly to if/then code in your favorite programming language, it becomes very clear. ^_^ > > function sameOriginP(A,B) { > if(opaque(A) && opaque(B) && A.value == B.value) { > return true;} > if(opaque(A) || opaque(B)) { > return false;} > if(A.scheme != B.scheme || A.host != B.host || A.port != B.port) { > return false;} > for(key in A.extraData) { > if(A.extraData[key] != B.extraData[key]) { > return false;}} > for(key in B.extraData) { > //have to do it both ways with this method, in case B has some > extra data that A doesn't. > //there are probably better ways to handle this > if(A.extraData[key] != B.extraData[key]) { > return false;}} > return true; > } Once you use this notation you can simply say: if (A.value = B.value and A.scheme = B.scheme and A.host = B.host and A.port = B.port and A.extraData = B.extraData) Just define how missing components compare. Offlist I was asked why verbosity is a problem. The answer is really simple. As a reader, I want to know when two origins are equal. If this is defined in an 8-step algorithm, I'll have to work my way through this algorithm step by step and understand it. In particular, given the sheer amount of instructions, I *will* be confused because it really doesn't contain any surprises. This is a disservice to the reader. BTW: I haven't been looking for this example, I just came across it while looking at iframe/sandbox questions. Best regards, Julian
Received on Saturday, 23 January 2010 07:48:15 UTC