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

Side by Side Diff: chrome/browser/dom_ui/net_internals_ui.cc

Issue 1556018: Add support for attaching custom parameters to NetLog events. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Address willchan's comments Created 10 years, 8 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | chrome/browser/net/chrome_net_log.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/dom_ui/net_internals_ui.h" 5 #include "chrome/browser/dom_ui/net_internals_ui.h"
6 6
7 #include <sstream> 7 #include <sstream>
8 8
9 #include "app/resource_bundle.h" 9 #include "app/resource_bundle.h"
10 #include "base/file_util.h" 10 #include "base/file_util.h"
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 void OnRendererReady(const Value* value); 145 void OnRendererReady(const Value* value);
146 146
147 void OnGetProxySettings(const Value* value); 147 void OnGetProxySettings(const Value* value);
148 void OnReloadProxySettings(const Value* value); 148 void OnReloadProxySettings(const Value* value);
149 void OnGetBadProxies(const Value* value); 149 void OnGetBadProxies(const Value* value);
150 void OnClearBadProxies(const Value* value); 150 void OnClearBadProxies(const Value* value);
151 void OnGetHostResolverCache(const Value* value); 151 void OnGetHostResolverCache(const Value* value);
152 void OnClearHostResolverCache(const Value* value); 152 void OnClearHostResolverCache(const Value* value);
153 153
154 // ChromeNetLog::Observer implementation: 154 // ChromeNetLog::Observer implementation:
155 virtual void OnAddEntry(const net::NetLog::Entry& entry); 155 virtual void OnAddEntry(net::NetLog::EventType type,
156 const base::TimeTicks& time,
157 const net::NetLog::Source& source,
158 net::NetLog::EventPhase phase,
159 net::NetLog::EventParameters* extra_parameters);
156 160
157 private: 161 private:
158 class CallbackHelper; 162 class CallbackHelper;
159 163
160 // Helper that runs |method| with |arg|, and deletes |arg| on completion. 164 // Helper that runs |method| with |arg|, and deletes |arg| on completion.
161 void DispatchToMessageHandler(Value* arg, MessageHandler method); 165 void DispatchToMessageHandler(Value* arg, MessageHandler method);
162 166
163 // Helper that executes |function_name| in the attached renderer. 167 // Helper that executes |function_name| in the attached renderer.
164 // The function takes ownership of |arg|. 168 // The function takes ownership of |arg|.
165 void CallJavascriptFunction(const std::wstring& function_name, 169 void CallJavascriptFunction(const std::wstring& function_name,
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
392 dict->SetInteger(L"NONE", net::NetLog::SOURCE_NONE); 396 dict->SetInteger(L"NONE", net::NetLog::SOURCE_NONE);
393 dict->SetInteger(L"URL_REQUEST", net::NetLog::SOURCE_URL_REQUEST); 397 dict->SetInteger(L"URL_REQUEST", net::NetLog::SOURCE_URL_REQUEST);
394 dict->SetInteger(L"SOCKET_STREAM", net::NetLog::SOURCE_SOCKET_STREAM); 398 dict->SetInteger(L"SOCKET_STREAM", net::NetLog::SOURCE_SOCKET_STREAM);
395 dict->SetInteger(L"INIT_PROXY_RESOLVER", 399 dict->SetInteger(L"INIT_PROXY_RESOLVER",
396 net::NetLog::SOURCE_INIT_PROXY_RESOLVER); 400 net::NetLog::SOURCE_INIT_PROXY_RESOLVER);
397 dict->SetInteger(L"CONNECT_JOB", net::NetLog::SOURCE_CONNECT_JOB); 401 dict->SetInteger(L"CONNECT_JOB", net::NetLog::SOURCE_CONNECT_JOB);
398 402
399 CallJavascriptFunction(L"g_browser.receivedLogSourceTypeConstants", dict); 403 CallJavascriptFunction(L"g_browser.receivedLogSourceTypeConstants", dict);
400 } 404 }
401 405
402 // Tell the javascript about the relationship between entry type enums and
403 // their symbolic name.
404 {
405 DictionaryValue* dict = new DictionaryValue();
406
407 dict->SetInteger(L"TYPE_EVENT", net::NetLog::Entry::TYPE_EVENT);
408 dict->SetInteger(L"TYPE_STRING", net::NetLog::Entry::TYPE_STRING);
409 dict->SetInteger(L"TYPE_ERROR_CODE", net::NetLog::Entry::TYPE_ERROR_CODE);
410
411 CallJavascriptFunction(L"g_browser.receivedLogEntryTypeConstants", dict);
412 }
413
414 // Tell the javascript how the "time ticks" values we have given it relate to 406 // Tell the javascript how the "time ticks" values we have given it relate to
415 // actual system times. (We used time ticks throughout since they are stable 407 // actual system times. (We used time ticks throughout since they are stable
416 // across system clock changes). 408 // across system clock changes).
417 { 409 {
418 int64 cur_time_ms = (base::Time::Now() - base::Time()).InMilliseconds(); 410 int64 cur_time_ms = (base::Time::Now() - base::Time()).InMilliseconds();
419 411
420 int64 cur_time_ticks_ms = 412 int64 cur_time_ticks_ms =
421 (base::TimeTicks::Now() - base::TimeTicks()).InMilliseconds(); 413 (base::TimeTicks::Now() - base::TimeTicks()).InMilliseconds();
422 414
423 // If we add this number to a time tick value, it gives the timestamp. 415 // If we add this number to a time tick value, it gives the timestamp.
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
569 GetHostResolverCache(context_getter_->GetURLRequestContext()); 561 GetHostResolverCache(context_getter_->GetURLRequestContext());
570 562
571 if (cache) 563 if (cache)
572 cache->clear(); 564 cache->clear();
573 565
574 // Cause the renderer to be notified of the new values. 566 // Cause the renderer to be notified of the new values.
575 OnGetHostResolverCache(NULL); 567 OnGetHostResolverCache(NULL);
576 } 568 }
577 569
578 void NetInternalsMessageHandler::IOThreadImpl::OnAddEntry( 570 void NetInternalsMessageHandler::IOThreadImpl::OnAddEntry(
579 const net::NetLog::Entry& entry) { 571 net::NetLog::EventType type,
572 const base::TimeTicks& time,
573 const net::NetLog::Source& source,
574 net::NetLog::EventPhase phase,
575 net::NetLog::EventParameters* extra_parameters) {
580 DCHECK(is_observing_log_); 576 DCHECK(is_observing_log_);
581 577
582 // JSONify the NetLog::Entry. 578 // JSONify the NetLog::Entry.
583 // TODO(eroman): Need a better format for this. 579 // TODO(eroman): Need a better format for this.
584 DictionaryValue* entry_dict = new DictionaryValue(); 580 DictionaryValue* entry_dict = new DictionaryValue();
585 581
586 // Set the entry type.
587 {
588 net::NetLog::Entry::Type entry_type = entry.type;
589 if (entry_type == net::NetLog::Entry::TYPE_STRING_LITERAL)
590 entry_type = net::NetLog::Entry::TYPE_STRING;
591 entry_dict->SetInteger(L"type", static_cast<int>(entry_type));
592 }
593
594 // Set the entry time. (Note that we send it as a string since integers 582 // Set the entry time. (Note that we send it as a string since integers
595 // might overflow). 583 // might overflow).
596 entry_dict->SetString(L"time", TickCountToString(entry.time)); 584 entry_dict->SetString(L"time", TickCountToString(time));
597 585
598 // Set the entry source. 586 // Set the entry source.
599 DictionaryValue* source_dict = new DictionaryValue(); 587 DictionaryValue* source_dict = new DictionaryValue();
600 source_dict->SetInteger(L"id", entry.source.id); 588 source_dict->SetInteger(L"id", source.id);
601 source_dict->SetInteger(L"type", static_cast<int>(entry.source.type)); 589 source_dict->SetInteger(L"type", static_cast<int>(source.type));
602 entry_dict->Set(L"source", source_dict); 590 entry_dict->Set(L"source", source_dict);
603 591
604 // Set the event info (if it is an event entry). 592 // Set the event info.
605 if (entry.type == net::NetLog::Entry::TYPE_EVENT) { 593 entry_dict->SetInteger(L"type", static_cast<int>(type));
606 DictionaryValue* event_dict = new DictionaryValue(); 594 entry_dict->SetInteger(L"phase", static_cast<int>(phase));
607 event_dict->SetInteger(L"type", static_cast<int>(entry.event.type));
608 event_dict->SetInteger(L"phase", static_cast<int>(entry.event.phase));
609 entry_dict->Set(L"event", event_dict);
610 }
611 595
612 // Add the string information (events my have a string too, due to current 596 // Set the event-specific parameters.
613 // hacks). 597 if (extra_parameters)
614 if (entry.type == net::NetLog::Entry::TYPE_STRING || !entry.string.empty()) { 598 entry_dict->SetString(L"extra_parameters", extra_parameters->ToString());
615 entry_dict->SetString(L"string", entry.string);
616 }
617
618 // Treat string literals the same as strings.
619 if (entry.type == net::NetLog::Entry::TYPE_STRING_LITERAL) {
620 entry_dict->SetString(L"string", entry.literal);
621 }
622
623 if (entry.type == net::NetLog::Entry::TYPE_ERROR_CODE) {
624 entry_dict->SetInteger(L"error_code", entry.error_code);
625 }
626 599
627 CallJavascriptFunction(L"g_browser.receivedLogEntry", entry_dict); 600 CallJavascriptFunction(L"g_browser.receivedLogEntry", entry_dict);
628 } 601 }
629 602
630 void NetInternalsMessageHandler::IOThreadImpl::DispatchToMessageHandler( 603 void NetInternalsMessageHandler::IOThreadImpl::DispatchToMessageHandler(
631 Value* arg, MessageHandler method) { 604 Value* arg, MessageHandler method) {
632 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::IO)); 605 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::IO));
633 (this->*method)(arg); 606 (this->*method)(arg);
634 delete arg; 607 delete arg;
635 } 608 }
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
678 NetInternalsHTMLSource* html_source = new NetInternalsHTMLSource(); 651 NetInternalsHTMLSource* html_source = new NetInternalsHTMLSource();
679 652
680 // Set up the chrome://net-internals/ source. 653 // Set up the chrome://net-internals/ source.
681 ChromeThread::PostTask( 654 ChromeThread::PostTask(
682 ChromeThread::IO, FROM_HERE, 655 ChromeThread::IO, FROM_HERE,
683 NewRunnableMethod( 656 NewRunnableMethod(
684 Singleton<ChromeURLDataManager>::get(), 657 Singleton<ChromeURLDataManager>::get(),
685 &ChromeURLDataManager::AddDataSource, 658 &ChromeURLDataManager::AddDataSource,
686 make_scoped_refptr(html_source))); 659 make_scoped_refptr(html_source)));
687 } 660 }
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/net/chrome_net_log.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698