OLD | NEW |
---|---|
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/bind.h" | 5 #include "base/bind.h" |
6 #include "base/trace_event/trace_event.h" | |
6 #include "content/public/browser/background_tracing_manager.h" | 7 #include "content/public/browser/background_tracing_manager.h" |
7 #include "content/public/browser/background_tracing_preemptive_config.h" | 8 #include "content/public/browser/background_tracing_preemptive_config.h" |
8 #include "content/public/browser/background_tracing_reactive_config.h" | 9 #include "content/public/browser/background_tracing_reactive_config.h" |
9 #include "content/public/test/content_browser_test.h" | 10 #include "content/public/test/content_browser_test.h" |
10 #include "content/public/test/content_browser_test_utils.h" | 11 #include "content/public/test/content_browser_test_utils.h" |
11 #include "content/public/test/test_utils.h" | 12 #include "content/public/test/test_utils.h" |
12 | 13 |
13 namespace content { | 14 namespace content { |
14 | 15 |
15 class BackgroundTracingManagerBrowserTest : public ContentBrowserTest { | 16 class BackgroundTracingManagerBrowserTest : public ContentBrowserTest { |
16 public: | 17 public: |
17 BackgroundTracingManagerBrowserTest() {} | 18 BackgroundTracingManagerBrowserTest() {} |
18 | 19 |
19 private: | 20 private: |
20 DISALLOW_COPY_AND_ASSIGN(BackgroundTracingManagerBrowserTest); | 21 DISALLOW_COPY_AND_ASSIGN(BackgroundTracingManagerBrowserTest); |
21 }; | 22 }; |
22 | 23 |
23 class BackgroundTracingManagerUploadConfigWrapper { | 24 class BackgroundTracingManagerUploadConfigWrapper { |
24 public: | 25 public: |
25 BackgroundTracingManagerUploadConfigWrapper(const base::Closure& callback) | 26 BackgroundTracingManagerUploadConfigWrapper(const base::Closure& callback) |
26 : callback_(callback), receive_count_(0) { | 27 : callback_(callback), receive_count_(0) { |
27 receive_callback_ = | 28 receive_callback_ = |
28 base::Bind(&BackgroundTracingManagerUploadConfigWrapper::Upload, | 29 base::Bind(&BackgroundTracingManagerUploadConfigWrapper::Upload, |
29 base::Unretained(this)); | 30 base::Unretained(this)); |
30 } | 31 } |
31 | 32 |
32 void Upload(const base::RefCountedString* file_contents, | 33 void Upload(const scoped_refptr<base::RefCountedString>& file_contents, |
33 base::Callback<void()> done_callback) { | 34 base::Callback<void()> done_callback) { |
34 receive_count_ += 1; | 35 receive_count_ += 1; |
36 EXPECT_TRUE(file_contents); | |
37 last_file_contents_ = file_contents; | |
35 | 38 |
36 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, | 39 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
37 base::Bind(done_callback)); | 40 base::Bind(done_callback)); |
38 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, | 41 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
39 base::Bind(callback_)); | 42 base::Bind(callback_)); |
40 } | 43 } |
41 | 44 |
45 bool TraceHasMatchingString(const char* str) { | |
46 const std::string& json = last_file_contents_->data(); | |
47 return json.find(str) != std::string::npos; | |
48 } | |
49 | |
42 int get_receive_count() const { return receive_count_; } | 50 int get_receive_count() const { return receive_count_; } |
43 | 51 |
44 const BackgroundTracingManager::ReceiveCallback& get_receive_callback() | 52 const BackgroundTracingManager::ReceiveCallback& get_receive_callback() |
45 const { | 53 const { |
46 return receive_callback_; | 54 return receive_callback_; |
47 } | 55 } |
48 | 56 |
49 private: | 57 private: |
50 BackgroundTracingManager::ReceiveCallback receive_callback_; | 58 BackgroundTracingManager::ReceiveCallback receive_callback_; |
51 base::Closure callback_; | 59 base::Closure callback_; |
52 int receive_count_; | 60 int receive_count_; |
61 scoped_refptr<base::RefCountedString> last_file_contents_; | |
53 }; | 62 }; |
54 | 63 |
55 void StartedFinalizingCallback(base::Closure callback, | 64 void StartedFinalizingCallback(base::Closure callback, |
56 bool expected, | 65 bool expected, |
57 bool value) { | 66 bool value) { |
58 EXPECT_EQ(expected, value); | 67 EXPECT_EQ(expected, value); |
59 if (!callback.is_null()) | 68 if (!callback.is_null()) |
60 callback.Run(); | 69 callback.Run(); |
61 } | 70 } |
62 | 71 |
(...skipping 11 matching lines...) Expand all Loading... | |
74 return config.Pass(); | 83 return config.Pass(); |
75 } | 84 } |
76 | 85 |
77 void SetupBackgroundTracingManager() { | 86 void SetupBackgroundTracingManager() { |
78 content::BackgroundTracingManager::GetInstance() | 87 content::BackgroundTracingManager::GetInstance() |
79 ->InvalidateTriggerHandlesForTesting(); | 88 ->InvalidateTriggerHandlesForTesting(); |
80 } | 89 } |
81 | 90 |
82 void DisableScenarioWhenIdle() { | 91 void DisableScenarioWhenIdle() { |
83 BackgroundTracingManager::GetInstance()->SetActiveScenario( | 92 BackgroundTracingManager::GetInstance()->SetActiveScenario( |
84 NULL, BackgroundTracingManager::ReceiveCallback(), false); | 93 NULL, BackgroundTracingManager::ReceiveCallback(), base::Closure(), |
94 false); | |
85 } | 95 } |
86 | 96 |
87 // This tests that the endpoint receives the final trace data. | 97 // This tests that the endpoint receives the final trace data. |
88 IN_PROC_BROWSER_TEST_F(BackgroundTracingManagerBrowserTest, | 98 IN_PROC_BROWSER_TEST_F(BackgroundTracingManagerBrowserTest, |
89 ReceiveTraceFinalContentsOnTrigger) { | 99 ReceiveTraceFinalContentsOnTrigger) { |
90 { | 100 { |
91 SetupBackgroundTracingManager(); | 101 SetupBackgroundTracingManager(); |
92 | 102 |
93 base::RunLoop run_loop; | 103 base::RunLoop run_loop; |
94 BackgroundTracingManagerUploadConfigWrapper upload_config_wrapper( | 104 BackgroundTracingManagerUploadConfigWrapper upload_config_wrapper( |
95 run_loop.QuitClosure()); | 105 run_loop.QuitClosure()); |
96 | 106 |
97 scoped_ptr<BackgroundTracingPreemptiveConfig> config = | 107 scoped_ptr<BackgroundTracingPreemptiveConfig> config = |
98 CreatePreemptiveConfig(); | 108 CreatePreemptiveConfig(); |
99 | 109 |
100 BackgroundTracingManager::TriggerHandle handle = | 110 BackgroundTracingManager::TriggerHandle handle = |
101 BackgroundTracingManager::GetInstance()->RegisterTriggerType("test"); | 111 BackgroundTracingManager::GetInstance()->RegisterTriggerType("test"); |
102 | 112 |
103 BackgroundTracingManager::GetInstance()->SetActiveScenario( | 113 BackgroundTracingManager::GetInstance()->SetActiveScenario( |
104 config.Pass(), upload_config_wrapper.get_receive_callback(), true); | 114 config.Pass(), upload_config_wrapper.get_receive_callback(), |
115 base::Closure(), true); | |
105 | 116 |
106 BackgroundTracingManager::GetInstance()->WhenIdle( | 117 BackgroundTracingManager::GetInstance()->WhenIdle( |
107 base::Bind(&DisableScenarioWhenIdle)); | 118 base::Bind(&DisableScenarioWhenIdle)); |
108 | 119 |
109 BackgroundTracingManager::GetInstance()->TriggerNamedEvent( | 120 BackgroundTracingManager::GetInstance()->TriggerNamedEvent( |
110 handle, base::Bind(&StartedFinalizingCallback, base::Closure(), true)); | 121 handle, base::Bind(&StartedFinalizingCallback, base::Closure(), true)); |
111 | 122 |
112 run_loop.Run(); | 123 run_loop.Run(); |
113 | 124 |
114 EXPECT_TRUE(upload_config_wrapper.get_receive_count() == 1); | 125 EXPECT_TRUE(upload_config_wrapper.get_receive_count() == 1); |
(...skipping 11 matching lines...) Expand all Loading... | |
126 run_loop.QuitClosure()); | 137 run_loop.QuitClosure()); |
127 | 138 |
128 scoped_ptr<BackgroundTracingPreemptiveConfig> config = | 139 scoped_ptr<BackgroundTracingPreemptiveConfig> config = |
129 CreatePreemptiveConfig(); | 140 CreatePreemptiveConfig(); |
130 | 141 |
131 content::BackgroundTracingManager::TriggerHandle handle = | 142 content::BackgroundTracingManager::TriggerHandle handle = |
132 content::BackgroundTracingManager::GetInstance()->RegisterTriggerType( | 143 content::BackgroundTracingManager::GetInstance()->RegisterTriggerType( |
133 "test"); | 144 "test"); |
134 | 145 |
135 BackgroundTracingManager::GetInstance()->SetActiveScenario( | 146 BackgroundTracingManager::GetInstance()->SetActiveScenario( |
136 config.Pass(), upload_config_wrapper.get_receive_callback(), true); | 147 config.Pass(), upload_config_wrapper.get_receive_callback(), |
148 base::Closure(), true); | |
137 | 149 |
138 BackgroundTracingManager::GetInstance()->WhenIdle( | 150 BackgroundTracingManager::GetInstance()->WhenIdle( |
139 base::Bind(&DisableScenarioWhenIdle)); | 151 base::Bind(&DisableScenarioWhenIdle)); |
140 | 152 |
141 BackgroundTracingManager::GetInstance()->TriggerNamedEvent( | 153 BackgroundTracingManager::GetInstance()->TriggerNamedEvent( |
142 handle, base::Bind(&StartedFinalizingCallback, base::Closure(), true)); | 154 handle, base::Bind(&StartedFinalizingCallback, base::Closure(), true)); |
143 BackgroundTracingManager::GetInstance()->TriggerNamedEvent( | 155 BackgroundTracingManager::GetInstance()->TriggerNamedEvent( |
144 handle, base::Bind(&StartedFinalizingCallback, base::Closure(), false)); | 156 handle, base::Bind(&StartedFinalizingCallback, base::Closure(), false)); |
145 | 157 |
146 run_loop.Run(); | 158 run_loop.Run(); |
147 | 159 |
148 EXPECT_TRUE(upload_config_wrapper.get_receive_count() == 1); | 160 EXPECT_TRUE(upload_config_wrapper.get_receive_count() == 1); |
149 } | 161 } |
150 } | 162 } |
151 | 163 |
164 // This tests that non-whitelisted args get stripped if required. | |
165 IN_PROC_BROWSER_TEST_F(BackgroundTracingManagerBrowserTest, | |
166 NoWhitelistedArgsStripped) { | |
shatch
2015/05/22 22:25:05
Should you write 2 tests, enabled and disabled. Si
oystein (OOO til 10th of July)
2015/05/27 22:13:32
Test improved now, would've caught it.
| |
167 { | |
168 SetupBackgroundTracingManager(); | |
169 | |
170 base::RunLoop upload_run_loop; | |
171 BackgroundTracingManagerUploadConfigWrapper upload_config_wrapper( | |
172 upload_run_loop.QuitClosure()); | |
173 | |
174 scoped_ptr<BackgroundTracingPreemptiveConfig> config = | |
175 CreatePreemptiveConfig(); | |
176 config->compress_trace = false; | |
177 | |
178 content::BackgroundTracingManager::TriggerHandle handle = | |
179 content::BackgroundTracingManager::GetInstance()->RegisterTriggerType( | |
180 "test"); | |
181 | |
182 base::RunLoop enable_run_loop; | |
183 BackgroundTracingManager::GetInstance()->SetActiveScenario( | |
184 config.Pass(), upload_config_wrapper.get_receive_callback(), | |
185 enable_run_loop.QuitClosure(), true); | |
186 | |
187 enable_run_loop.Run(); | |
188 // NavigateToURL(shell(), GetTestUrl("", "title.html")); | |
shatch
2015/05/22 22:21:37
nit: Get rid of this.
oystein (OOO til 10th of July)
2015/05/27 22:13:33
Done.
| |
189 | |
190 TRACE_EVENT1("__metadata", "thread_name", "my_thread_name", 1); | |
191 TRACE_EVENT1("__metadata", "process_name", "my_process_name", 1); | |
192 | |
193 BackgroundTracingManager::GetInstance()->WhenIdle( | |
194 base::Bind(&DisableScenarioWhenIdle)); | |
195 | |
196 BackgroundTracingManager::GetInstance()->TriggerNamedEvent( | |
197 handle, base::Bind(&StartedFinalizingCallback, base::Closure(), true)); | |
198 | |
199 upload_run_loop.Run(); | |
200 | |
201 EXPECT_TRUE(upload_config_wrapper.get_receive_count() == 1); | |
202 EXPECT_TRUE(upload_config_wrapper.TraceHasMatchingString("__metadata")); | |
203 EXPECT_TRUE(upload_config_wrapper.TraceHasMatchingString("my_thread_name")); | |
204 EXPECT_TRUE( | |
205 !upload_config_wrapper.TraceHasMatchingString("my_process_name")); | |
206 } | |
207 } | |
208 | |
152 // This tests multiple triggers still only gathers once. | 209 // This tests multiple triggers still only gathers once. |
153 IN_PROC_BROWSER_TEST_F(BackgroundTracingManagerBrowserTest, | 210 IN_PROC_BROWSER_TEST_F(BackgroundTracingManagerBrowserTest, |
154 CallMultipleTriggersOnlyGatherOnce) { | 211 CallMultipleTriggersOnlyGatherOnce) { |
155 { | 212 { |
156 SetupBackgroundTracingManager(); | 213 SetupBackgroundTracingManager(); |
157 | 214 |
158 base::RunLoop run_loop; | 215 base::RunLoop run_loop; |
159 BackgroundTracingManagerUploadConfigWrapper upload_config_wrapper( | 216 BackgroundTracingManagerUploadConfigWrapper upload_config_wrapper( |
160 run_loop.QuitClosure()); | 217 run_loop.QuitClosure()); |
161 | 218 |
162 scoped_ptr<BackgroundTracingPreemptiveConfig> config = | 219 scoped_ptr<BackgroundTracingPreemptiveConfig> config = |
163 CreatePreemptiveConfig(); | 220 CreatePreemptiveConfig(); |
164 | 221 |
165 BackgroundTracingPreemptiveConfig::MonitoringRule rule; | 222 BackgroundTracingPreemptiveConfig::MonitoringRule rule; |
166 rule.type = | 223 rule.type = |
167 BackgroundTracingPreemptiveConfig::MONITOR_AND_DUMP_WHEN_TRIGGER_NAMED; | 224 BackgroundTracingPreemptiveConfig::MONITOR_AND_DUMP_WHEN_TRIGGER_NAMED; |
168 rule.named_trigger_info.trigger_name = "test1"; | 225 rule.named_trigger_info.trigger_name = "test1"; |
169 config->configs.push_back(rule); | 226 config->configs.push_back(rule); |
170 | 227 |
171 rule.named_trigger_info.trigger_name = "test2"; | 228 rule.named_trigger_info.trigger_name = "test2"; |
172 config->configs.push_back(rule); | 229 config->configs.push_back(rule); |
173 | 230 |
174 BackgroundTracingManager::TriggerHandle handle1 = | 231 BackgroundTracingManager::TriggerHandle handle1 = |
175 BackgroundTracingManager::GetInstance()->RegisterTriggerType("test1"); | 232 BackgroundTracingManager::GetInstance()->RegisterTriggerType("test1"); |
176 BackgroundTracingManager::TriggerHandle handle2 = | 233 BackgroundTracingManager::TriggerHandle handle2 = |
177 BackgroundTracingManager::GetInstance()->RegisterTriggerType("test2"); | 234 BackgroundTracingManager::GetInstance()->RegisterTriggerType("test2"); |
178 | 235 |
179 BackgroundTracingManager::GetInstance()->SetActiveScenario( | 236 BackgroundTracingManager::GetInstance()->SetActiveScenario( |
180 config.Pass(), upload_config_wrapper.get_receive_callback(), true); | 237 config.Pass(), upload_config_wrapper.get_receive_callback(), |
238 base::Closure(), true); | |
181 | 239 |
182 BackgroundTracingManager::GetInstance()->WhenIdle( | 240 BackgroundTracingManager::GetInstance()->WhenIdle( |
183 base::Bind(&DisableScenarioWhenIdle)); | 241 base::Bind(&DisableScenarioWhenIdle)); |
184 | 242 |
185 BackgroundTracingManager::GetInstance()->TriggerNamedEvent( | 243 BackgroundTracingManager::GetInstance()->TriggerNamedEvent( |
186 handle1, base::Bind(&StartedFinalizingCallback, base::Closure(), true)); | 244 handle1, base::Bind(&StartedFinalizingCallback, base::Closure(), true)); |
187 BackgroundTracingManager::GetInstance()->TriggerNamedEvent( | 245 BackgroundTracingManager::GetInstance()->TriggerNamedEvent( |
188 handle2, | 246 handle2, |
189 base::Bind(&StartedFinalizingCallback, base::Closure(), false)); | 247 base::Bind(&StartedFinalizingCallback, base::Closure(), false)); |
190 | 248 |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
232 (base::Closure())); | 290 (base::Closure())); |
233 | 291 |
234 scoped_ptr<BackgroundTracingPreemptiveConfig> config = | 292 scoped_ptr<BackgroundTracingPreemptiveConfig> config = |
235 CreatePreemptiveConfig(); | 293 CreatePreemptiveConfig(); |
236 | 294 |
237 content::BackgroundTracingManager::TriggerHandle handle = | 295 content::BackgroundTracingManager::TriggerHandle handle = |
238 content::BackgroundTracingManager::GetInstance()->RegisterTriggerType( | 296 content::BackgroundTracingManager::GetInstance()->RegisterTriggerType( |
239 "does_not_exist"); | 297 "does_not_exist"); |
240 | 298 |
241 BackgroundTracingManager::GetInstance()->SetActiveScenario( | 299 BackgroundTracingManager::GetInstance()->SetActiveScenario( |
242 config.Pass(), upload_config_wrapper.get_receive_callback(), true); | 300 config.Pass(), upload_config_wrapper.get_receive_callback(), |
301 base::Closure(), true); | |
243 | 302 |
244 BackgroundTracingManager::GetInstance()->WhenIdle( | 303 BackgroundTracingManager::GetInstance()->WhenIdle( |
245 base::Bind(&DisableScenarioWhenIdle)); | 304 base::Bind(&DisableScenarioWhenIdle)); |
246 | 305 |
247 BackgroundTracingManager::GetInstance()->TriggerNamedEvent( | 306 BackgroundTracingManager::GetInstance()->TriggerNamedEvent( |
248 handle, | 307 handle, |
249 base::Bind(&StartedFinalizingCallback, run_loop.QuitClosure(), false)); | 308 base::Bind(&StartedFinalizingCallback, run_loop.QuitClosure(), false)); |
250 | 309 |
251 run_loop.Run(); | 310 run_loop.Run(); |
252 | 311 |
(...skipping 15 matching lines...) Expand all Loading... | |
268 CreatePreemptiveConfig(); | 327 CreatePreemptiveConfig(); |
269 | 328 |
270 content::BackgroundTracingManager::TriggerHandle handle = | 329 content::BackgroundTracingManager::TriggerHandle handle = |
271 content::BackgroundTracingManager::GetInstance()->RegisterTriggerType( | 330 content::BackgroundTracingManager::GetInstance()->RegisterTriggerType( |
272 "test"); | 331 "test"); |
273 | 332 |
274 content::BackgroundTracingManager::GetInstance() | 333 content::BackgroundTracingManager::GetInstance() |
275 ->InvalidateTriggerHandlesForTesting(); | 334 ->InvalidateTriggerHandlesForTesting(); |
276 | 335 |
277 BackgroundTracingManager::GetInstance()->SetActiveScenario( | 336 BackgroundTracingManager::GetInstance()->SetActiveScenario( |
278 config.Pass(), upload_config_wrapper.get_receive_callback(), true); | 337 config.Pass(), upload_config_wrapper.get_receive_callback(), |
338 base::Closure(), true); | |
279 | 339 |
280 BackgroundTracingManager::GetInstance()->WhenIdle( | 340 BackgroundTracingManager::GetInstance()->WhenIdle( |
281 base::Bind(&DisableScenarioWhenIdle)); | 341 base::Bind(&DisableScenarioWhenIdle)); |
282 | 342 |
283 BackgroundTracingManager::GetInstance()->TriggerNamedEvent( | 343 BackgroundTracingManager::GetInstance()->TriggerNamedEvent( |
284 handle, | 344 handle, |
285 base::Bind(&StartedFinalizingCallback, run_loop.QuitClosure(), false)); | 345 base::Bind(&StartedFinalizingCallback, run_loop.QuitClosure(), false)); |
286 | 346 |
287 run_loop.Run(); | 347 run_loop.Run(); |
288 | 348 |
(...skipping 14 matching lines...) Expand all Loading... | |
303 new content::BackgroundTracingPreemptiveConfig()); | 363 new content::BackgroundTracingPreemptiveConfig()); |
304 | 364 |
305 BackgroundTracingPreemptiveConfig::MonitoringRule rule; | 365 BackgroundTracingPreemptiveConfig::MonitoringRule rule; |
306 rule.type = BackgroundTracingPreemptiveConfig:: | 366 rule.type = BackgroundTracingPreemptiveConfig:: |
307 MONITOR_AND_DUMP_WHEN_SPECIFIC_HISTOGRAM_AND_VALUE; | 367 MONITOR_AND_DUMP_WHEN_SPECIFIC_HISTOGRAM_AND_VALUE; |
308 rule.histogram_trigger_info.histogram_name_to_trigger_on = "fake"; | 368 rule.histogram_trigger_info.histogram_name_to_trigger_on = "fake"; |
309 rule.histogram_trigger_info.histogram_bin_to_trigger_on = 0; | 369 rule.histogram_trigger_info.histogram_bin_to_trigger_on = 0; |
310 config->configs.push_back(rule); | 370 config->configs.push_back(rule); |
311 | 371 |
312 bool result = BackgroundTracingManager::GetInstance()->SetActiveScenario( | 372 bool result = BackgroundTracingManager::GetInstance()->SetActiveScenario( |
313 config.Pass(), upload_config_wrapper.get_receive_callback(), true); | 373 config.Pass(), upload_config_wrapper.get_receive_callback(), |
374 base::Closure(), true); | |
314 | 375 |
315 EXPECT_FALSE(result); | 376 EXPECT_FALSE(result); |
316 } | 377 } |
317 } | 378 } |
318 | 379 |
319 // This tests that reactive mode configs will fail. | 380 // This tests that reactive mode configs will fail. |
320 IN_PROC_BROWSER_TEST_F(BackgroundTracingManagerBrowserTest, | 381 IN_PROC_BROWSER_TEST_F(BackgroundTracingManagerBrowserTest, |
321 DoesNotAllowReactiveConfig) { | 382 DoesNotAllowReactiveConfig) { |
322 { | 383 { |
323 SetupBackgroundTracingManager(); | 384 SetupBackgroundTracingManager(); |
324 | 385 |
325 BackgroundTracingManagerUploadConfigWrapper upload_config_wrapper( | 386 BackgroundTracingManagerUploadConfigWrapper upload_config_wrapper( |
326 (base::Closure())); | 387 (base::Closure())); |
327 | 388 |
328 scoped_ptr<BackgroundTracingConfig> config( | 389 scoped_ptr<BackgroundTracingConfig> config( |
329 new BackgroundTracingReactiveConfig()); | 390 new BackgroundTracingReactiveConfig()); |
330 | 391 |
331 bool result = BackgroundTracingManager::GetInstance()->SetActiveScenario( | 392 bool result = BackgroundTracingManager::GetInstance()->SetActiveScenario( |
332 config.Pass(), upload_config_wrapper.get_receive_callback(), true); | 393 config.Pass(), upload_config_wrapper.get_receive_callback(), |
394 base::Closure(), true); | |
333 | 395 |
334 EXPECT_FALSE(result); | 396 EXPECT_FALSE(result); |
335 } | 397 } |
336 } | 398 } |
337 | 399 |
338 } // namespace content | 400 } // namespace content |
OLD | NEW |