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

Unified Diff: chrome/browser/task_manager/task_manager_browsertest.cc

Issue 2905403002: plumb network upload into the task manager (Closed)
Patch Set: fixed comments Created 3 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/task_manager/task_manager_browsertest.cc
diff --git a/chrome/browser/task_manager/task_manager_browsertest.cc b/chrome/browser/task_manager/task_manager_browsertest.cc
index 51e133c5d75743e3fe9bdca0bb700e10838b202d..964116396cdcbab56bc38964588041a45e1d458b 100644
--- a/chrome/browser/task_manager/task_manager_browsertest.cc
+++ b/chrome/browser/task_manager/task_manager_browsertest.cc
@@ -672,6 +672,80 @@ IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, JSHeapMemory) {
ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchTab("title1.html")));
}
+IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, SentDataObserved) {
+ ShowTaskManager();
+ GURL test_gurl = embedded_test_server()->GetURL("/title1.html");
+
+ ui_test_utils::NavigateToURL(browser(), test_gurl);
+ std::string test_js = R"(
+ document.title = 'network use';
+ var mem = new Uint8Array(16 << 20);
+ for (var i = 0; i < mem.length; i += 16) {
+ mem[i] = i;
+ }
+ var formData = new FormData();
+ formData.append('StringKey1', new Blob([mem]));
+ var request =
+ new Request(location.href, {method: 'POST', body: formData});
+ fetch(request).then(response => response.text());
+ )";
+
+ browser()
+ ->tab_strip_model()
+ ->GetActiveWebContents()
+ ->GetMainFrame()
+ ->ExecuteJavaScriptForTests(base::UTF8ToUTF16(test_js));
+ // TODO(cburn): The assertion below currently assumes that the rate
+ // contribution of the entire 16MB upload arrives in a single refresh cycle.
+ // That's true now because it's only reported when the transaction completes,
+ // but if that changes in the future, this assertion may need to change.
+ ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerStatToExceed(
+ MatchTab("network use"), ColumnSpecifier::NETWORK_USE, 16000000));
+}
+
+IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, TotalSentDataObserved) {
+ ShowTaskManager();
+ GURL test_gurl = embedded_test_server()->GetURL("/title1.html");
+
+ ui_test_utils::NavigateToURL(browser(), test_gurl);
+ std::string test_js = R"(
+ document.title = 'network use';
+ var mem = new Uint8Array(16 << 20);
+ for (var i = 0; i < mem.length; i += 16) {
+ mem[i] = i;
+ }
+ var formData = new FormData();
+ formData.append('StringKey1', new Blob([mem]));
+ var request =
+ new Request(location.href, {method: 'POST', body: formData});
+ fetch(request).then(response => response.text());
+ )";
+
+ browser()
+ ->tab_strip_model()
+ ->GetActiveWebContents()
+ ->GetMainFrame()
+ ->ExecuteJavaScriptForTests(base::UTF8ToUTF16(test_js));
+
+ // This test uses |setTimeout| to exceed the Nyquist ratio to ensure that at
+ // least 1 refresh has happened of no traffic.
+ test_js = R"(
+ var request =
+ new Request(location.href, {method: 'POST', body: formData});
+ setTimeout(
+ () => {fetch(request).then(response => response.text())}, 2000);
+ )";
+
+ browser()
+ ->tab_strip_model()
+ ->GetActiveWebContents()
+ ->GetMainFrame()
+ ->ExecuteJavaScriptForTests(base::UTF8ToUTF16(test_js));
+ ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerStatToExceed(
+ MatchTab("network use"), ColumnSpecifier::TOTAL_NETWORK_USE,
+ 16000000 * 2));
+}
+
// Checks that task manager counts idle wakeups.
// Flakily fails on Mac: http://crbug.com/639939
#if defined(OS_MACOSX)

Powered by Google App Engine
This is Rietveld 408576698