Coverage Report

Created: 2018-09-25 14:53

/work/obj-fuzz/dist/include/mozilla/plugins/StreamNotifyChild.h
Line
Count
Source (jump to first uncovered line)
1
/* -*- Mode: C++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 8 -*- */
2
/* vim: set sw=2 ts=2 et : */
3
/* This Source Code Form is subject to the terms of the Mozilla Public
4
 * License, v. 2.0. If a copy of the MPL was not distributed with this
5
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6
7
#ifndef mozilla_plugins_StreamNotifyChild_h
8
#define mozilla_plugins_StreamNotifyChild_h
9
10
#include "mozilla/plugins/PStreamNotifyChild.h"
11
12
namespace mozilla {
13
namespace plugins {
14
15
class BrowserStreamChild;
16
17
class StreamNotifyChild : public PStreamNotifyChild
18
{
19
  friend class PluginInstanceChild;
20
  friend class BrowserStreamChild;
21
22
public:
23
  explicit StreamNotifyChild(const nsCString& aURL)
24
    : mURL(aURL)
25
    , mClosure(nullptr)
26
    , mBrowserStream(nullptr)
27
0
  { }
28
29
  virtual void ActorDestroy(ActorDestroyReason why) override;
30
31
0
  void SetValid(void* aClosure) {
32
0
    mClosure = aClosure;
33
0
  }
34
35
  void NPP_URLNotify(NPReason reason);
36
37
private:
38
  virtual mozilla::ipc::IPCResult Recv__delete__(const NPReason& reason) override;
39
40
  mozilla::ipc::IPCResult RecvRedirectNotify(const nsCString& url, const int32_t& status) override;
41
42
  /**
43
   * If a stream is created for this this URLNotify, we associate the objects
44
   * so that the NPP_URLNotify call is not fired before the stream data is
45
   * completely delivered. The BrowserStreamChild takes responsibility for
46
   * calling NPP_URLNotify and deleting this object.
47
   */
48
  void SetAssociatedStream(BrowserStreamChild* bs);
49
50
  nsCString mURL;
51
  void* mClosure;
52
53
  /**
54
   * If mBrowserStream is true, it is responsible for deleting this C++ object
55
   * and DeallocPStreamNotify is not, so that the delayed delivery of
56
   * NPP_URLNotify is possible.
57
   */
58
  BrowserStreamChild* mBrowserStream;
59
};
60
61
} // namespace plugins
62
} // namespace mozilla
63
64
#endif