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

Side by Side Diff: chrome/browser/extensions/api/log_private/log_private_api_chromeos.cc

Issue 976483002: Add ability for NetLogLogger to gather data from more than just NetLog (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Merge Created 5 years, 9 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 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 "chrome/browser/extensions/api/log_private/log_private_api.h" 5 #include "chrome/browser/extensions/api/log_private/log_private_api.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
247 // Create the event's arguments value. 247 // Create the event's arguments value.
248 scoped_ptr<base::ListValue> event_args(new base::ListValue()); 248 scoped_ptr<base::ListValue> event_args(new base::ListValue());
249 event_args->Append(value->DeepCopy()); 249 event_args->Append(value->DeepCopy());
250 scoped_ptr<Event> event( 250 scoped_ptr<Event> event(
251 new Event(events::kOnCapturedEvents, event_args.Pass())); 251 new Event(events::kOnCapturedEvents, event_args.Pass()));
252 EventRouter::Get(browser_context_) 252 EventRouter::Get(browser_context_)
253 ->DispatchEventToExtension(*ix, event.Pass()); 253 ->DispatchEventToExtension(*ix, event.Pass());
254 } 254 }
255 } 255 }
256 256
257 void LogPrivateAPI::InitializeNetLogger(const std::string& owner_extension_id, 257 void LogPrivateAPI::CreateFileForNetLogger(
258 net::NetLogLogger** net_log_logger) { 258 const std::string& owner_extension_id,
259 base::ScopedFILE* file) {
259 DCHECK(IsRunningOnSequenceThread()); 260 DCHECK(IsRunningOnSequenceThread());
260 (*net_log_logger) = NULL;
261 261
262 // Create app-specific subdirectory in session logs folder. 262 // Create app-specific subdirectory in session logs folder.
263 base::FilePath app_log_dir = GetAppLogDirectory().Append(owner_extension_id); 263 base::FilePath app_log_dir = GetAppLogDirectory().Append(owner_extension_id);
264 if (!base::DirectoryExists(app_log_dir)) { 264 if (!base::DirectoryExists(app_log_dir)) {
265 if (!base::CreateDirectory(app_log_dir)) { 265 if (!base::CreateDirectory(app_log_dir)) {
266 LOG(ERROR) << "Could not create dir " << app_log_dir.value(); 266 LOG(ERROR) << "Could not create dir " << app_log_dir.value();
267 return; 267 return;
268 } 268 }
269 } 269 }
270 270
271 base::FilePath file_path = app_log_dir.Append(kLogFileNameBase); 271 base::FilePath file_path = app_log_dir.Append(kLogFileNameBase);
272 file_path = logging::GenerateTimestampedName(file_path, base::Time::Now()); 272 file_path = logging::GenerateTimestampedName(file_path, base::Time::Now());
273 FILE* file = NULL; 273 FILE* file_ptr = fopen(file_path.value().c_str(), "w");
274 file = fopen(file_path.value().c_str(), "w"); 274 if (file_ptr == nullptr) {
275 if (file == NULL) {
276 LOG(ERROR) << "Could not open " << file_path.value(); 275 LOG(ERROR) << "Could not open " << file_path.value();
277 return; 276 return;
278 } 277 }
279 278
280 RegisterTempFile(owner_extension_id, file_path); 279 RegisterTempFile(owner_extension_id, file_path);
281 scoped_ptr<base::Value> constants(net::NetLogLogger::GetConstants()); 280 return file->reset(file_ptr);
282 *net_log_logger = new net::NetLogLogger(file, *constants);
283 (*net_log_logger)->set_log_level(net::NetLog::LOG_ALL_BUT_BYTES);
284 } 281 }
285 282
286 void LogPrivateAPI::StartObservingNetEvents( 283 void LogPrivateAPI::StartObservingNetEvents(
287 IOThread* io_thread, 284 IOThread* io_thread,
288 net::NetLogLogger** net_log_logger) { 285 base::ScopedFILE* file) {
289 DCHECK_CURRENTLY_ON(BrowserThread::IO); 286 DCHECK_CURRENTLY_ON(BrowserThread::IO);
290 if (!(*net_log_logger)) 287 if (!file->get())
291 return; 288 return;
292 289
293 net_log_logger_.reset(*net_log_logger); 290 net_log_logger_.reset(new net::NetLogLogger());
294 net_log_logger_->StartObserving(io_thread->net_log()); 291 net_log_logger_->set_log_level(net::NetLog::LOG_ALL_BUT_BYTES);
292 net_log_logger_->StartObserving(io_thread->net_log(), file->Pass(), nullptr,
293 nullptr);
295 } 294 }
296 295
297 void LogPrivateAPI::MaybeStartNetInternalLogging( 296 void LogPrivateAPI::MaybeStartNetInternalLogging(
298 const std::string& caller_extension_id, 297 const std::string& caller_extension_id,
299 IOThread* io_thread, 298 IOThread* io_thread,
300 api::log_private::EventSink event_sink) { 299 api::log_private::EventSink event_sink) {
301 DCHECK_CURRENTLY_ON(BrowserThread::IO); 300 DCHECK_CURRENTLY_ON(BrowserThread::IO);
302 if (!logging_net_internals_) { 301 if (!logging_net_internals_) {
303 logging_net_internals_ = true; 302 logging_net_internals_ = true;
304 event_sink_ = event_sink; 303 event_sink_ = event_sink;
305 switch (event_sink_) { 304 switch (event_sink_) {
306 case api::log_private::EVENT_SINK_CAPTURE: { 305 case api::log_private::EVENT_SINK_CAPTURE: {
307 io_thread->net_log()->AddThreadSafeObserver( 306 io_thread->net_log()->AddThreadSafeObserver(
308 this, net::NetLog::LOG_ALL_BUT_BYTES); 307 this, net::NetLog::LOG_ALL_BUT_BYTES);
309 break; 308 break;
310 } 309 }
311 case api::log_private::EVENT_SINK_FILE: { 310 case api::log_private::EVENT_SINK_FILE: {
312 net::NetLogLogger** net_logger_ptr = new net::NetLogLogger* [1]; 311 base::ScopedFILE* file = new base::ScopedFILE();
313 // Initialize net logger on the blocking pool and start observing event 312 // Initialize a FILE on the blocking pool and start observing event
314 // with in on IO thread. 313 // on IO thread.
315 GetSequencedTaskRunner()->PostTaskAndReply( 314 GetSequencedTaskRunner()->PostTaskAndReply(
316 FROM_HERE, 315 FROM_HERE,
317 base::Bind(&LogPrivateAPI::InitializeNetLogger, 316 base::Bind(&LogPrivateAPI::CreateFileForNetLogger,
318 base::Unretained(this), 317 base::Unretained(this),
319 caller_extension_id, 318 caller_extension_id,
320 net_logger_ptr), 319 file),
321 base::Bind(&LogPrivateAPI::StartObservingNetEvents, 320 base::Bind(&LogPrivateAPI::StartObservingNetEvents,
322 base::Unretained(this), 321 base::Unretained(this),
323 io_thread, 322 io_thread,
324 base::Owned(net_logger_ptr))); 323 base::Owned(file)));
325 break; 324 break;
326 } 325 }
327 case api::log_private::EVENT_SINK_NONE: { 326 case api::log_private::EVENT_SINK_NONE: {
328 NOTREACHED(); 327 NOTREACHED();
329 break; 328 break;
330 } 329 }
331 } 330 }
332 } 331 }
333 } 332 }
334 333
(...skipping 18 matching lines...) Expand all
353 352
354 void LogPrivateAPI::StopNetInternalLogging() { 353 void LogPrivateAPI::StopNetInternalLogging() {
355 DCHECK_CURRENTLY_ON(BrowserThread::IO); 354 DCHECK_CURRENTLY_ON(BrowserThread::IO);
356 if (net_log() && logging_net_internals_) { 355 if (net_log() && logging_net_internals_) {
357 logging_net_internals_ = false; 356 logging_net_internals_ = false;
358 switch (event_sink_) { 357 switch (event_sink_) {
359 case api::log_private::EVENT_SINK_CAPTURE: 358 case api::log_private::EVENT_SINK_CAPTURE:
360 net_log()->RemoveThreadSafeObserver(this); 359 net_log()->RemoveThreadSafeObserver(this);
361 break; 360 break;
362 case api::log_private::EVENT_SINK_FILE: 361 case api::log_private::EVENT_SINK_FILE:
363 net_log_logger_->StopObserving(); 362 net_log_logger_->StopObserving(nullptr);
364 net_log_logger_.reset(); 363 net_log_logger_.reset();
365 break; 364 break;
366 case api::log_private::EVENT_SINK_NONE: 365 case api::log_private::EVENT_SINK_NONE:
367 NOTREACHED(); 366 NOTREACHED();
368 break; 367 break;
369 } 368 }
370 } 369 }
371 } 370 }
372 371
373 void LogPrivateAPI::Initialize() { 372 void LogPrivateAPI::Initialize() {
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
540 entry->SetBoolean("isDirectory", false); 539 entry->SetBoolean("isDirectory", false);
541 base::ListValue* entry_list = new base::ListValue(); 540 base::ListValue* entry_list = new base::ListValue();
542 entry_list->Append(entry); 541 entry_list->Append(entry);
543 response->Set("entries", entry_list); 542 response->Set("entries", entry_list);
544 response->SetBoolean("multiple", false); 543 response->SetBoolean("multiple", false);
545 SetResult(response.release()); 544 SetResult(response.release());
546 SendResponse(succeeded); 545 SendResponse(succeeded);
547 } 546 }
548 547
549 } // namespace extensions 548 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/api/log_private/log_private_api.h ('k') | chrome/browser/net/chrome_net_log.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698