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

Side by Side Diff: chrome/browser/task_manager/task_manager_browsertest.cc

Issue 972083002: Report utility process JS memory in task manager. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@v8-pac-oop
Patch Set: Rebase and fix build. Created 5 years, 7 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "chrome/browser/task_manager/task_manager.h" 5 #include "chrome/browser/task_manager/task_manager.h"
6 6
7 #include "base/files/file_path.h" 7 #include "base/files/file_path.h"
8 #include "base/strings/stringprintf.h" 8 #include "base/strings/stringprintf.h"
9 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #include "chrome/browser/browser_process.h" 10 #include "chrome/browser/browser_process.h"
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 #include "testing/gtest/include/gtest/gtest.h" 48 #include "testing/gtest/include/gtest/gtest.h"
49 #include "ui/base/l10n/l10n_util.h" 49 #include "ui/base/l10n/l10n_util.h"
50 #include "ui/base/page_transition_types.h" 50 #include "ui/base/page_transition_types.h"
51 51
52 using content::WebContents; 52 using content::WebContents;
53 using task_manager::browsertest_util::MatchAboutBlankTab; 53 using task_manager::browsertest_util::MatchAboutBlankTab;
54 using task_manager::browsertest_util::MatchAnyApp; 54 using task_manager::browsertest_util::MatchAnyApp;
55 using task_manager::browsertest_util::MatchAnyExtension; 55 using task_manager::browsertest_util::MatchAnyExtension;
56 using task_manager::browsertest_util::MatchAnySubframe; 56 using task_manager::browsertest_util::MatchAnySubframe;
57 using task_manager::browsertest_util::MatchAnyTab; 57 using task_manager::browsertest_util::MatchAnyTab;
58 using task_manager::browsertest_util::MatchAnyUtility;
58 using task_manager::browsertest_util::MatchApp; 59 using task_manager::browsertest_util::MatchApp;
59 using task_manager::browsertest_util::MatchExtension; 60 using task_manager::browsertest_util::MatchExtension;
60 using task_manager::browsertest_util::MatchSubframe; 61 using task_manager::browsertest_util::MatchSubframe;
61 using task_manager::browsertest_util::MatchTab; 62 using task_manager::browsertest_util::MatchTab;
63 using task_manager::browsertest_util::MatchUtility;
62 using task_manager::browsertest_util::WaitForTaskManagerRows; 64 using task_manager::browsertest_util::WaitForTaskManagerRows;
63 using task_manager::browsertest_util::WaitForTaskManagerStatToExceed; 65 using task_manager::browsertest_util::WaitForTaskManagerStatToExceed;
64 66
65 namespace { 67 namespace {
66 68
67 const base::FilePath::CharType* kTitle1File = FILE_PATH_LITERAL("title1.html"); 69 const base::FilePath::CharType* kTitle1File = FILE_PATH_LITERAL("title1.html");
68 70
69 } // namespace 71 } // namespace
70 72
71 class TaskManagerBrowserTest : public ExtensionBrowserTest { 73 class TaskManagerBrowserTest : public ExtensionBrowserTest {
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 ExtensionBrowserTest::SetUpCommandLine(command_line); 121 ExtensionBrowserTest::SetUpCommandLine(command_line);
120 122
121 // Do not launch device discovery process. 123 // Do not launch device discovery process.
122 command_line->AppendSwitch(switches::kDisableDeviceDiscoveryNotifications); 124 command_line->AppendSwitch(switches::kDisableDeviceDiscoveryNotifications);
123 } 125 }
124 126
125 private: 127 private:
126 DISALLOW_COPY_AND_ASSIGN(TaskManagerBrowserTest); 128 DISALLOW_COPY_AND_ASSIGN(TaskManagerBrowserTest);
127 }; 129 };
128 130
131 class TaskManagerUtilityProcessBrowserTest : public TaskManagerBrowserTest {
132 public:
133 TaskManagerUtilityProcessBrowserTest() {}
134
135 protected:
136 void SetUpCommandLine(base::CommandLine* command_line) override {
137 TaskManagerBrowserTest::SetUpCommandLine(command_line);
138
139 // Enable out-of-process proxy resolver. Use a trivial PAC script to ensure
140 // that some javascript is being executed.
141 command_line->AppendSwitch(switches::kV8PacMojoOutOfProcess);
142 command_line->AppendSwitchASCII(
143 switches::kProxyPacUrl,
144 "data:,function FindProxyForURL(url, host){return \"DIRECT;\";}");
145 }
146
147 private:
148 DISALLOW_COPY_AND_ASSIGN(TaskManagerUtilityProcessBrowserTest);
149 };
150
129 // Parameterized variant of TaskManagerBrowserTest which runs with/without 151 // Parameterized variant of TaskManagerBrowserTest which runs with/without
130 // --site-per-process, which enables out of process iframes (OOPIFs). 152 // --site-per-process, which enables out of process iframes (OOPIFs).
131 class TaskManagerOOPIFBrowserTest : public TaskManagerBrowserTest, 153 class TaskManagerOOPIFBrowserTest : public TaskManagerBrowserTest,
132 public testing::WithParamInterface<bool> { 154 public testing::WithParamInterface<bool> {
133 public: 155 public:
134 TaskManagerOOPIFBrowserTest() {} 156 TaskManagerOOPIFBrowserTest() {}
135 157
136 protected: 158 protected:
137 void SetUpCommandLine(base::CommandLine* command_line) override { 159 void SetUpCommandLine(base::CommandLine* command_line) override {
138 TaskManagerBrowserTest::SetUpCommandLine(command_line); 160 TaskManagerBrowserTest::SetUpCommandLine(command_line);
(...skipping 695 matching lines...) Expand 10 before | Expand all | Expand 10 after
834 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerStatToExceed( 856 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerStatToExceed(
835 MatchTab("title1.html"), task_manager::browsertest_util::V8_MEMORY, 857 MatchTab("title1.html"), task_manager::browsertest_util::V8_MEMORY,
836 minimal_heap_size)); 858 minimal_heap_size));
837 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerStatToExceed( 859 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerStatToExceed(
838 MatchTab("title1.html"), task_manager::browsertest_util::V8_MEMORY_USED, 860 MatchTab("title1.html"), task_manager::browsertest_util::V8_MEMORY_USED,
839 minimal_heap_size)); 861 minimal_heap_size));
840 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab())); 862 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
841 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchTab("title1.html"))); 863 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchTab("title1.html")));
842 } 864 }
843 865
866 // Checks that task manager counts utility process JS heap size.
867 IN_PROC_BROWSER_TEST_F(TaskManagerUtilityProcessBrowserTest,
868 UtilityJSHeapMemory) {
869 ShowTaskManager();
870 ui_test_utils::NavigateToURL(browser(), GetTestURL());
871 // The PAC script is trivial, so don't expect a large heap.
872 size_t minimal_heap_size = 1024;
873 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerStatToExceed(
874 MatchUtility(
875 l10n_util::GetStringUTF16(IDS_UTILITY_PROCESS_PROXY_RESOLVER_NAME)),
876 task_manager::browsertest_util::V8_MEMORY,
877 minimal_heap_size));
878 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerStatToExceed(
879 MatchUtility(
880 l10n_util::GetStringUTF16(IDS_UTILITY_PROCESS_PROXY_RESOLVER_NAME)),
881 task_manager::browsertest_util::V8_MEMORY_USED,
882 minimal_heap_size));
883 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyUtility()));
884 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(
885 1, MatchUtility(l10n_util::GetStringUTF16(
886 IDS_UTILITY_PROCESS_PROXY_RESOLVER_NAME))));
887 }
888
844 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, DevToolsNewDockedWindow) { 889 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, DevToolsNewDockedWindow) {
845 ShowTaskManager(); // Task manager shown BEFORE dev tools window. 890 ShowTaskManager(); // Task manager shown BEFORE dev tools window.
846 891
847 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab())); 892 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
848 DevToolsWindow* devtools = 893 DevToolsWindow* devtools =
849 DevToolsWindowTesting::OpenDevToolsWindowSync(browser(), true); 894 DevToolsWindowTesting::OpenDevToolsWindowSync(browser(), true);
850 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyTab())); 895 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyTab()));
851 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyTab())); 896 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyTab()));
852 DevToolsWindowTesting::CloseDevToolsWindowSync(devtools); 897 DevToolsWindowTesting::CloseDevToolsWindowSync(devtools);
853 } 898 }
(...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after
1160 WaitForTaskManagerRows(1, MatchTab("Title Of Awesomeness"))); 1205 WaitForTaskManagerRows(1, MatchTab("Title Of Awesomeness")));
1161 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnySubframe())); 1206 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnySubframe()));
1162 1207
1163 HideTaskManager(); 1208 HideTaskManager();
1164 ShowTaskManager(); 1209 ShowTaskManager();
1165 1210
1166 ASSERT_NO_FATAL_FAILURE( 1211 ASSERT_NO_FATAL_FAILURE(
1167 WaitForTaskManagerRows(1, MatchTab("Title Of Awesomeness"))); 1212 WaitForTaskManagerRows(1, MatchTab("Title Of Awesomeness")));
1168 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnySubframe())); 1213 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnySubframe()));
1169 } 1214 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698