// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CONTENT_TEST_CONTENT_BROWSER_TEST_UTILS_INTERNAL_H_ #define CONTENT_TEST_CONTENT_BROWSER_TEST_UTILS_INTERNAL_H_ // A collection of functions designed for use with content_shell based browser // tests internal to the content/ module. // Note: If a function here also works with browser_tests, it should be in // the content public API. #include #include #include "base/basictypes.h" class GURL; namespace content { class FrameTreeNode; class SiteInstance; // Navigates the frame represented by |node| to |url|, blocking until the // navigation finishes. void NavigateFrameToURL(FrameTreeNode* node, const GURL& url); // Creates compact textual representations of the state of the frame tree that // is appropriate for use in assertions. // // The diagrams show frame tree structure, the SiteInstance of current frames, // presence of pending frames, and the SiteInstances of any and all proxies. // They look like this: // // Site A (D pending) -- 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/ // D = http://next.com/ // // SiteInstances are assigned single-letter names (A, B, C) which are remembered // across invocations of the pretty-printer. class FrameTreeVisualizer { public: FrameTreeVisualizer(); ~FrameTreeVisualizer(); // Formats and returns a diagram for the provided FrameTreeNode. std::string DepictFrameTree(FrameTreeNode* root); private: // Assign or retrive the abbreviated short name (A, B, C) for a site instance. std::string GetName(SiteInstance* site_instance); // Elements are site instance ids. The index of the SiteInstance in the vector // determines the abbreviated name (0->A, 1->B) for that SiteInstance. std::vector seen_site_instance_ids_; DISALLOW_COPY_AND_ASSIGN(FrameTreeVisualizer); }; } // namespace content #endif // CONTENT_TEST_CONTENT_BROWSER_TEST_UTILS_INTERNAL_H_