OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 "net/proxy/proxy_resolver_v8_tracing.h" | 5 #include "net/proxy/proxy_resolver_v8_tracing.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/message_loop/message_loop_proxy.h" | 8 #include "base/message_loop/message_loop_proxy.h" |
9 #include "base/strings/stringprintf.h" | 9 #include "base/strings/stringprintf.h" |
10 #include "base/synchronization/cancellation_flag.h" | 10 #include "base/synchronization/cancellation_flag.h" |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
47 // under the tracing optimization. It is not expected to hit this normally. | 47 // under the tracing optimization. It is not expected to hit this normally. |
48 const size_t kMaxUniqueResolveDnsPerExec = 20; | 48 const size_t kMaxUniqueResolveDnsPerExec = 20; |
49 | 49 |
50 // Approximate number of bytes to use for buffering alerts() and errors. | 50 // Approximate number of bytes to use for buffering alerts() and errors. |
51 // This is a failsafe in case repeated executions of the script causes | 51 // This is a failsafe in case repeated executions of the script causes |
52 // too much memory bloat. It is not expected for well behaved scripts to | 52 // too much memory bloat. It is not expected for well behaved scripts to |
53 // hit this. (In fact normal scripts should not even have alerts() or errors). | 53 // hit this. (In fact normal scripts should not even have alerts() or errors). |
54 const size_t kMaxAlertsAndErrorsBytes = 2048; | 54 const size_t kMaxAlertsAndErrorsBytes = 2048; |
55 | 55 |
56 // Returns event parameters for a PAC error message (line number + message). | 56 // Returns event parameters for a PAC error message (line number + message). |
57 base::Value* NetLogErrorCallback(int line_number, | 57 scoped_ptr<base::Value> NetLogErrorCallback( |
58 const base::string16* message, | 58 int line_number, |
59 NetLogCaptureMode /* capture_mode */) { | 59 const base::string16* message, |
60 base::DictionaryValue* dict = new base::DictionaryValue(); | 60 NetLogCaptureMode /* capture_mode */) { |
| 61 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); |
61 dict->SetInteger("line_number", line_number); | 62 dict->SetInteger("line_number", line_number); |
62 dict->SetString("message", *message); | 63 dict->SetString("message", *message); |
63 return dict; | 64 return dict.Pass(); |
64 } | 65 } |
65 | 66 |
66 } // namespace | 67 } // namespace |
67 | 68 |
68 // The Job class is responsible for executing GetProxyForURL() and | 69 // The Job class is responsible for executing GetProxyForURL() and |
69 // SetPacScript(), since both of these operations share similar code. | 70 // SetPacScript(), since both of these operations share similar code. |
70 // | 71 // |
71 // The DNS for these operations can operate in either blocking or | 72 // The DNS for these operations can operate in either blocking or |
72 // non-blocking mode. Blocking mode is used as a fallback when the PAC script | 73 // non-blocking mode. Blocking mode is used as a fallback when the PAC script |
73 // seems to be misbehaving under the tracing optimization. | 74 // seems to be misbehaving under the tracing optimization. |
(...skipping 837 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
911 // error | 912 // error |
912 // ------------------- | 913 // ------------------- |
913 if (line_number == -1) | 914 if (line_number == -1) |
914 VLOG(1) << "PAC-error: " << message; | 915 VLOG(1) << "PAC-error: " << message; |
915 else | 916 else |
916 VLOG(1) << "PAC-error: " << "line: " << line_number << ": " << message; | 917 VLOG(1) << "PAC-error: " << "line: " << line_number << ": " << message; |
917 | 918 |
918 // Send the error to the NetLog. | 919 // Send the error to the NetLog. |
919 LogEventToCurrentRequestAndGlobally( | 920 LogEventToCurrentRequestAndGlobally( |
920 NetLog::TYPE_PAC_JAVASCRIPT_ERROR, | 921 NetLog::TYPE_PAC_JAVASCRIPT_ERROR, |
921 base::Bind(&NetLogErrorCallback, line_number, &message)); | 922 base::Bind(NetLogErrorCallback, line_number, &message)); |
922 | 923 |
923 if (error_observer()) | 924 if (error_observer()) |
924 error_observer()->OnPACScriptError(line_number, message); | 925 error_observer()->OnPACScriptError(line_number, message); |
925 } | 926 } |
926 } | 927 } |
927 | 928 |
928 void ProxyResolverV8Tracing::Job::LogEventToCurrentRequestAndGlobally( | 929 void ProxyResolverV8Tracing::Job::LogEventToCurrentRequestAndGlobally( |
929 NetLog::EventType type, | 930 NetLog::EventType type, |
930 const NetLog::ParametersCallback& parameters_callback) { | 931 const NetLog::ParametersCallback& parameters_callback) { |
931 CheckIsOnWorkerThread(); | 932 CheckIsOnWorkerThread(); |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1025 DCHECK(!set_pac_script_job_.get()); | 1026 DCHECK(!set_pac_script_job_.get()); |
1026 CHECK_EQ(0, num_outstanding_callbacks_); | 1027 CHECK_EQ(0, num_outstanding_callbacks_); |
1027 | 1028 |
1028 set_pac_script_job_ = new Job(this); | 1029 set_pac_script_job_ = new Job(this); |
1029 set_pac_script_job_->StartSetPacScript(script_data, callback); | 1030 set_pac_script_job_->StartSetPacScript(script_data, callback); |
1030 | 1031 |
1031 return ERR_IO_PENDING; | 1032 return ERR_IO_PENDING; |
1032 } | 1033 } |
1033 | 1034 |
1034 } // namespace net | 1035 } // namespace net |
OLD | NEW |