| 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 #ifndef CHROME_BROWSER_MEDIA_WEBRTC_LOGGING_HANDLER_HOST_H_ | 5 #ifndef CHROME_BROWSER_MEDIA_WEBRTC_LOGGING_HANDLER_HOST_H_ |
| 6 #define CHROME_BROWSER_MEDIA_WEBRTC_LOGGING_HANDLER_HOST_H_ | 6 #define CHROME_BROWSER_MEDIA_WEBRTC_LOGGING_HANDLER_HOST_H_ |
| 7 | 7 |
| 8 #include "base/basictypes.h" | 8 #include <stddef.h> |
| 9 #include <stdint.h> |
| 10 |
| 11 #include "base/macros.h" |
| 9 #include "base/memory/shared_memory.h" | 12 #include "base/memory/shared_memory.h" |
| 13 #include "build/build_config.h" |
| 10 #include "chrome/browser/media/rtp_dump_type.h" | 14 #include "chrome/browser/media/rtp_dump_type.h" |
| 11 #include "chrome/browser/media/webrtc_rtp_dump_handler.h" | 15 #include "chrome/browser/media/webrtc_rtp_dump_handler.h" |
| 12 #include "chrome/common/media/webrtc_logging_message_data.h" | 16 #include "chrome/common/media/webrtc_logging_message_data.h" |
| 13 #include "chrome/common/partial_circular_buffer.h" | 17 #include "chrome/common/partial_circular_buffer.h" |
| 14 #include "content/public/browser/browser_message_filter.h" | 18 #include "content/public/browser/browser_message_filter.h" |
| 15 #include "content/public/browser/render_process_host.h" | 19 #include "content/public/browser/render_process_host.h" |
| 16 #include "net/base/network_interfaces.h" | 20 #include "net/base/network_interfaces.h" |
| 17 | 21 |
| 18 namespace net { | 22 namespace net { |
| 19 class URLRequestContextGetter; | 23 class URLRequestContextGetter; |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 51 | 55 |
| 52 // Switches the buffer to read-only mode, where access to the internal | 56 // Switches the buffer to read-only mode, where access to the internal |
| 53 // buffer is allowed from different threads than were used to contribute | 57 // buffer is allowed from different threads than were used to contribute |
| 54 // to the log. Calls to Log() won't be allowed after calling | 58 // to the log. Calls to Log() won't be allowed after calling |
| 55 // SetComplete() and the call to SetComplete() must be done on the same | 59 // SetComplete() and the call to SetComplete() must be done on the same |
| 56 // thread as constructed the buffer and calls Log(). | 60 // thread as constructed the buffer and calls Log(). |
| 57 void SetComplete(); | 61 void SetComplete(); |
| 58 | 62 |
| 59 private: | 63 private: |
| 60 base::ThreadChecker thread_checker_; | 64 base::ThreadChecker thread_checker_; |
| 61 uint8 buffer_[kWebRtcLogSize]; | 65 uint8_t buffer_[kWebRtcLogSize]; |
| 62 PartialCircularBuffer circular_; | 66 PartialCircularBuffer circular_; |
| 63 bool read_only_; | 67 bool read_only_; |
| 64 }; | 68 }; |
| 65 | 69 |
| 66 // WebRtcLoggingHandlerHost handles operations regarding the WebRTC logging: | 70 // WebRtcLoggingHandlerHost handles operations regarding the WebRTC logging: |
| 67 // - Opens a shared memory buffer that the handler in the render process | 71 // - Opens a shared memory buffer that the handler in the render process |
| 68 // writes to. | 72 // writes to. |
| 69 // - Writes basic machine info to the log. | 73 // - Writes basic machine info to the log. |
| 70 // - Informs the handler in the render process when to stop logging. | 74 // - Informs the handler in the render process when to stop logging. |
| 71 // - Closes the shared memory (and thereby discarding it) or triggers uploading | 75 // - Closes the shared memory (and thereby discarding it) or triggers uploading |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 138 stop_callback); | 142 stop_callback); |
| 139 | 143 |
| 140 // Stops dumping the RTP headers for the specified direction. Must be called | 144 // Stops dumping the RTP headers for the specified direction. Must be called |
| 141 // on the IO thread. |type| specifies which direction(s) of RTP packet dumping | 145 // on the IO thread. |type| specifies which direction(s) of RTP packet dumping |
| 142 // should be stopped. |callback| will be called when stopping the dump is | 146 // should be stopped. |callback| will be called when stopping the dump is |
| 143 // done. | 147 // done. |
| 144 void StopRtpDump(RtpDumpType type, const GenericDoneCallback& callback); | 148 void StopRtpDump(RtpDumpType type, const GenericDoneCallback& callback); |
| 145 | 149 |
| 146 // Called when an RTP packet is sent or received. Must be called on the UI | 150 // Called when an RTP packet is sent or received. Must be called on the UI |
| 147 // thread. | 151 // thread. |
| 148 void OnRtpPacket(scoped_ptr<uint8[]> packet_header, | 152 void OnRtpPacket(scoped_ptr<uint8_t[]> packet_header, |
| 149 size_t header_length, | 153 size_t header_length, |
| 150 size_t packet_length, | 154 size_t packet_length, |
| 151 bool incoming); | 155 bool incoming); |
| 152 | 156 |
| 153 // Starts an audio debug recording. The recording lasts the given |delay|, | 157 // Starts an audio debug recording. The recording lasts the given |delay|, |
| 154 // unless |delay| is zero, in which case recording will continue until | 158 // unless |delay| is zero, in which case recording will continue until |
| 155 // StopAudioDebugRecordings() is explicitly invoked. | 159 // StopAudioDebugRecordings() is explicitly invoked. |
| 156 // |callback| is invoked once recording stops. If |delay| is zero | 160 // |callback| is invoked once recording stops. If |delay| is zero |
| 157 // |callback| is invoked once recording starts. | 161 // |callback| is invoked once recording starts. |
| 158 // If a recording was already in progress, |error_callback| is invoked instead | 162 // If a recording was already in progress, |error_callback| is invoked instead |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 238 // sure the log directory exists. | 242 // sure the log directory exists. |
| 239 void CreateRtpDumpHandlerAndStart(RtpDumpType type, | 243 void CreateRtpDumpHandlerAndStart(RtpDumpType type, |
| 240 const GenericDoneCallback& callback, | 244 const GenericDoneCallback& callback, |
| 241 const base::FilePath& dump_dir); | 245 const base::FilePath& dump_dir); |
| 242 | 246 |
| 243 // A helper for starting RTP dump assuming the RTP dump handler has been | 247 // A helper for starting RTP dump assuming the RTP dump handler has been |
| 244 // created. | 248 // created. |
| 245 void DoStartRtpDump(RtpDumpType type, const GenericDoneCallback& callback); | 249 void DoStartRtpDump(RtpDumpType type, const GenericDoneCallback& callback); |
| 246 | 250 |
| 247 // Adds the packet to the dump on IO thread. | 251 // Adds the packet to the dump on IO thread. |
| 248 void DumpRtpPacketOnIOThread(scoped_ptr<uint8[]> packet_header, | 252 void DumpRtpPacketOnIOThread(scoped_ptr<uint8_t[]> packet_header, |
| 249 size_t header_length, | 253 size_t header_length, |
| 250 size_t packet_length, | 254 size_t packet_length, |
| 251 bool incoming); | 255 bool incoming); |
| 252 | 256 |
| 253 bool ReleaseRtpDumps(WebRtcLogPaths* log_paths); | 257 bool ReleaseRtpDumps(WebRtcLogPaths* log_paths); |
| 254 | 258 |
| 255 void FireGenericDoneCallback( | 259 void FireGenericDoneCallback( |
| 256 const WebRtcLoggingHandlerHost::GenericDoneCallback& callback, | 260 const WebRtcLoggingHandlerHost::GenericDoneCallback& callback, |
| 257 bool success, | 261 bool success, |
| 258 const std::string& error_message); | 262 const std::string& error_message); |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 318 // Must be accessed on the UI thread. | 322 // Must be accessed on the UI thread. |
| 319 bool is_audio_debug_recordings_in_progress_; | 323 bool is_audio_debug_recordings_in_progress_; |
| 320 | 324 |
| 321 // This counter allows saving each debug recording in separate files. | 325 // This counter allows saving each debug recording in separate files. |
| 322 uint64_t current_audio_debug_recordings_id_; | 326 uint64_t current_audio_debug_recordings_id_; |
| 323 | 327 |
| 324 DISALLOW_COPY_AND_ASSIGN(WebRtcLoggingHandlerHost); | 328 DISALLOW_COPY_AND_ASSIGN(WebRtcLoggingHandlerHost); |
| 325 }; | 329 }; |
| 326 | 330 |
| 327 #endif // CHROME_BROWSER_MEDIA_WEBRTC_LOGGING_HANDLER_HOST_H_ | 331 #endif // CHROME_BROWSER_MEDIA_WEBRTC_LOGGING_HANDLER_HOST_H_ |
| OLD | NEW |