Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(616)

Side by Side Diff: content/browser/media/webrtc/webrtc_internals_browsertest.cc

Issue 2052633002: Extend the ToRenderFrameHost magic to FrameTreeNode* and Shell* (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix induced script bug. Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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 <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 7
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/json/json_reader.h" 9 #include "base/json/json_reader.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
157 157
158 void SetUpOnMainThread() override { 158 void SetUpOnMainThread() override {
159 base::CommandLine::ForCurrentProcess()->AppendSwitch( 159 base::CommandLine::ForCurrentProcess()->AppendSwitch(
160 switches::kUseFakeUIForMediaStream); 160 switches::kUseFakeUIForMediaStream);
161 ASSERT_TRUE(base::CommandLine::ForCurrentProcess()->HasSwitch( 161 ASSERT_TRUE(base::CommandLine::ForCurrentProcess()->HasSwitch(
162 switches::kUseFakeDeviceForMediaStream)); 162 switches::kUseFakeDeviceForMediaStream));
163 } 163 }
164 164
165 protected: 165 protected:
166 bool ExecuteJavascript(const string& javascript) { 166 bool ExecuteJavascript(const string& javascript) {
167 return ExecuteScript(shell()->web_contents(), javascript); 167 return ExecuteScript(shell(), javascript);
168 } 168 }
169 169
170 void ExpectTitle(const std::string& expected_title) const { 170 void ExpectTitle(const std::string& expected_title) const {
171 base::string16 expected_title16(base::ASCIIToUTF16(expected_title)); 171 base::string16 expected_title16(base::ASCIIToUTF16(expected_title));
172 TitleWatcher title_watcher(shell()->web_contents(), expected_title16); 172 TitleWatcher title_watcher(shell()->web_contents(), expected_title16);
173 EXPECT_EQ(expected_title16, title_watcher.WaitAndGetTitle()); 173 EXPECT_EQ(expected_title16, title_watcher.WaitAndGetTitle());
174 } 174 }
175 175
176 // Execute the javascript of addPeerConnection. 176 // Execute the javascript of addPeerConnection.
177 void ExecuteAddPeerConnectionJs(const PeerConnectionEntry& pc) { 177 void ExecuteAddPeerConnectionJs(const PeerConnectionEntry& pc) {
(...skipping 26 matching lines...) Expand all
204 std::stringstream ss; 204 std::stringstream ss;
205 ss << "{rid:" << rid << "}"; 205 ss << "{rid:" << rid << "}";
206 ASSERT_TRUE( 206 ASSERT_TRUE(
207 ExecuteJavascript("removeGetUserMediaForRenderer(" + ss.str() + ");")); 207 ExecuteJavascript("removeGetUserMediaForRenderer(" + ss.str() + ");"));
208 } 208 }
209 209
210 // Verifies that the DOM element with id |id| exists. 210 // Verifies that the DOM element with id |id| exists.
211 void VerifyElementWithId(const string& id) { 211 void VerifyElementWithId(const string& id) {
212 bool result = false; 212 bool result = false;
213 ASSERT_TRUE(ExecuteScriptAndExtractBool( 213 ASSERT_TRUE(ExecuteScriptAndExtractBool(
214 shell()->web_contents(), 214 shell(),
215 "window.domAutomationController.send($('" + id + "') != null);", 215 "window.domAutomationController.send($('" + id + "') != null);",
216 &result)); 216 &result));
217 EXPECT_TRUE(result); 217 EXPECT_TRUE(result);
218 } 218 }
219 219
220 // Verifies that the DOM element with id |id| does not exist. 220 // Verifies that the DOM element with id |id| does not exist.
221 void VerifyNoElementWithId(const string& id) { 221 void VerifyNoElementWithId(const string& id) {
222 bool result = false; 222 bool result = false;
223 ASSERT_TRUE(ExecuteScriptAndExtractBool( 223 ASSERT_TRUE(ExecuteScriptAndExtractBool(
224 shell()->web_contents(), 224 shell(),
225 "window.domAutomationController.send($('" + id + "') == null);", 225 "window.domAutomationController.send($('" + id + "') == null);",
226 &result)); 226 &result));
227 EXPECT_TRUE(result); 227 EXPECT_TRUE(result);
228 } 228 }
229 229
230 // Verifies the JS Array of userMediaRequests matches |requests|. 230 // Verifies the JS Array of userMediaRequests matches |requests|.
231 void VerifyUserMediaRequest( 231 void VerifyUserMediaRequest(
232 const std::vector<UserMediaRequestEntry>& requests) { 232 const std::vector<UserMediaRequestEntry>& requests) {
233 string json_requests; 233 string json_requests;
234 ASSERT_TRUE(ExecuteScriptAndExtractString( 234 ASSERT_TRUE(
235 shell()->web_contents(), 235 ExecuteScriptAndExtractString(shell(),
236 "window.domAutomationController.send(" 236 "window.domAutomationController.send("
237 "JSON.stringify(userMediaRequests));", 237 " JSON.stringify(userMediaRequests));",
238 &json_requests)); 238 &json_requests));
239 std::unique_ptr<base::Value> value_requests = 239 std::unique_ptr<base::Value> value_requests =
240 base::JSONReader::Read(json_requests); 240 base::JSONReader::Read(json_requests);
241 241
242 EXPECT_EQ(base::Value::TYPE_LIST, value_requests->GetType()); 242 EXPECT_EQ(base::Value::TYPE_LIST, value_requests->GetType());
243 243
244 base::ListValue* list_request = 244 base::ListValue* list_request =
245 static_cast<base::ListValue*>(value_requests.get()); 245 static_cast<base::ListValue*>(value_requests.get());
246 EXPECT_EQ(requests.size(), list_request->GetSize()); 246 EXPECT_EQ(requests.size(), list_request->GetSize());
247 247
248 for (size_t i = 0; i < requests.size(); ++i) { 248 for (size_t i = 0; i < requests.size(); ++i) {
249 base::DictionaryValue* dict = NULL; 249 base::DictionaryValue* dict = NULL;
250 ASSERT_TRUE(list_request->GetDictionary(i, &dict)); 250 ASSERT_TRUE(list_request->GetDictionary(i, &dict));
251 int pid, rid; 251 int pid, rid;
252 std::string origin, audio, video; 252 std::string origin, audio, video;
253 ASSERT_TRUE(dict->GetInteger("pid", &pid)); 253 ASSERT_TRUE(dict->GetInteger("pid", &pid));
254 ASSERT_TRUE(dict->GetInteger("rid", &rid)); 254 ASSERT_TRUE(dict->GetInteger("rid", &rid));
255 ASSERT_TRUE(dict->GetString("origin", &origin)); 255 ASSERT_TRUE(dict->GetString("origin", &origin));
256 ASSERT_TRUE(dict->GetString("audio", &audio)); 256 ASSERT_TRUE(dict->GetString("audio", &audio));
257 ASSERT_TRUE(dict->GetString("video", &video)); 257 ASSERT_TRUE(dict->GetString("video", &video));
258 EXPECT_EQ(requests[i].pid, pid); 258 EXPECT_EQ(requests[i].pid, pid);
259 EXPECT_EQ(requests[i].rid, rid); 259 EXPECT_EQ(requests[i].rid, rid);
260 EXPECT_EQ(requests[i].origin, origin); 260 EXPECT_EQ(requests[i].origin, origin);
261 EXPECT_EQ(requests[i].audio_constraints, audio); 261 EXPECT_EQ(requests[i].audio_constraints, audio);
262 EXPECT_EQ(requests[i].video_constraints, video); 262 EXPECT_EQ(requests[i].video_constraints, video);
263 } 263 }
264 264
265 bool user_media_tab_existed = false; 265 bool user_media_tab_existed = false;
266 ASSERT_TRUE(ExecuteScriptAndExtractBool( 266 ASSERT_TRUE(
267 shell()->web_contents(), 267 ExecuteScriptAndExtractBool(shell(),
268 "window.domAutomationController.send(" 268 "window.domAutomationController.send("
269 "$('user-media-tab-id') != null);", 269 " $('user-media-tab-id') != null);",
270 &user_media_tab_existed)); 270 &user_media_tab_existed));
271 EXPECT_EQ(!requests.empty(), user_media_tab_existed); 271 EXPECT_EQ(!requests.empty(), user_media_tab_existed);
272 272
273 if (user_media_tab_existed) { 273 if (user_media_tab_existed) {
274 int user_media_request_count = -1; 274 int user_media_request_count = -1;
275 ASSERT_TRUE(ExecuteScriptAndExtractInt( 275 ASSERT_TRUE(ExecuteScriptAndExtractInt(
276 shell()->web_contents(), 276 shell(),
277 "window.domAutomationController.send(" 277 "window.domAutomationController.send("
278 "$('user-media-tab-id').childNodes.length);", 278 " $('user-media-tab-id').childNodes.length);",
279 &user_media_request_count)); 279 &user_media_request_count));
280 ASSERT_EQ(requests.size(), static_cast<size_t>(user_media_request_count)); 280 ASSERT_EQ(requests.size(), static_cast<size_t>(user_media_request_count));
281 } 281 }
282 } 282 }
283 283
284 // Verifies that DOM for |pc| is correctly created with the right content. 284 // Verifies that DOM for |pc| is correctly created with the right content.
285 void VerifyPeerConnectionEntry(const PeerConnectionEntry& pc) { 285 void VerifyPeerConnectionEntry(const PeerConnectionEntry& pc) {
286 VerifyElementWithId(pc.getIdString()); 286 VerifyElementWithId(pc.getIdString());
287 if (pc.events_.size() == 0) 287 if (pc.events_.size() == 0)
288 return; 288 return;
289 289
290 string log_id = pc.getLogIdString(); 290 string log_id = pc.getLogIdString();
291 VerifyElementWithId(log_id); 291 VerifyElementWithId(log_id);
292 string result; 292 string result;
293 for (size_t i = 0; i < pc.events_.size(); ++i) { 293 for (size_t i = 0; i < pc.events_.size(); ++i) {
294 std::stringstream ss; 294 std::stringstream ss;
295 ss << "var row = $('" << log_id << "').rows[" << (i + 1) << "];" 295 ss << "var row = $('" << log_id << "').rows[" << (i + 1) << "];"
296 "var cell = row.lastChild;" 296 "var cell = row.lastChild;"
297 "window.domAutomationController.send(cell.firstChild.textContent);"; 297 "window.domAutomationController.send(cell.firstChild.textContent);";
298 ASSERT_TRUE(ExecuteScriptAndExtractString( 298 ASSERT_TRUE(ExecuteScriptAndExtractString(shell(), ss.str(), &result));
299 shell()->web_contents(), ss.str(), &result));
300 EXPECT_EQ(pc.events_[i].type + pc.events_[i].value, result); 299 EXPECT_EQ(pc.events_[i].type + pc.events_[i].value, result);
301 } 300 }
302 } 301 }
303 302
304 // Executes the javascript of updatePeerConnection and verifies the result. 303 // Executes the javascript of updatePeerConnection and verifies the result.
305 void ExecuteAndVerifyUpdatePeerConnection( 304 void ExecuteAndVerifyUpdatePeerConnection(
306 PeerConnectionEntry& pc, const string& type, const string& value) { 305 PeerConnectionEntry& pc, const string& type, const string& value) {
307 pc.AddEvent(type, value); 306 pc.AddEvent(type, value);
308 307
309 std::stringstream ss; 308 std::stringstream ss;
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
351 350
352 // Verifies that the row named as |name| of the stats table |table_id| has 351 // Verifies that the row named as |name| of the stats table |table_id| has
353 // the correct content as |name| : |value|. 352 // the correct content as |name| : |value|.
354 void VerifyStatsTableRow(const string& table_id, 353 void VerifyStatsTableRow(const string& table_id,
355 const string& name, 354 const string& name,
356 const string& value) { 355 const string& value) {
357 VerifyElementWithId(table_id + "-" + name); 356 VerifyElementWithId(table_id + "-" + name);
358 357
359 string result; 358 string result;
360 ASSERT_TRUE(ExecuteScriptAndExtractString( 359 ASSERT_TRUE(ExecuteScriptAndExtractString(
361 shell()->web_contents(), 360 shell(),
362 "var row = $('" + table_id + "-" + name + "');" 361 "var row = $('" + table_id + "-" + name + "');"
363 "var name = row.cells[0].textContent;" 362 "var name = row.cells[0].textContent;"
364 "var value = row.cells[1].textContent;" 363 "var value = row.cells[1].textContent;"
365 "window.domAutomationController.send(name + ':' + value)", 364 "window.domAutomationController.send(name + ':' + value)",
366 &result)); 365 &result));
367 EXPECT_EQ(name + ":" + value, result); 366 EXPECT_EQ(name + ":" + value, result);
368 } 367 }
369 368
370 // Verifies that the graph data series consistent with pc.stats_. 369 // Verifies that the graph data series consistent with pc.stats_.
371 void VerifyStatsGraph(const PeerConnectionEntry& pc) { 370 void VerifyStatsGraph(const PeerConnectionEntry& pc) {
(...skipping 16 matching lines...) Expand all
388 } 387 }
389 } 388 }
390 } 389 }
391 } 390 }
392 391
393 // Verifies that the graph data point at index |index| has value |value|. 392 // Verifies that the graph data point at index |index| has value |value|.
394 void VerifyGraphDataPoint(const string& pc_id, const string& graph_id, 393 void VerifyGraphDataPoint(const string& pc_id, const string& graph_id,
395 int index, const string& value) { 394 int index, const string& value) {
396 bool result = false; 395 bool result = false;
397 ASSERT_TRUE(ExecuteScriptAndExtractBool( 396 ASSERT_TRUE(ExecuteScriptAndExtractBool(
398 shell()->web_contents(), 397 shell(),
399 "window.domAutomationController.send(" 398 "window.domAutomationController.send("
400 "graphViews['" + pc_id + "-" + graph_id + "'] != null)", 399 "graphViews['" + pc_id + "-" + graph_id + "'] != null)",
401 &result)); 400 &result));
402 EXPECT_TRUE(result); 401 EXPECT_TRUE(result);
403 402
404 std::stringstream ss; 403 std::stringstream ss;
405 ss << "var dp = peerConnectionDataStore['" << pc_id << "']" 404 ss << "var dp = peerConnectionDataStore['" << pc_id << "']"
406 ".getDataSeries('" << graph_id << "').dataPoints_[" << index << "];" 405 ".getDataSeries('" << graph_id << "').dataPoints_[" << index << "];"
407 "window.domAutomationController.send(dp.value.toString())"; 406 "window.domAutomationController.send(dp.value.toString())";
408 string actual_value; 407 string actual_value;
409 ASSERT_TRUE(ExecuteScriptAndExtractString( 408 ASSERT_TRUE(
410 shell()->web_contents(), ss.str(), &actual_value)); 409 ExecuteScriptAndExtractString(shell(), ss.str(), &actual_value));
411 EXPECT_EQ(value, actual_value); 410 EXPECT_EQ(value, actual_value);
412 } 411 }
413 412
414 // Get the JSON string of the ssrc info from the page. 413 // Get the JSON string of the ssrc info from the page.
415 string GetSsrcInfo(const string& ssrc_id) { 414 string GetSsrcInfo(const string& ssrc_id) {
416 string result; 415 string result;
417 EXPECT_TRUE(ExecuteScriptAndExtractString( 416 EXPECT_TRUE(ExecuteScriptAndExtractString(
418 shell()->web_contents(), 417 shell(),
419 "window.domAutomationController.send(JSON.stringify(" 418 "window.domAutomationController.send(JSON.stringify("
420 "ssrcInfoManager.streamInfoContainer_['" + ssrc_id + "']))", 419 "ssrcInfoManager.streamInfoContainer_['" + ssrc_id + "']))",
421 &result)); 420 &result));
422 return result; 421 return result;
423 } 422 }
424 423
425 int GetSsrcInfoBlockCount(Shell* shell) { 424 int GetSsrcInfoBlockCount(Shell* shell) {
426 int count = 0; 425 int count = 0;
427 EXPECT_TRUE(ExecuteScriptAndExtractInt( 426 EXPECT_TRUE(ExecuteScriptAndExtractInt(
428 shell->web_contents(), 427 shell,
429 "window.domAutomationController.send(" 428 "window.domAutomationController.send("
430 "document.getElementsByClassName(" 429 " document.getElementsByClassName("
431 "ssrcInfoManager.SSRC_INFO_BLOCK_CLASS).length);", 430 " ssrcInfoManager.SSRC_INFO_BLOCK_CLASS).length);",
432 &count)); 431 &count));
433 return count; 432 return count;
434 } 433 }
435 434
436 // Verifies |dump| contains |peer_connection_number| peer connection dumps, 435 // Verifies |dump| contains |peer_connection_number| peer connection dumps,
437 // each containing |update_number| updates and |stats_number| stats tables. 436 // each containing |update_number| updates and |stats_number| stats tables.
438 void VerifyPageDumpStructure(base::Value* dump, 437 void VerifyPageDumpStructure(base::Value* dump,
439 int peer_connection_number, 438 int peer_connection_number,
440 int update_number, 439 int update_number,
441 int stats_number) { 440 int stats_number) {
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
615 stats.values["googTransmitBitrate"] = "1000000"; 614 stats.values["googTransmitBitrate"] = "1000000";
616 const string stats_type = "bwe"; 615 const string stats_type = "bwe";
617 const string stats_id = "videobwe"; 616 const string stats_id = "videobwe";
618 ExecuteAndVerifyAddStats(pc, stats_type, stats_id, stats); 617 ExecuteAndVerifyAddStats(pc, stats_type, stats_id, stats);
619 618
620 string graph_id = 619 string graph_id =
621 pc.getIdString() + "-" + stats_id + "-bweCompound"; 620 pc.getIdString() + "-" + stats_id + "-bweCompound";
622 bool result = false; 621 bool result = false;
623 // Verify that the bweCompound graph exists. 622 // Verify that the bweCompound graph exists.
624 ASSERT_TRUE(ExecuteScriptAndExtractBool( 623 ASSERT_TRUE(ExecuteScriptAndExtractBool(
625 shell()->web_contents(), 624 shell(),
626 "window.domAutomationController.send(" 625 "window.domAutomationController.send("
627 " graphViews['" + graph_id + "'] != null)", 626 " graphViews['" + graph_id + "'] != null)",
628 &result)); 627 &result));
629 EXPECT_TRUE(result); 628 EXPECT_TRUE(result);
630 629
631 // Verify that the bweCompound graph contains multiple dataSeries. 630 // Verify that the bweCompound graph contains multiple dataSeries.
632 int count = 0; 631 int count = 0;
633 ASSERT_TRUE(ExecuteScriptAndExtractInt( 632 ASSERT_TRUE(ExecuteScriptAndExtractInt(
634 shell()->web_contents(), 633 shell(),
635 "window.domAutomationController.send(" 634 "window.domAutomationController.send("
636 " graphViews['" + graph_id + "'].getDataSeriesCount())", 635 " graphViews['" + graph_id + "'].getDataSeriesCount())",
637 &count)); 636 &count));
638 EXPECT_EQ((int)stats.values.size(), count); 637 EXPECT_EQ((int)stats.values.size(), count);
639 } 638 }
640 639
641 // Tests that the total packet/byte count is converted to count per second, 640 // Tests that the total packet/byte count is converted to count per second,
642 // and the converted data is drawn. 641 // and the converted data is drawn.
643 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcInternalsBrowserTest, ConvertedGraphs) { 642 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcInternalsBrowserTest, ConvertedGraphs) {
644 GURL url("chrome://webrtc-internals"); 643 GURL url("chrome://webrtc-internals");
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
694 // Open webrtc-internals in the second window. 693 // Open webrtc-internals in the second window.
695 GURL url2("chrome://webrtc-internals"); 694 GURL url2("chrome://webrtc-internals");
696 Shell* shell2 = CreateBrowser(); 695 Shell* shell2 = CreateBrowser();
697 NavigateToURL(shell2, url2); 696 NavigateToURL(shell2, url2);
698 697
699 const int NUMBER_OF_PEER_CONNECTIONS = 2; 698 const int NUMBER_OF_PEER_CONNECTIONS = 2;
700 699
701 // Verifies the number of peerconnections. 700 // Verifies the number of peerconnections.
702 int count = 0; 701 int count = 0;
703 ASSERT_TRUE(ExecuteScriptAndExtractInt( 702 ASSERT_TRUE(ExecuteScriptAndExtractInt(
704 shell2->web_contents(), 703 shell2,
705 "window.domAutomationController.send(" 704 "window.domAutomationController.send("
706 "$('peer-connections-list').getElementsByTagName('li').length);", 705 " $('peer-connections-list').getElementsByTagName('li').length);",
707 &count)); 706 &count));
708 EXPECT_EQ(NUMBER_OF_PEER_CONNECTIONS, count); 707 EXPECT_EQ(NUMBER_OF_PEER_CONNECTIONS, count);
709 708
710 // Verifies the the event tables. 709 // Verifies the the event tables.
711 ASSERT_TRUE(ExecuteScriptAndExtractInt( 710 ASSERT_TRUE(ExecuteScriptAndExtractInt(
712 shell2->web_contents(), 711 shell2,
713 "window.domAutomationController.send($('peer-connections-list')" 712 "window.domAutomationController.send($('peer-connections-list')"
714 ".getElementsByClassName('update-log-table').length);", 713 " .getElementsByClassName('update-log-table').length);",
715 &count)); 714 &count));
716 EXPECT_EQ(NUMBER_OF_PEER_CONNECTIONS, count); 715 EXPECT_EQ(NUMBER_OF_PEER_CONNECTIONS, count);
717 716
718 ASSERT_TRUE(ExecuteScriptAndExtractInt( 717 ASSERT_TRUE(ExecuteScriptAndExtractInt(
719 shell2->web_contents(), 718 shell2,
720 "window.domAutomationController.send($('peer-connections-list')" 719 "window.domAutomationController.send($('peer-connections-list')"
721 ".getElementsByClassName('update-log-table')[0].rows.length);", 720 " .getElementsByClassName('update-log-table')[0].rows.length);",
722 &count)); 721 &count));
723 EXPECT_GT(count, 1); 722 EXPECT_GT(count, 1);
724 723
725 ASSERT_TRUE(ExecuteScriptAndExtractInt( 724 ASSERT_TRUE(ExecuteScriptAndExtractInt(
726 shell2->web_contents(), 725 shell2,
727 "window.domAutomationController.send($('peer-connections-list')" 726 "window.domAutomationController.send($('peer-connections-list')"
728 ".getElementsByClassName('update-log-table')[1].rows.length);", 727 " .getElementsByClassName('update-log-table')[1].rows.length);",
729 &count)); 728 &count));
730 EXPECT_GT(count, 1); 729 EXPECT_GT(count, 1);
731 730
732 // Wait until the stats table containers are created. 731 // Wait until the stats table containers are created.
733 count = 0; 732 count = 0;
734 while (count != NUMBER_OF_PEER_CONNECTIONS) { 733 while (count != NUMBER_OF_PEER_CONNECTIONS) {
735 ASSERT_TRUE(ExecuteScriptAndExtractInt( 734 ASSERT_TRUE(ExecuteScriptAndExtractInt(
736 shell2->web_contents(), 735 shell2,
737 "window.domAutomationController.send(" 736 "window.domAutomationController.send("
738 "$('peer-connections-list').getElementsByClassName(" 737 " $('peer-connections-list').getElementsByClassName("
739 "'stats-table-container').length);", 738 " 'stats-table-container').length);",
740 &count)); 739 &count));
741 } 740 }
742 741
743 // Verifies each stats table having more than one rows. 742 // Verifies each stats table having more than one rows.
744 bool result = false; 743 bool result = false;
745 ASSERT_TRUE(ExecuteScriptAndExtractBool( 744 ASSERT_TRUE(ExecuteScriptAndExtractBool(
746 shell2->web_contents(), 745 shell2,
747 "var tableContainers = $('peer-connections-list')" 746 "var tableContainers = $('peer-connections-list')"
748 ".getElementsByClassName('stats-table-container');" 747 " .getElementsByClassName('stats-table-container');"
749 "var result = true;" 748 "var result = true;"
750 "for (var i = 0; i < tableContainers.length && result; ++i) {" 749 "for (var i = 0; i < tableContainers.length && result; ++i) {"
751 "var tables = tableContainers[i].getElementsByTagName('table');" 750 " var tables = tableContainers[i].getElementsByTagName('table');"
752 "for (var j = 0; j < tables.length && result; ++j) {" 751 " for (var j = 0; j < tables.length && result; ++j) {"
753 "result = (tables[j].rows.length > 1);" 752 " result = (tables[j].rows.length > 1);"
754 "}" 753 " }"
755 "if (!result) {" 754 " if (!result) {"
756 "console.log(tableContainers[i].innerHTML);" 755 " console.log(tableContainers[i].innerHTML);"
757 "}" 756 " }"
758 "}" 757 "}"
759 "window.domAutomationController.send(result);", 758 "window.domAutomationController.send(result);",
760 &result)); 759 &result));
761 760
762 EXPECT_TRUE(result); 761 EXPECT_TRUE(result);
763 762
764 count = GetSsrcInfoBlockCount(shell2); 763 count = GetSsrcInfoBlockCount(shell2);
765 EXPECT_GT(count, 0); 764 EXPECT_GT(count, 0);
766 } 765 }
767 766
768 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcInternalsBrowserTest, CreatePageDump) { 767 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcInternalsBrowserTest, CreatePageDump) {
769 GURL url("chrome://webrtc-internals"); 768 GURL url("chrome://webrtc-internals");
770 NavigateToURL(shell(), url); 769 NavigateToURL(shell(), url);
771 770
772 PeerConnectionEntry pc_0(1, 0); 771 PeerConnectionEntry pc_0(1, 0);
773 pc_0.AddEvent("e1", "v1"); 772 pc_0.AddEvent("e1", "v1");
774 pc_0.AddEvent("e2", "v2"); 773 pc_0.AddEvent("e2", "v2");
775 PeerConnectionEntry pc_1(1, 1); 774 PeerConnectionEntry pc_1(1, 1);
776 pc_1.AddEvent("e3", "v3"); 775 pc_1.AddEvent("e3", "v3");
777 pc_1.AddEvent("e4", "v4"); 776 pc_1.AddEvent("e4", "v4");
778 string pc_array = 777 string pc_array =
779 "[" + pc_0.getAllUpdateString() + ", " + pc_1.getAllUpdateString() + "]"; 778 "[" + pc_0.getAllUpdateString() + ", " + pc_1.getAllUpdateString() + "]";
780 EXPECT_TRUE(ExecuteJavascript("updateAllPeerConnections(" + pc_array + ");")); 779 EXPECT_TRUE(ExecuteJavascript("updateAllPeerConnections(" + pc_array + ");"));
781 780
782 // Verifies the peer connection data store can be created without stats. 781 // Verifies the peer connection data store can be created without stats.
783 string dump_json; 782 string dump_json;
784 ASSERT_TRUE(ExecuteScriptAndExtractString( 783 ASSERT_TRUE(ExecuteScriptAndExtractString(
785 shell()->web_contents(), 784 shell(),
786 "window.domAutomationController.send(" 785 "window.domAutomationController.send("
787 "JSON.stringify(peerConnectionDataStore));", 786 " JSON.stringify(peerConnectionDataStore));",
788 &dump_json)); 787 &dump_json));
789 std::unique_ptr<base::Value> dump = base::JSONReader::Read(dump_json); 788 std::unique_ptr<base::Value> dump = base::JSONReader::Read(dump_json);
790 VerifyPageDumpStructure(dump.get(), 789 VerifyPageDumpStructure(dump.get(),
791 2 /*peer_connection_number*/, 790 2 /*peer_connection_number*/,
792 2 /*update_number*/, 791 2 /*update_number*/,
793 0 /*stats_number*/); 792 0 /*stats_number*/);
794 793
795 // Adds a stats report. 794 // Adds a stats report.
796 const string type = "dummy"; 795 const string type = "dummy";
797 const string id = "1234"; 796 const string id = "1234";
798 StatsUnit stats = { FAKE_TIME_STAMP }; 797 StatsUnit stats = { FAKE_TIME_STAMP };
799 stats.values["bitrate"] = "2000"; 798 stats.values["bitrate"] = "2000";
800 stats.values["framerate"] = "30"; 799 stats.values["framerate"] = "30";
801 ExecuteAndVerifyAddStats(pc_0, type, id, stats); 800 ExecuteAndVerifyAddStats(pc_0, type, id, stats);
802 801
803 ASSERT_TRUE(ExecuteScriptAndExtractString( 802 ASSERT_TRUE(ExecuteScriptAndExtractString(
804 shell()->web_contents(), 803 shell(),
805 "window.domAutomationController.send(" 804 "window.domAutomationController.send("
806 "JSON.stringify(peerConnectionDataStore));", 805 " JSON.stringify(peerConnectionDataStore));",
807 &dump_json)); 806 &dump_json));
808 dump = base::JSONReader::Read(dump_json); 807 dump = base::JSONReader::Read(dump_json);
809 VerifyStatsDump(dump.get(), pc_0, type, id, stats); 808 VerifyStatsDump(dump.get(), pc_0, type, id, stats);
810 } 809 }
811 810
812 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcInternalsBrowserTest, UpdateGetUserMedia) { 811 IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcInternalsBrowserTest, UpdateGetUserMedia) {
813 GURL url("chrome://webrtc-internals"); 812 GURL url("chrome://webrtc-internals");
814 NavigateToURL(shell(), url); 813 NavigateToURL(shell(), url);
815 814
816 UserMediaRequestEntry request1(1, 1, "origin", "ac", "vc"); 815 UserMediaRequestEntry request1(1, 1, "origin", "ac", "vc");
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
851 const string stats_id = "videobwe"; 850 const string stats_id = "videobwe";
852 ExecuteAndVerifyAddStats(pc, stats_type, stats_id, stats); 851 ExecuteAndVerifyAddStats(pc, stats_type, stats_id, stats);
853 852
854 string graph_id = pc.getIdString() + "-" + stats_id + 853 string graph_id = pc.getIdString() + "-" + stats_id +
855 "-googReceivedPacketGroupPropagationDeltaDebug"; 854 "-googReceivedPacketGroupPropagationDeltaDebug";
856 string data_series_id = 855 string data_series_id =
857 stats_id + "-googReceivedPacketGroupPropagationDeltaDebug"; 856 stats_id + "-googReceivedPacketGroupPropagationDeltaDebug";
858 bool result = false; 857 bool result = false;
859 // Verify that the graph exists. 858 // Verify that the graph exists.
860 ASSERT_TRUE(ExecuteScriptAndExtractBool( 859 ASSERT_TRUE(ExecuteScriptAndExtractBool(
861 shell()->web_contents(), 860 shell(),
862 "window.domAutomationController.send(" 861 "window.domAutomationController.send("
863 " graphViews['" + graph_id + "'] != null)", 862 " graphViews['" + graph_id + "'] != null)",
864 &result)); 863 &result));
865 EXPECT_TRUE(result); 864 EXPECT_TRUE(result);
866 865
867 // Verify that the graph contains multiple data points. 866 // Verify that the graph contains multiple data points.
868 int count = 0; 867 int count = 0;
869 ASSERT_TRUE(ExecuteScriptAndExtractInt( 868 ASSERT_TRUE(ExecuteScriptAndExtractInt(
870 shell()->web_contents(), 869 shell(),
871 "window.domAutomationController.send(" 870 "window.domAutomationController.send("
872 " graphViews['" + graph_id + "'].getDataSeriesCount())", 871 " graphViews['" + graph_id + "'].getDataSeriesCount())",
873 &count)); 872 &count));
874 EXPECT_EQ(1, count); 873 EXPECT_EQ(1, count);
875 ASSERT_TRUE(ExecuteScriptAndExtractInt( 874 ASSERT_TRUE(ExecuteScriptAndExtractInt(
876 shell()->web_contents(), 875 shell(),
877 "window.domAutomationController.send(" 876 "window.domAutomationController.send("
878 " peerConnectionDataStore['" + pc.getIdString() + "']" + 877 " peerConnectionDataStore['" + pc.getIdString() + "']" +
879 " .getDataSeries('" + data_series_id + "').getCount())", 878 " .getDataSeries('" + data_series_id + "').getCount())",
880 &count)); 879 &count));
881 EXPECT_EQ(3, count); 880 EXPECT_EQ(3, count);
882 } 881 }
883 882
884 } // namespace content 883 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698