Closed Bug 1326392 Opened 5 years ago Closed 5 years ago

Unable to log in on starbucks.com

Categories

(Web Compatibility :: Desktop, defect)

defect
Not set
normal

Tracking

(Not tracked)

VERIFIED FIXED

People

(Reporter: chiorean.ioana, Unassigned)

References

(Blocks 1 open bug)

Details

(Whiteboard: [webcompat])

I am unable to log into Starbucks.com from Firefox Nightly on Linux ( tested with clean profile too) 
I am ok login in from Chrome. 

I am only getting this in the console:
TypeError: Not allowed to define a non-configurable property on the WindowProxy object
Hmm, I'm unable to login in DevEdition on Mac as well (but I don't get that same error).
Whiteboard: [webcompat] → [webcompat][needsdiagnosis]
mozregresion explodes when trying to grab a taskcluster build, so this is as far as I got: https://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=1f77b78797d6&tochange=b0b3dcfa5557
But, https://hg.mozilla.org/mozilla-central/rev/e12159b9f891 is in there (Bug 1107443), which is what added the WindowProxy TypeError so seems like a safe guess.
Blocks: 1107443
So the gist of Bug 1107443 is that (for now) it shouldn't throw in Release or Beta, but ideally we can pin down the exact bug and ask Starbucks to fix it.
They have two functions r and d that call Object.defineProperty without passing `configurable:true`. So if window gets the property in either of these fns, it would throw (`configurable:false` being the default).

function d(t, e) {
    if (Object.defineProperty && Object.keys) try {
        var n = Object.keys(t);
        return n.forEach(function(n) {
            Object.defineProperty(e, n, {
                get: function() {
                    return t[n]
                },
                set: function(e) {
                    return t[n] = e, e
                }
            })
        }), e
    } catch (r) {
        l([r])
    }
    for (var o in t) c.call(t, o) && (e[o] = t[o]);
    return e
}

function r(t, e, n) {
    if (o.call(t, e)) return t[e];
    var r = n();
    if (Object.defineProperty && Object.keys) try {
        return Object.defineProperty(t, e, {
            value: r,
            writable: !0,
            enumerable: !1
        }), r
    } catch (i) {}
    return t[e] = r, r
}

Boris, do we know if others browsers want to implement this behavior (soon)? Or, do you know who might know?
Flags: needinfo?(bzbarsky)
> So if window gets the property in either of these fns, it would throw (`configurable:false` being the default).

The default is actually "whatever the current configurability is", not "false", and the code we have doesn't throw unless you _explicitly_ specify false.  So the page is doing that somewhere.  I haven't found where yet, but they're calling Object.defineProperty via .call() as far as I can tell, not directly.  The only thing I've found about it so far is that it's using "uniqueStateKey" as the property name.  Probably part of this:

        bundle.init("uniqueStateKey", 30, null, null, [{
...
                     "uniqueStateKey", "uniqueStateKey", "uniqueStateKey", 100, "AFebLlFZAQAALG3Ncz-XbvW4UAHkso5yg40nZw8ROEH1jovbUATjKjnL1jnJ", "X-", 79e2, "cookieName")

but I'm not sure where bundle.init is coming from...

In any case, the answer to your actual question is in bug 1178638 and it's that no one will talk to me.  We should probably accept that the ES spec is busted, stop caring about trying to fix it, and turn off these checks on nightly as well.
Flags: needinfo?(bzbarsky)
Ah, thanks. My mistake.

Debugging minified JS in our current devtools is basically impossible... :/ and I'm not sure it's worth doing the whole MITM dance since this issue affects other sites. If there were strong signals that Chrome was about to make this same change, I'd say we dig in further and ask Starbucks to fix it... but yeah.
Depends on: 1329323
Whiteboard: [webcompat][needsdiagnosis] → [webcompat]
Ioana, this should work in tomorrow's nightly -- can you test and close if so? Thanks!
Flags: needinfo?(chiorean.ioana)
Depends on: 1329324
Works like magic! Thanks guys!
Status: NEW → RESOLVED
Closed: 5 years ago
Flags: needinfo?(chiorean.ioana)
Resolution: --- → FIXED
Status: RESOLVED → VERIFIED
Product: Tech Evangelism → Web Compatibility
You need to log in before you can comment on or make changes to this bug.