OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/test/content_browser_test_utils_internal.h" | 5 #include "content/test/content_browser_test_utils_internal.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <map> | 10 #include <map> |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
80 // Traversal 3: Assign names to the proxies and add them to |legend| too. | 80 // Traversal 3: Assign names to the proxies and add them to |legend| too. |
81 // Typically, only openers should have their names assigned this way. | 81 // Typically, only openers should have their names assigned this way. |
82 for (to_explore.push(root); !to_explore.empty();) { | 82 for (to_explore.push(root); !to_explore.empty();) { |
83 FrameTreeNode* node = to_explore.top(); | 83 FrameTreeNode* node = to_explore.top(); |
84 to_explore.pop(); | 84 to_explore.pop(); |
85 for (size_t i = node->child_count(); i-- != 0;) { | 85 for (size_t i = node->child_count(); i-- != 0;) { |
86 to_explore.push(node->child_at(i)); | 86 to_explore.push(node->child_at(i)); |
87 } | 87 } |
88 | 88 |
89 // Sort the proxies by SiteInstance ID to avoid hash_map ordering. | 89 // Sort the proxies by SiteInstance ID to avoid hash_map ordering. |
90 std::map<int, RenderFrameProxyHost*> sorted_proxy_hosts = | 90 std::vector<SiteInstance*> site_instances; |
91 node->render_manager()->GetAllProxyHostsForTesting(); | 91 for (const auto& proxy_pair : |
92 for (auto& proxy_pair : sorted_proxy_hosts) { | 92 node->render_manager()->GetAllProxyHostsForTesting()) |
93 RenderFrameProxyHost* proxy = proxy_pair.second; | 93 site_instances.push_back(proxy_pair.second->GetSiteInstance()); |
94 legend[GetName(proxy->GetSiteInstance())] = proxy->GetSiteInstance(); | 94 std::sort(site_instances.begin(), site_instances.end(), |
95 } | 95 [](SiteInstance* lhs, SiteInstance* rhs) { |
| 96 return lhs->GetId() < rhs->GetId(); |
| 97 }); |
| 98 |
| 99 for (SiteInstance* site_instance : site_instances) |
| 100 legend[GetName(site_instance)] = site_instance; |
96 } | 101 } |
97 | 102 |
98 // Traversal 4: Now that all names are assigned, make a big loop to pretty- | 103 // Traversal 4: Now that all names are assigned, make a big loop to pretty- |
99 // print the tree. Each iteration produces exactly one line of format. | 104 // print the tree. Each iteration produces exactly one line of format. |
100 std::string result; | 105 std::string result; |
101 for (to_explore.push(root); !to_explore.empty();) { | 106 for (to_explore.push(root); !to_explore.empty();) { |
102 FrameTreeNode* node = to_explore.top(); | 107 FrameTreeNode* node = to_explore.top(); |
103 to_explore.pop(); | 108 to_explore.pop(); |
104 for (size_t i = node->child_count(); i-- != 0;) { | 109 for (size_t i = node->child_count(); i-- != 0;) { |
105 to_explore.push(node->child_at(i)); | 110 to_explore.push(node->child_at(i)); |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
148 if (pending) { | 153 if (pending) { |
149 base::StringAppendF(&line, " (%s pending)", | 154 base::StringAppendF(&line, " (%s pending)", |
150 GetName(pending->GetSiteInstance()).c_str()); | 155 GetName(pending->GetSiteInstance()).c_str()); |
151 } | 156 } |
152 if (spec) { | 157 if (spec) { |
153 base::StringAppendF(&line, " (%s speculative)", | 158 base::StringAppendF(&line, " (%s speculative)", |
154 GetName(spec->GetSiteInstance()).c_str()); | 159 GetName(spec->GetSiteInstance()).c_str()); |
155 } | 160 } |
156 | 161 |
157 // Show the SiteInstances of the RenderFrameProxyHosts of this node. | 162 // Show the SiteInstances of the RenderFrameProxyHosts of this node. |
158 std::map<int, RenderFrameProxyHost*> sorted_proxy_host_map = | 163 const auto& proxy_host_map = |
159 node->render_manager()->GetAllProxyHostsForTesting(); | 164 node->render_manager()->GetAllProxyHostsForTesting(); |
160 if (!sorted_proxy_host_map.empty()) { | 165 if (!proxy_host_map.empty()) { |
161 // Show a dashed line of variable length before the proxy list. Always at | 166 // Show a dashed line of variable length before the proxy list. Always at |
162 // least two dashes. | 167 // least two dashes. |
163 line.append(" --"); | 168 line.append(" --"); |
164 | 169 |
165 // To make proxy lists align vertically for the first three tree levels, | 170 // To make proxy lists align vertically for the first three tree levels, |
166 // pad with dashes up to a first tab stop at column 19 (which works out to | 171 // pad with dashes up to a first tab stop at column 19 (which works out to |
167 // text editor column 28 in the typical diagram fed to EXPECT_EQ as a | 172 // text editor column 28 in the typical diagram fed to EXPECT_EQ as a |
168 // string literal). Lining the lists up vertically makes differences in | 173 // string literal). Lining the lists up vertically makes differences in |
169 // the proxy sets easier to spot visually. We choose not to use the | 174 // the proxy sets easier to spot visually. We choose not to use the |
170 // *actual* tree height here, because that would make the diagram's | 175 // *actual* tree height here, because that would make the diagram's |
171 // appearance less stable as the tree's shape evolves. | 176 // appearance less stable as the tree's shape evolves. |
172 while (line.length() < 20) { | 177 while (line.length() < 20) { |
173 line.append("-"); | 178 line.append("-"); |
174 } | 179 } |
175 line.append(" proxies for"); | 180 line.append(" proxies for"); |
176 | 181 |
177 // Sort these alphabetically, to avoid hash_map ordering dependency. | 182 // Sort these alphabetically, to avoid hash_map ordering dependency. |
178 std::vector<std::string> sorted_proxy_hosts; | 183 std::vector<std::string> sorted_proxy_hosts; |
179 for (auto& proxy_pair : sorted_proxy_host_map) { | 184 for (const auto& proxy_pair : proxy_host_map) { |
180 sorted_proxy_hosts.push_back( | 185 sorted_proxy_hosts.push_back( |
181 GetName(proxy_pair.second->GetSiteInstance())); | 186 GetName(proxy_pair.second->GetSiteInstance())); |
182 } | 187 } |
183 std::sort(sorted_proxy_hosts.begin(), sorted_proxy_hosts.end()); | 188 std::sort(sorted_proxy_hosts.begin(), sorted_proxy_hosts.end()); |
184 for (std::string& proxy_name : sorted_proxy_hosts) { | 189 for (std::string& proxy_name : sorted_proxy_hosts) { |
185 base::StringAppendF(&line, " %s", proxy_name.c_str()); | 190 base::StringAppendF(&line, " %s", proxy_name.c_str()); |
186 } | 191 } |
187 } | 192 } |
188 if (node != root) | 193 if (node != root) |
189 result.append("\n"); | 194 result.append("\n"); |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
263 content::ResourceContext* resource_context, | 268 content::ResourceContext* resource_context, |
264 content::AppCacheService* appcache_service, | 269 content::AppCacheService* appcache_service, |
265 ResourceType resource_type, | 270 ResourceType resource_type, |
266 ScopedVector<content::ResourceThrottle>* throttles) { | 271 ScopedVector<content::ResourceThrottle>* throttles) { |
267 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); | 272 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); |
268 if (request->url() == url_) | 273 if (request->url() == url_) |
269 throttles->push_back(new HttpRequestStallThrottle); | 274 throttles->push_back(new HttpRequestStallThrottle); |
270 } | 275 } |
271 | 276 |
272 } // namespace content | 277 } // namespace content |
OLD | NEW |