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

Unified Diff: trunk/src/chrome/browser/media/webrtc_rtp_dump_handler.h

Issue 307063003: Revert 273745 "Implements RTP header dumping." due to memory leak (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 6 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: trunk/src/chrome/browser/media/webrtc_rtp_dump_handler.h
===================================================================
--- trunk/src/chrome/browser/media/webrtc_rtp_dump_handler.h (revision 273764)
+++ trunk/src/chrome/browser/media/webrtc_rtp_dump_handler.h (working copy)
@@ -1,131 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_MEDIA_WEBRTC_RTP_DUMP_HANDLER_H_
-#define CHROME_BROWSER_MEDIA_WEBRTC_RTP_DUMP_HANDLER_H_
-
-#include "base/basictypes.h"
-#include "base/callback.h"
-#include "base/files/file_path.h"
-#include "base/memory/weak_ptr.h"
-#include "chrome/browser/media/rtp_dump_type.h"
-
-class WebRtcRtpDumpWriter;
-
-// WebRtcRtpDumpHandler handles operations regarding the WebRTC RTP dump:
-// - Starts or stops the RTP dumping on behalf of the client.
-// - Stops the RTP dumping when the max dump file size is reached.
-// - Writes the dump file.
-// - Provides the dump file to the client code to be uploaded when
-// ReleaseRtpDump is called.
-// - Cleans up the dump file if not transferred to the client before the object
-// is destroyed.
-//
-// Must be created/used/destroyed on the browser IO thread.
-class WebRtcRtpDumpHandler {
- public:
- typedef base::Callback<void(bool, const std::string&)> GenericDoneCallback;
-
- struct ReleasedDumps {
- ReleasedDumps(const base::FilePath& incoming_dump,
- const base::FilePath& outgoing_dump)
- : incoming_dump_path(incoming_dump),
- outgoing_dump_path(outgoing_dump) {}
-
- const base::FilePath incoming_dump_path;
- const base::FilePath outgoing_dump_path;
- };
-
- // The caller must make sure |dump_dir| exists. RTP dump files are saved under
- // |dump_dir| as "rtpdump_$DIRECTION_$TIMESTAMP.gz", where $DIRECTION is
- // 'send' for outgoing dump or 'recv' for incoming dump. $TIMESTAMP is the
- // dump started time converted to a double number in microsecond precision,
- // which should guarantee the uniqueness across tabs and dump streams in
- // practice.
- explicit WebRtcRtpDumpHandler(const base::FilePath& dump_dir);
- ~WebRtcRtpDumpHandler();
-
- // Starts the specified type of dumping. Incoming/outgoing dumping can be
- // started separately. Returns true if called in a valid state, i.e. the
- // specified type of dump has not been started.
- bool StartDump(RtpDumpType type, std::string* error_message);
-
- // Stops the specified type of dumping. Incoming/outgoing dumping can be
- // stopped separately. Returns asynchronously through |callback|, where
- // |success| is true if StopDump is called in a valid state. The callback is
- // called when the writer finishes writing the dumps.
- void StopDump(RtpDumpType type, const GenericDoneCallback& callback);
-
- // Returns true if it's valid to call ReleaseDumps, i.e. no dumping is ongoing
- // or being stopped.
- bool ReadyToRelease() const;
-
- // Releases all the dumps and resets the state.
- // It should only be called when both incoming and outgoing dumping has been
- // stopped, i.e. ReadyToRelease() returns true. Returns the dump file paths.
- //
- // The caller will own the dump file after the method returns. If ReleaseDump
- // is not called before this object goes away, the dump file will be deleted
- // by this object.
- ReleasedDumps ReleaseDumps();
-
- // Adds an RTP packet to the dump. The caller must make sure it's a valid RTP
- // packet.
- void OnRtpPacket(const uint8* packet_header,
- size_t header_length,
- size_t packet_length,
- bool incoming);
-
- // Stops all ongoing dumps and call |callback| when finished.
- void StopOngoingDumps(const base::Closure& callback);
-
- private:
- friend class WebRtcRtpDumpHandlerTest;
-
- // State transitions:
- // initial --> STATE_NONE
- // StartDump --> STATE_STARTED
- // StopDump --> STATE_STOPPED
- // ReleaseDump --> STATE_RELEASING
- // ReleaseDump done --> STATE_NONE
- enum State {
- STATE_NONE,
- STATE_STARTED,
- STATE_STOPPING,
- STATE_STOPPED,
- };
-
- // For unit test to inject a fake writer.
- void SetDumpWriterForTesting(scoped_ptr<WebRtcRtpDumpWriter> writer);
-
- // Callback from the dump writer when the max dump size is reached.
- void OnMaxDumpSizeReached();
-
- // Callback from the dump writer when ending dumps finishes. Calls |callback|
- // when finished.
- void OnDumpEnded(const base::Closure& callback,
- RtpDumpType ended_type,
- bool incoming_succeeded,
- bool outgoing_succeeded);
-
- // The absolute path to the directory containing the incoming/outgoing dumps.
- const base::FilePath dump_dir_;
-
- // The dump file paths.
- base::FilePath incoming_dump_path_;
- base::FilePath outgoing_dump_path_;
-
- // The states of the incoming and outgoing dump.
- State incoming_state_;
- State outgoing_state_;
-
- // The object used to create and write the dump file.
- scoped_ptr<WebRtcRtpDumpWriter> dump_writer_;
-
- base::WeakPtrFactory<WebRtcRtpDumpHandler> weak_ptr_factory_;
-
- DISALLOW_COPY_AND_ASSIGN(WebRtcRtpDumpHandler);
-};
-
-#endif // CHROME_BROWSER_MEDIA_WEBRTC_RTP_DUMP_HANDLER_H_

Powered by Google App Engine
This is Rietveld 408576698