Tests scripts panel file selectors.

Adding first resource:
  Dumping ScriptsNavigator 'Scripts' tab:
    localhost:8080
  Dumping ScriptsNavigator 'Content scripts' tab:

Expanding domains:
  Dumping ScriptsNavigator 'Scripts' tab:
    localhost:8080
      LayoutTests/inspector/debugger/foo/bar
  Dumping ScriptsNavigator 'Content scripts' tab:

Adding second resource:
  Dumping ScriptsNavigator 'Scripts' tab:
    localhost:8080
      LayoutTests/inspector/debugger/foo/bar
  Dumping ScriptsNavigator 'Content scripts' tab:

Adding other resources:
  Dumping ScriptsNavigator 'Scripts' tab:
    localhost:8080
      LayoutTests/inspector/debugger/foo
  Dumping ScriptsNavigator 'Content scripts' tab:

Adding content scripts and some random resources:
  Dumping ScriptsNavigator 'Scripts' tab:
    (no domain)
    example.com
    localhost:8080
      LayoutTests/inspector/debugger/foo
  Dumping ScriptsNavigator 'Content scripts' tab:
    localhost:8080

Revealing first resource:
  Dumping ScriptsNavigator 'Scripts' tab:
    (no domain)
    example.com
    localhost:8080
      LayoutTests/inspector/debugger/foo
        bar
          script.js
          script.js?a=1
          script.js?a=2
        baz
  Dumping ScriptsNavigator 'Content scripts' tab:
    localhost:8080

Adding some resources to change the way debugger folder looks like, first:
  Dumping ScriptsNavigator 'Scripts' tab:
    (no domain)
    example.com
    localhost:8080
      LayoutTests/inspector
        debugger/foo
          bar
            script.js
            script.js?a=1
            script.js?a=2
          baz
        debugger2/foo/bar
  Dumping ScriptsNavigator 'Content scripts' tab:
    localhost:8080

Second:
  Dumping ScriptsNavigator 'Scripts' tab:
    (no domain)
    example.com
    localhost:8080
      LayoutTests/inspector
        debugger/foo
          bar
            script.js
            script.js?a=1
            script.js?a=2
          baz
        debugger2/foo/bar
  Dumping ScriptsNavigator 'Content scripts' tab:
    localhost:8080

Others:
  Dumping ScriptsNavigator 'Scripts' tab:
    (no domain)
    example.com
    localhost:8080
      LayoutTests/inspector
        debugger/foo
          bar
            script.js
            script.js?a=1
            script.js?a=2
          baz
        debugger2/foo
  Dumping ScriptsNavigator 'Content scripts' tab:
    localhost:8080

Revealing all resources:
  Dumping ScriptsNavigator 'Scripts' tab:
    (no domain)
      ?a=b
      very_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo…
    example.com
      (program)
      ?a=b
    localhost:8080
      LayoutTests/inspector
        debugger/foo
          bar
            script.js
            script.js?a=1
            script.js?a=2
          baz
            script.js
        debugger2/foo
          bar
            script.js
            script.js?a=1
            script.js?a=2
          baz
            script.js
  Dumping ScriptsNavigator 'Content scripts' tab:
    localhost:8080
      LayoutTests/inspector/debugger/foo/bar
        contentScript.js?a=1
        contentScript.js?a=2
        contentScript2.js?a=1

Removing all resources:
  Dumping ScriptsNavigator 'Scripts' tab:
  Dumping ScriptsNavigator 'Content scripts' tab:


