| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 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 "base/file_util.h" | 5 #include "base/file_util.h" |
| 6 #include "base/run_loop.h" | 6 #include "base/run_loop.h" |
| 7 #include "content/browser/tracing/tracing_controller_impl.h" | 7 #include "content/browser/tracing/tracing_controller_impl.h" |
| 8 #include "content/public/test/browser_test_utils.h" | 8 #include "content/public/test/browser_test_utils.h" |
| 9 #include "content/shell/browser/shell.h" | 9 #include "content/shell/browser/shell.h" |
| 10 #include "content/test/content_browser_test.h" | 10 #include "content/test/content_browser_test.h" |
| (...skipping 29 matching lines...) Expand all Loading... |
| 40 EXPECT_TRUE(categories.size() > 0); | 40 EXPECT_TRUE(categories.size() > 0); |
| 41 quit_callback.Run(); | 41 quit_callback.Run(); |
| 42 } | 42 } |
| 43 | 43 |
| 44 void EnableRecordingDoneCallbackTest(base::Closure quit_callback) { | 44 void EnableRecordingDoneCallbackTest(base::Closure quit_callback) { |
| 45 enable_recording_done_callback_count_++; | 45 enable_recording_done_callback_count_++; |
| 46 quit_callback.Run(); | 46 quit_callback.Run(); |
| 47 } | 47 } |
| 48 | 48 |
| 49 void DisableRecordingDoneCallbackTest(base::Closure quit_callback, | 49 void DisableRecordingDoneCallbackTest(base::Closure quit_callback, |
| 50 scoped_ptr<base::FilePath> file_path) { | 50 const base::FilePath& file_path) { |
| 51 disable_recording_done_callback_count_++; | 51 disable_recording_done_callback_count_++; |
| 52 EXPECT_TRUE(PathExists(*file_path)); | 52 EXPECT_TRUE(PathExists(file_path)); |
| 53 int64 file_size; | 53 int64 file_size; |
| 54 file_util::GetFileSize(*file_path, &file_size); | 54 file_util::GetFileSize(file_path, &file_size); |
| 55 EXPECT_TRUE(file_size > 0); | 55 EXPECT_TRUE(file_size > 0); |
| 56 quit_callback.Run(); | 56 quit_callback.Run(); |
| 57 last_actual_recording_file_path_ = file_path; |
| 57 } | 58 } |
| 58 | 59 |
| 59 void EnableMonitoringDoneCallbackTest(base::Closure quit_callback) { | 60 void EnableMonitoringDoneCallbackTest(base::Closure quit_callback) { |
| 60 enable_monitoring_done_callback_count_++; | 61 enable_monitoring_done_callback_count_++; |
| 61 quit_callback.Run(); | 62 quit_callback.Run(); |
| 62 } | 63 } |
| 63 | 64 |
| 64 void DisableMonitoringDoneCallbackTest(base::Closure quit_callback) { | 65 void DisableMonitoringDoneCallbackTest(base::Closure quit_callback) { |
| 65 disable_monitoring_done_callback_count_++; | 66 disable_monitoring_done_callback_count_++; |
| 66 quit_callback.Run(); | 67 quit_callback.Run(); |
| 67 } | 68 } |
| 68 | 69 |
| 69 void CaptureMonitoringSnapshotDoneCallbackTest( | 70 void CaptureMonitoringSnapshotDoneCallbackTest( |
| 70 base::Closure quit_callback, scoped_ptr<base::FilePath> file_path) { | 71 base::Closure quit_callback, const base::FilePath& file_path) { |
| 71 capture_monitoring_snapshot_done_callback_count_++; | 72 capture_monitoring_snapshot_done_callback_count_++; |
| 72 EXPECT_TRUE(PathExists(*file_path)); | 73 EXPECT_TRUE(PathExists(file_path)); |
| 73 int64 file_size; | 74 int64 file_size; |
| 74 file_util::GetFileSize(*file_path, &file_size); | 75 file_util::GetFileSize(file_path, &file_size); |
| 75 EXPECT_TRUE(file_size > 0); | 76 EXPECT_TRUE(file_size > 0); |
| 76 quit_callback.Run(); | 77 quit_callback.Run(); |
| 78 last_actual_monitoring_file_path_ = file_path; |
| 77 } | 79 } |
| 78 | 80 |
| 79 int get_categories_done_callback_count() const { | 81 int get_categories_done_callback_count() const { |
| 80 return get_categories_done_callback_count_; | 82 return get_categories_done_callback_count_; |
| 81 } | 83 } |
| 82 | 84 |
| 83 int enable_recording_done_callback_count() const { | 85 int enable_recording_done_callback_count() const { |
| 84 return enable_recording_done_callback_count_; | 86 return enable_recording_done_callback_count_; |
| 85 } | 87 } |
| 86 | 88 |
| 87 int disable_recording_done_callback_count() const { | 89 int disable_recording_done_callback_count() const { |
| 88 return disable_recording_done_callback_count_; | 90 return disable_recording_done_callback_count_; |
| 89 } | 91 } |
| 90 | 92 |
| 91 int enable_monitoring_done_callback_count() const { | 93 int enable_monitoring_done_callback_count() const { |
| 92 return enable_monitoring_done_callback_count_; | 94 return enable_monitoring_done_callback_count_; |
| 93 } | 95 } |
| 94 | 96 |
| 95 int disable_monitoring_done_callback_count() const { | 97 int disable_monitoring_done_callback_count() const { |
| 96 return disable_monitoring_done_callback_count_; | 98 return disable_monitoring_done_callback_count_; |
| 97 } | 99 } |
| 98 | 100 |
| 99 int capture_monitoring_snapshot_done_callback_count() const { | 101 int capture_monitoring_snapshot_done_callback_count() const { |
| 100 return capture_monitoring_snapshot_done_callback_count_; | 102 return capture_monitoring_snapshot_done_callback_count_; |
| 101 } | 103 } |
| 102 | 104 |
| 105 base::FilePath last_actual_recording_file_path() const { |
| 106 return last_actual_recording_file_path_; |
| 107 } |
| 108 |
| 109 base::FilePath last_actual_monitoring_file_path() const { |
| 110 return last_actual_monitoring_file_path_; |
| 111 } |
| 112 |
| 113 void TestEnableAndDisableRecording(const base::FilePath& result_file_path) { |
| 114 Navigate(shell()); |
| 115 |
| 116 TracingController* controller = TracingController::GetInstance(); |
| 117 |
| 118 { |
| 119 base::RunLoop run_loop; |
| 120 TracingController::EnableRecordingDoneCallback callback = |
| 121 base::Bind(&TracingControllerTest::EnableRecordingDoneCallbackTest, |
| 122 base::Unretained(this), |
| 123 run_loop.QuitClosure()); |
| 124 bool result = controller->EnableRecording( |
| 125 base::debug::CategoryFilter(""), TracingController::Options(), |
| 126 callback); |
| 127 EXPECT_TRUE(result); |
| 128 run_loop.Run(); |
| 129 EXPECT_EQ(enable_recording_done_callback_count(), 1); |
| 130 } |
| 131 |
| 132 { |
| 133 base::RunLoop run_loop; |
| 134 TracingController::TracingFileResultCallback callback = |
| 135 base::Bind(&TracingControllerTest::DisableRecordingDoneCallbackTest, |
| 136 base::Unretained(this), |
| 137 run_loop.QuitClosure()); |
| 138 bool result = controller->DisableRecording(result_file_path, callback); |
| 139 EXPECT_TRUE(result); |
| 140 run_loop.Run(); |
| 141 EXPECT_EQ(disable_recording_done_callback_count(), 1); |
| 142 } |
| 143 } |
| 144 |
| 145 void TestEnableCaptureAndDisableMonitoring( |
| 146 const base::FilePath& result_file_path) { |
| 147 Navigate(shell()); |
| 148 |
| 149 TracingController* controller = TracingController::GetInstance(); |
| 150 |
| 151 { |
| 152 base::RunLoop run_loop; |
| 153 TracingController::EnableMonitoringDoneCallback callback = |
| 154 base::Bind(&TracingControllerTest::EnableMonitoringDoneCallbackTest, |
| 155 base::Unretained(this), |
| 156 run_loop.QuitClosure()); |
| 157 bool result = controller->EnableMonitoring( |
| 158 base::debug::CategoryFilter(""), TracingController::ENABLE_SAMPLING, |
| 159 callback); |
| 160 EXPECT_TRUE(result); |
| 161 run_loop.Run(); |
| 162 EXPECT_EQ(enable_monitoring_done_callback_count(), 1); |
| 163 } |
| 164 |
| 165 { |
| 166 base::RunLoop run_loop; |
| 167 TracingController::TracingFileResultCallback callback = |
| 168 base::Bind(&TracingControllerTest:: |
| 169 CaptureMonitoringSnapshotDoneCallbackTest, |
| 170 base::Unretained(this), |
| 171 run_loop.QuitClosure()); |
| 172 controller->CaptureMonitoringSnapshot(result_file_path, callback); |
| 173 run_loop.Run(); |
| 174 EXPECT_EQ(capture_monitoring_snapshot_done_callback_count(), 1); |
| 175 } |
| 176 |
| 177 { |
| 178 base::RunLoop run_loop; |
| 179 TracingController::DisableMonitoringDoneCallback callback = |
| 180 base::Bind(&TracingControllerTest::DisableMonitoringDoneCallbackTest, |
| 181 base::Unretained(this), |
| 182 run_loop.QuitClosure()); |
| 183 bool result = controller->DisableMonitoring(callback); |
| 184 EXPECT_TRUE(result); |
| 185 run_loop.Run(); |
| 186 EXPECT_EQ(disable_monitoring_done_callback_count(), 1); |
| 187 } |
| 188 } |
| 189 |
| 103 private: | 190 private: |
| 104 int get_categories_done_callback_count_; | 191 int get_categories_done_callback_count_; |
| 105 int enable_recording_done_callback_count_; | 192 int enable_recording_done_callback_count_; |
| 106 int disable_recording_done_callback_count_; | 193 int disable_recording_done_callback_count_; |
| 107 int enable_monitoring_done_callback_count_; | 194 int enable_monitoring_done_callback_count_; |
| 108 int disable_monitoring_done_callback_count_; | 195 int disable_monitoring_done_callback_count_; |
| 109 int capture_monitoring_snapshot_done_callback_count_; | 196 int capture_monitoring_snapshot_done_callback_count_; |
| 197 base::FilePath last_actual_recording_file_path_; |
| 198 base::FilePath last_actual_monitoring_file_path_; |
| 110 }; | 199 }; |
| 111 | 200 |
| 112 IN_PROC_BROWSER_TEST_F(TracingControllerTest, GetCategories) { | 201 IN_PROC_BROWSER_TEST_F(TracingControllerTest, GetCategories) { |
| 113 Navigate(shell()); | 202 Navigate(shell()); |
| 114 | 203 |
| 115 TracingController* controller = TracingController::GetInstance(); | 204 TracingController* controller = TracingController::GetInstance(); |
| 116 | 205 |
| 117 base::RunLoop run_loop; | 206 base::RunLoop run_loop; |
| 118 TracingController::GetCategoriesDoneCallback callback = | 207 TracingController::GetCategoriesDoneCallback callback = |
| 119 base::Bind(&TracingControllerTest::GetCategoriesDoneCallbackTest, | 208 base::Bind(&TracingControllerTest::GetCategoriesDoneCallbackTest, |
| 120 base::Unretained(this), | 209 base::Unretained(this), |
| 121 run_loop.QuitClosure()); | 210 run_loop.QuitClosure()); |
| 122 controller->GetCategories(callback); | 211 controller->GetCategories(callback); |
| 123 run_loop.Run(); | 212 run_loop.Run(); |
| 124 EXPECT_EQ(get_categories_done_callback_count(), 1); | 213 EXPECT_EQ(get_categories_done_callback_count(), 1); |
| 125 } | 214 } |
| 126 | 215 |
| 127 IN_PROC_BROWSER_TEST_F(TracingControllerTest, EnableAndDisableRecording) { | 216 IN_PROC_BROWSER_TEST_F(TracingControllerTest, EnableAndDisableRecording) { |
| 217 TestEnableAndDisableRecording(base::FilePath()); |
| 218 } |
| 219 |
| 220 IN_PROC_BROWSER_TEST_F(TracingControllerTest, |
| 221 EnableAndDisableRecordingWithFilePath) { |
| 222 base::FilePath file_path; |
| 223 file_util::CreateTemporaryFile(&file_path); |
| 224 TestEnableAndDisableRecording(file_path); |
| 225 EXPECT_EQ(file_path.value(), last_actual_recording_file_path().value()); |
| 226 } |
| 227 |
| 228 IN_PROC_BROWSER_TEST_F(TracingControllerTest, |
| 229 EnableAndDisableRecordingWithEmptyFileAndNullCallback) { |
| 128 Navigate(shell()); | 230 Navigate(shell()); |
| 129 | 231 |
| 130 TracingController* controller = TracingController::GetInstance(); | 232 TracingController* controller = TracingController::GetInstance(); |
| 131 | 233 EXPECT_TRUE(controller->EnableRecording( |
| 132 { | 234 base::debug::CategoryFilter(""), TracingController::Options(), |
| 133 base::RunLoop run_loop; | 235 TracingController::EnableRecordingDoneCallback())); |
| 134 TracingController::EnableRecordingDoneCallback callback = | 236 EXPECT_TRUE(controller->DisableRecording( |
| 135 base::Bind(&TracingControllerTest::EnableRecordingDoneCallbackTest, | 237 base::FilePath(), TracingController::TracingFileResultCallback())); |
| 136 base::Unretained(this), | 238 base::RunLoop().RunUntilIdle(); |
| 137 run_loop.QuitClosure()); | |
| 138 bool result = controller->EnableRecording(base::debug::CategoryFilter("*"), | |
| 139 TracingController::Options(), callback); | |
| 140 EXPECT_TRUE(result); | |
| 141 run_loop.Run(); | |
| 142 EXPECT_EQ(enable_recording_done_callback_count(), 1); | |
| 143 } | |
| 144 | |
| 145 { | |
| 146 base::RunLoop run_loop; | |
| 147 TracingController::TracingFileResultCallback callback = | |
| 148 base::Bind(&TracingControllerTest::DisableRecordingDoneCallbackTest, | |
| 149 base::Unretained(this), | |
| 150 run_loop.QuitClosure()); | |
| 151 bool result = controller->DisableRecording(callback); | |
| 152 EXPECT_TRUE(result); | |
| 153 run_loop.Run(); | |
| 154 EXPECT_EQ(disable_recording_done_callback_count(), 1); | |
| 155 } | |
| 156 } | 239 } |
| 157 | 240 |
| 158 IN_PROC_BROWSER_TEST_F(TracingControllerTest, | 241 IN_PROC_BROWSER_TEST_F(TracingControllerTest, |
| 159 EnableCaptureAndDisableMonitoring) { | 242 EnableCaptureAndDisableMonitoring) { |
| 243 TestEnableCaptureAndDisableMonitoring(base::FilePath()); |
| 244 } |
| 245 |
| 246 IN_PROC_BROWSER_TEST_F(TracingControllerTest, |
| 247 EnableCaptureAndDisableMonitoringWithFilePath) { |
| 248 base::FilePath file_path; |
| 249 file_util::CreateTemporaryFile(&file_path); |
| 250 TestEnableCaptureAndDisableMonitoring(file_path); |
| 251 EXPECT_EQ(file_path.value(), last_actual_monitoring_file_path().value()); |
| 252 } |
| 253 |
| 254 IN_PROC_BROWSER_TEST_F( |
| 255 TracingControllerTest, |
| 256 EnableCaptureAndDisableMonitoringWithEmptyFileAndNullCallback) { |
| 160 Navigate(shell()); | 257 Navigate(shell()); |
| 161 | 258 |
| 162 TracingController* controller = TracingController::GetInstance(); | 259 TracingController* controller = TracingController::GetInstance(); |
| 163 | 260 EXPECT_TRUE(controller->EnableMonitoring( |
| 164 { | 261 base::debug::CategoryFilter(""), TracingController::ENABLE_SAMPLING, |
| 165 base::RunLoop run_loop; | 262 TracingController::EnableMonitoringDoneCallback())); |
| 166 TracingController::EnableMonitoringDoneCallback callback = | 263 controller->CaptureMonitoringSnapshot( |
| 167 base::Bind(&TracingControllerTest::EnableMonitoringDoneCallbackTest, | 264 base::FilePath(), TracingController::TracingFileResultCallback()); |
| 168 base::Unretained(this), | 265 base::RunLoop().RunUntilIdle(); |
| 169 run_loop.QuitClosure()); | 266 EXPECT_TRUE(controller->DisableMonitoring( |
| 170 bool result = controller->EnableMonitoring(base::debug::CategoryFilter("*"), | 267 TracingController::DisableMonitoringDoneCallback())); |
| 171 TracingController::ENABLE_SAMPLING, callback); | 268 base::RunLoop().RunUntilIdle(); |
| 172 EXPECT_TRUE(result); | |
| 173 run_loop.Run(); | |
| 174 EXPECT_EQ(enable_monitoring_done_callback_count(), 1); | |
| 175 } | |
| 176 | |
| 177 { | |
| 178 base::RunLoop run_loop; | |
| 179 TracingController::TracingFileResultCallback callback = | |
| 180 base::Bind(&TracingControllerTest:: | |
| 181 CaptureMonitoringSnapshotDoneCallbackTest, | |
| 182 base::Unretained(this), | |
| 183 run_loop.QuitClosure()); | |
| 184 controller->CaptureMonitoringSnapshot(callback); | |
| 185 run_loop.Run(); | |
| 186 EXPECT_EQ(capture_monitoring_snapshot_done_callback_count(), 1); | |
| 187 } | |
| 188 | |
| 189 { | |
| 190 base::RunLoop run_loop; | |
| 191 TracingController::DisableMonitoringDoneCallback callback = | |
| 192 base::Bind(&TracingControllerTest::DisableMonitoringDoneCallbackTest, | |
| 193 base::Unretained(this), | |
| 194 run_loop.QuitClosure()); | |
| 195 bool result = controller->DisableMonitoring(callback); | |
| 196 EXPECT_TRUE(result); | |
| 197 run_loop.Run(); | |
| 198 EXPECT_EQ(disable_monitoring_done_callback_count(), 1); | |
| 199 } | |
| 200 } | 269 } |
| 201 | 270 |
| 202 } // namespace content | 271 } // namespace content |
| OLD | NEW |