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
3// found in the LICENSE file.
4
5#ifndef MEDIA_BLINK_ACTIVE_LOADER_H_
6#define MEDIA_BLINK_ACTIVE_LOADER_H_
7
8#include "base/basictypes.h"
9#include "base/memory/scoped_ptr.h"
10#include "media/base/media_export.h"
11
12namespace blink {
13class WebURLLoader;
14}
15
16namespace media {
17
18// Wraps an active WebURLLoader with some additional state.
19//
20// Handles deferring and deletion of loaders.
21class MEDIA_EXPORT ActiveLoader {
22 public:
23  // Creates an ActiveLoader with the given loader. It is assumed that the
24  // initial state of |loader| is loading and not deferred.
25  explicit ActiveLoader(scoped_ptr<blink::WebURLLoader> loader);
26  ~ActiveLoader();
27
28  // Starts or stops deferring the resource load.
29  void SetDeferred(bool deferred);
30  bool deferred() { return deferred_; }
31
32 private:
33  friend class BufferedDataSourceTest;
34
35  scoped_ptr<blink::WebURLLoader> loader_;
36  bool deferred_;
37
38  DISALLOW_IMPLICIT_CONSTRUCTORS(ActiveLoader);
39};
40
41}  // namespace media
42
43#endif  // MEDIA_BLINK_ACTIVE_LOADER_H_
44