| 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 |