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 "chrome/browser/power/process_power_collector.h" | 5 #include "chrome/browser/power/process_power_collector.h" |
6 | 6 |
7 #include "build/build_config.h" | 7 #include "build/build_config.h" |
8 #include "chrome/browser/apps/scoped_keep_alive.h" | 8 #include "chrome/browser/apps/scoped_keep_alive.h" |
9 #include "chrome/browser/profiles/profile_manager.h" | 9 #include "chrome/browser/profiles/profile_manager.h" |
10 #include "chrome/browser/ui/apps/chrome_app_delegate.h" | 10 #include "chrome/browser/ui/apps/chrome_app_delegate.h" |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
75 } | 75 } |
76 | 76 |
77 scoped_ptr<base::ProcessHandle> MakeProcessHandle(int process_id) { | 77 scoped_ptr<base::ProcessHandle> MakeProcessHandle(int process_id) { |
78 scoped_ptr<base::ProcessHandle> proc_handle(new base::ProcessHandle( | 78 scoped_ptr<base::ProcessHandle> proc_handle(new base::ProcessHandle( |
79 #if defined(OS_WIN) | 79 #if defined(OS_WIN) |
80 reinterpret_cast<HANDLE>(process_id)) | 80 reinterpret_cast<HANDLE>(process_id)) |
81 #else | 81 #else |
82 process_id) | 82 process_id) |
83 #endif | 83 #endif |
84 ); | 84 ); |
85 return proc_handle.Pass(); | 85 return proc_handle; |
86 } | 86 } |
87 | 87 |
88 scoped_ptr<ProcessPowerCollector> collector; | 88 scoped_ptr<ProcessPowerCollector> collector; |
89 scoped_ptr<TestingProfileManager> profile_manager_; | 89 scoped_ptr<TestingProfileManager> profile_manager_; |
90 }; | 90 }; |
91 | 91 |
92 TEST_F(BrowserProcessPowerTest, NoSite) { | 92 TEST_F(BrowserProcessPowerTest, NoSite) { |
93 collector->UpdatePowerConsumptionForTesting(); | 93 collector->UpdatePowerConsumptionForTesting(); |
94 EXPECT_EQ(0u, collector->metrics_map_for_testing()->size()); | 94 EXPECT_EQ(0u, collector->metrics_map_for_testing()->size()); |
95 } | 95 } |
96 | 96 |
97 TEST_F(BrowserProcessPowerTest, OneSite) { | 97 TEST_F(BrowserProcessPowerTest, OneSite) { |
98 GURL url("http://www.google.com"); | 98 GURL url("http://www.google.com"); |
99 AddTab(browser(), url); | 99 AddTab(browser(), url); |
100 collector->UpdatePowerConsumptionForTesting(); | 100 collector->UpdatePowerConsumptionForTesting(); |
101 ProcessPowerCollector::ProcessMetricsMap* metrics_map = | 101 ProcessPowerCollector::ProcessMetricsMap* metrics_map = |
102 collector->metrics_map_for_testing(); | 102 collector->metrics_map_for_testing(); |
103 EXPECT_EQ(1u, metrics_map->size()); | 103 EXPECT_EQ(1u, metrics_map->size()); |
104 | 104 |
105 // Create fake process numbers. | 105 // Create fake process numbers. |
106 GetProcess(browser())->SetProcessHandle(MakeProcessHandle(1).Pass()); | 106 GetProcess(browser())->SetProcessHandle(MakeProcessHandle(1)); |
107 | 107 |
108 OriginPowerMap* origin_power_map = | 108 OriginPowerMap* origin_power_map = |
109 OriginPowerMapFactory::GetForBrowserContext(profile()); | 109 OriginPowerMapFactory::GetForBrowserContext(profile()); |
110 EXPECT_EQ(0, origin_power_map->GetPowerForOrigin(url)); | 110 EXPECT_EQ(0, origin_power_map->GetPowerForOrigin(url)); |
111 | 111 |
112 collector->set_cpu_usage_callback_for_testing( | 112 collector->set_cpu_usage_callback_for_testing( |
113 base::Bind(&BrowserProcessPowerTest::ReturnCpuAsConstant, | 113 base::Bind(&BrowserProcessPowerTest::ReturnCpuAsConstant, |
114 base::Unretained(this), | 114 base::Unretained(this), |
115 5)); | 115 5)); |
116 EXPECT_DOUBLE_EQ(5, collector->UpdatePowerConsumptionForTesting()); | 116 EXPECT_DOUBLE_EQ(5, collector->UpdatePowerConsumptionForTesting()); |
117 EXPECT_EQ(100, origin_power_map->GetPowerForOrigin(url)); | 117 EXPECT_EQ(100, origin_power_map->GetPowerForOrigin(url)); |
118 } | 118 } |
119 | 119 |
120 TEST_F(BrowserProcessPowerTest, MultipleSites) { | 120 TEST_F(BrowserProcessPowerTest, MultipleSites) { |
121 Browser::CreateParams native_params(profile(), | 121 Browser::CreateParams native_params(profile(), |
122 chrome::HOST_DESKTOP_TYPE_NATIVE); | 122 chrome::HOST_DESKTOP_TYPE_NATIVE); |
123 GURL url1("http://www.google.com"); | 123 GURL url1("http://www.google.com"); |
124 GURL url2("http://www.example.com"); | 124 GURL url2("http://www.example.com"); |
125 GURL url3("https://www.google.com"); | 125 GURL url3("https://www.google.com"); |
126 scoped_ptr<Browser> browser2( | 126 scoped_ptr<Browser> browser2( |
127 chrome::CreateBrowserWithTestWindowForParams(&native_params)); | 127 chrome::CreateBrowserWithTestWindowForParams(&native_params)); |
128 scoped_ptr<Browser> browser3( | 128 scoped_ptr<Browser> browser3( |
129 chrome::CreateBrowserWithTestWindowForParams(&native_params)); | 129 chrome::CreateBrowserWithTestWindowForParams(&native_params)); |
130 AddTab(browser(), url1); | 130 AddTab(browser(), url1); |
131 AddTab(browser2.get(), url2); | 131 AddTab(browser2.get(), url2); |
132 AddTab(browser3.get(), url3); | 132 AddTab(browser3.get(), url3); |
133 | 133 |
134 // Create fake process numbers. | 134 // Create fake process numbers. |
135 GetProcess(browser())->SetProcessHandle(MakeProcessHandle(1).Pass()); | 135 GetProcess(browser())->SetProcessHandle(MakeProcessHandle(1)); |
136 GetProcess(browser2.get())->SetProcessHandle(MakeProcessHandle(2).Pass()); | 136 GetProcess(browser2.get())->SetProcessHandle(MakeProcessHandle(2)); |
137 GetProcess(browser3.get())->SetProcessHandle(MakeProcessHandle(3).Pass()); | 137 GetProcess(browser3.get())->SetProcessHandle(MakeProcessHandle(3)); |
138 | 138 |
139 collector->UpdatePowerConsumptionForTesting(); | 139 collector->UpdatePowerConsumptionForTesting(); |
140 ProcessPowerCollector::ProcessMetricsMap* metrics_map = | 140 ProcessPowerCollector::ProcessMetricsMap* metrics_map = |
141 collector->metrics_map_for_testing(); | 141 collector->metrics_map_for_testing(); |
142 EXPECT_EQ(3u, metrics_map->size()); | 142 EXPECT_EQ(3u, metrics_map->size()); |
143 | 143 |
144 // Since all handlers are uninitialized, this should be 0. | 144 // Since all handlers are uninitialized, this should be 0. |
145 EXPECT_DOUBLE_EQ(0, collector->UpdatePowerConsumptionForTesting()); | 145 EXPECT_DOUBLE_EQ(0, collector->UpdatePowerConsumptionForTesting()); |
146 OriginPowerMap* origin_power_map = | 146 OriginPowerMap* origin_power_map = |
147 OriginPowerMapFactory::GetForBrowserContext(profile()); | 147 OriginPowerMapFactory::GetForBrowserContext(profile()); |
(...skipping 23 matching lines...) Expand all Loading... |
171 chrome::HOST_DESKTOP_TYPE_NATIVE); | 171 chrome::HOST_DESKTOP_TYPE_NATIVE); |
172 scoped_ptr<Browser> incognito_browser( | 172 scoped_ptr<Browser> incognito_browser( |
173 chrome::CreateBrowserWithTestWindowForParams(&native_params)); | 173 chrome::CreateBrowserWithTestWindowForParams(&native_params)); |
174 GURL url("http://www.google.com"); | 174 GURL url("http://www.google.com"); |
175 AddTab(browser(), url); | 175 AddTab(browser(), url); |
176 | 176 |
177 GURL hidden_url("http://foo.com"); | 177 GURL hidden_url("http://foo.com"); |
178 AddTab(incognito_browser.get(), hidden_url); | 178 AddTab(incognito_browser.get(), hidden_url); |
179 | 179 |
180 // Create fake process numbers. | 180 // Create fake process numbers. |
181 GetProcess(browser())->SetProcessHandle(MakeProcessHandle(1).Pass()); | 181 GetProcess(browser())->SetProcessHandle(MakeProcessHandle(1)); |
182 GetProcess(incognito_browser.get()) | 182 GetProcess(incognito_browser.get())->SetProcessHandle(MakeProcessHandle(2)); |
183 ->SetProcessHandle(MakeProcessHandle(2).Pass()); | |
184 | 183 |
185 EXPECT_DOUBLE_EQ(0, collector->UpdatePowerConsumptionForTesting()); | 184 EXPECT_DOUBLE_EQ(0, collector->UpdatePowerConsumptionForTesting()); |
186 ProcessPowerCollector::ProcessMetricsMap* metrics_map = | 185 ProcessPowerCollector::ProcessMetricsMap* metrics_map = |
187 collector->metrics_map_for_testing(); | 186 collector->metrics_map_for_testing(); |
188 EXPECT_EQ(1u, metrics_map->size()); | 187 EXPECT_EQ(1u, metrics_map->size()); |
189 | 188 |
190 OriginPowerMap* origin_power_map = | 189 OriginPowerMap* origin_power_map = |
191 OriginPowerMapFactory::GetForBrowserContext(profile()); | 190 OriginPowerMapFactory::GetForBrowserContext(profile()); |
192 EXPECT_EQ(0, origin_power_map->GetPowerForOrigin(url)); | 191 EXPECT_EQ(0, origin_power_map->GetPowerForOrigin(url)); |
193 | 192 |
(...skipping 17 matching lines...) Expand all Loading... |
211 scoped_ptr<Browser> other_user( | 210 scoped_ptr<Browser> other_user( |
212 chrome::CreateBrowserWithTestWindowForParams(&native_params)); | 211 chrome::CreateBrowserWithTestWindowForParams(&native_params)); |
213 | 212 |
214 GURL url("http://www.google.com"); | 213 GURL url("http://www.google.com"); |
215 AddTab(browser(), url); | 214 AddTab(browser(), url); |
216 | 215 |
217 GURL hidden_url("http://foo.com"); | 216 GURL hidden_url("http://foo.com"); |
218 AddTab(other_user.get(), hidden_url); | 217 AddTab(other_user.get(), hidden_url); |
219 | 218 |
220 // Create fake process numbers. | 219 // Create fake process numbers. |
221 GetProcess(browser())->SetProcessHandle(MakeProcessHandle(1).Pass()); | 220 GetProcess(browser())->SetProcessHandle(MakeProcessHandle(1)); |
222 GetProcess(other_user.get())->SetProcessHandle(MakeProcessHandle(2).Pass()); | 221 GetProcess(other_user.get())->SetProcessHandle(MakeProcessHandle(2)); |
223 | 222 |
224 EXPECT_DOUBLE_EQ(0, collector->UpdatePowerConsumptionForTesting()); | 223 EXPECT_DOUBLE_EQ(0, collector->UpdatePowerConsumptionForTesting()); |
225 EXPECT_EQ(2u, collector->metrics_map_for_testing()->size()); | 224 EXPECT_EQ(2u, collector->metrics_map_for_testing()->size()); |
226 | 225 |
227 collector->set_cpu_usage_callback_for_testing( | 226 collector->set_cpu_usage_callback_for_testing( |
228 base::Bind(&BrowserProcessPowerTest::ReturnCpuAsConstant, | 227 base::Bind(&BrowserProcessPowerTest::ReturnCpuAsConstant, |
229 base::Unretained(this), | 228 base::Unretained(this), |
230 5)); | 229 5)); |
231 EXPECT_DOUBLE_EQ(10, collector->UpdatePowerConsumptionForTesting()); | 230 EXPECT_DOUBLE_EQ(10, collector->UpdatePowerConsumptionForTesting()); |
232 | 231 |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
288 base::Bind(&BrowserProcessPowerTest::ReturnCpuAsConstant, | 287 base::Bind(&BrowserProcessPowerTest::ReturnCpuAsConstant, |
289 base::Unretained(this), | 288 base::Unretained(this), |
290 5)); | 289 5)); |
291 collector->UpdatePowerConsumptionForTesting(); | 290 collector->UpdatePowerConsumptionForTesting(); |
292 EXPECT_EQ(1u, collector->metrics_map_for_testing()->size()); | 291 EXPECT_EQ(1u, collector->metrics_map_for_testing()->size()); |
293 | 292 |
294 window->OnNativeClose(); | 293 window->OnNativeClose(); |
295 collector->UpdatePowerConsumptionForTesting(); | 294 collector->UpdatePowerConsumptionForTesting(); |
296 EXPECT_EQ(0u, collector->metrics_map_for_testing()->size()); | 295 EXPECT_EQ(0u, collector->metrics_map_for_testing()->size()); |
297 } | 296 } |
OLD | NEW |