Closed Bug 1237043 Opened 8 years ago Closed 5 years ago

IFrame confusion for debugger when iframes injected

Categories

(DevTools :: Debugger, defect)

45 Branch
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED WORKSFORME

People

(Reporter: jonathan, Unassigned, NeedInfo)

Details

(Whiteboard: needs-review)

Given:
- A page with the FB JS sdk

1. Load page, open debugger
2. Reload the page multiple times

=> (A) Sources from the main page are gone, sources from the async loaded iframes from FB (xd_arbiter.php) are shown instead.

3. Reload page

=> (B) Wrong sources will still be in the list

4. Use iframe switcher to switch to first FB iframe

=> (C) Debugger is now empty with no sources in the list

5. Use iframe switch to switch back to main page context

=> (D) Debugger is still empty, no change from step 4.


What should happen:
- Sources are not confused on reload
- Given symptom (A), reloading page loads correct sources
- Given symptom (A), selecting new context should correctly load that context

I can't point to an online URL for reproduction, the bug is not readily reproducible and happening on a local project in development.
This can occur 10 times in a 5 minute period. If I develop Javascript all day, you can understand just the toll of restarting the debugger and re-putting the breakpoints is an annoyance that needs 10s of fixing every 90 seconds, multiplied by 6 hours. I could say this can easily make one go crazy, but I don't know what it takes to get all the debugger bugs fixed guys. As much as I hate the Chrome debugging interface, I think I'm going to go spend the day there.
Seriously, this makes the debugger completely unusable.
Got an STR here, it's reliable to me in Aurora 46 on OS X:

Given a file `repro-1237043.html` with:

```
<!DOCTYPE html>
<html>
<head>
  <title>1237043 Repro</title>
  <meta charset='utf-8'>
</head>
<body>
  <script>
    var APP_ID = '1692676280988223'
    window.fbAsyncInit = function() {
      FB.init({
        appId      : APP_ID,
        status     : true, // check login status
        version    : 'v2.5',
      });
    };

    // Load the SDK Asynchronously
    (function(d){
       var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
       js = d.createElement('script'); js.id = id; js.async = true;
       js.src = "//connect.facebook.net/fr_FR/sdk.js";
       d.getElementsByTagName('head')[0].appendChild(js);
     }(document));
  </script>
</body>
</html>
```

1. Open up a shell, start a static server on localhost port 5000:

```
$ python -m SimpleHTTPServer 5000
```

2. Visit `http://localhost:5000/repro-1237043.html` (FB cares about the domain being exact)

3. Open debugger. (You can see sources sdk.js, localhost html file)

4. Reload page twice.

=> Original sources gone, xd_arbiter is there (expected sources to stay the same)

5. Click in the toolbar "Select an iframe [...]"

=> Right frame is selected. (Expected sources to follow selected iframe)

6. Select xd_arbiter iframe, repeat, coming back to main frame

=> Sources go blank (Expected main frame source to refresh)
Product: Firefox → DevTools

Jonathan, would you mind seeing if this still occurs?

Flags: needinfo?(jonathan)
Whiteboard: needs-review

Jonathan, thanks for great STRs!

I've been testing this with 69 and it works for me.

Original sources gone, xd_arbiter is there (expected sources to stay the same)

I am seeing two sdk.js files and xd_arbiter
When switching to xd_arbiter iframe I only see xd_arbiter

I am closing this, but feel free to reopen if you still see the problem.

Honza

Status: UNCONFIRMED → RESOLVED
Closed: 5 years ago
Resolution: --- → WORKSFORME
You need to log in before you can comment on or make changes to this bug.