Add a pretty-printer that produces FrameTree diagrams with
commit44bacf3b85380d0466ea46ea5ab5fbb3d043e5b3
authornick <nick@chromium.org>
Tue, 14 Apr 2015 02:06:39 +0000 (13 19:06 -0700)
committerCommit bot <commit-bot@chromium.org>
Tue, 14 Apr 2015 02:07:15 +0000 (14 02:07 +0000)
tree68a3cd1cf82f528b07c83d19df1c658ad370ae99
parent1050ee48b1d8fe353bfc7df3b0ea4e5300260f5c
Add a pretty-printer that produces FrameTree diagrams with
high information density. Start using these diagrams
in assertions from SitePerProcessBrowserTest.

The diagrams show frame tree structure, SiteInstance of current
frames, presence of pending frames, and the SiteInstances of
any and all proxies. They look like this:

       Site A ------------ proxies for B C
         |--Site B ------- proxies for A C
         +--Site C ------- proxies for B A
              |--Site A -- proxies for B
              +--Site A -- proxies for B
                   +--Site A -- proxies for B
      Where A = http://127.0.0.1/
            B = http://foo.com/ (no process)
            C = http://bar.com/

The abbreviated names (A, B, C) are auto-generated in a way
that is both stable with respect to test evolution,
and close to the way we've been naming them intuitively.

The intended consequence of this approach is test assertions
that function not only as powerful validators of code behavior,
but also as a readable documentation of what's happening in
the test scenario.

BUG=475265,476628

Review URL: https://codereview.chromium.org/1077853003

Cr-Commit-Position: refs/heads/master@{#324988}
content/browser/frame_host/render_frame_host_manager.h
content/browser/site_per_process_browsertest.cc
content/browser/site_per_process_browsertest.h
content/test/content_browser_test_utils_internal.cc
content/test/content_browser_test_utils_internal.h