mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-09 21:00:42 +02:00
For cases where the class has direct calls (that is, we cast `this` to the subclass before making the call) no longer declare Recv/Answer methods on the base class at all. This should ensure that slots for them are not generated in vtables, and also allow the derived class to choose the method signature (e.g. whether it wants to take something by reference or by value). Differential Revision: https://phabricator.services.mozilla.com/D18132 --HG-- extra : moz-landing-system : lando
61 lines
1.8 KiB
C++
61 lines
1.8 KiB
C++
/* -*- Mode: C++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 8 -*- */
|
|
/* vim: set sw=2 ts=2 et : */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#ifndef mozilla_plugins_StreamNotifyChild_h
|
|
#define mozilla_plugins_StreamNotifyChild_h
|
|
|
|
#include "mozilla/plugins/PStreamNotifyChild.h"
|
|
|
|
namespace mozilla {
|
|
namespace plugins {
|
|
|
|
class BrowserStreamChild;
|
|
|
|
class StreamNotifyChild : public PStreamNotifyChild {
|
|
friend class PluginInstanceChild;
|
|
friend class BrowserStreamChild;
|
|
friend class PStreamNotifyChild;
|
|
|
|
public:
|
|
explicit StreamNotifyChild(const nsCString& aURL)
|
|
: mURL(aURL), mClosure(nullptr), mBrowserStream(nullptr) {}
|
|
|
|
virtual void ActorDestroy(ActorDestroyReason why) override;
|
|
|
|
void SetValid(void* aClosure) { mClosure = aClosure; }
|
|
|
|
void NPP_URLNotify(NPReason reason);
|
|
|
|
private:
|
|
virtual mozilla::ipc::IPCResult Recv__delete__(
|
|
const NPReason& reason) override;
|
|
|
|
mozilla::ipc::IPCResult RecvRedirectNotify(const nsCString& url,
|
|
const int32_t& status);
|
|
|
|
/**
|
|
* If a stream is created for this this URLNotify, we associate the objects
|
|
* so that the NPP_URLNotify call is not fired before the stream data is
|
|
* completely delivered. The BrowserStreamChild takes responsibility for
|
|
* calling NPP_URLNotify and deleting this object.
|
|
*/
|
|
void SetAssociatedStream(BrowserStreamChild* bs);
|
|
|
|
nsCString mURL;
|
|
void* mClosure;
|
|
|
|
/**
|
|
* If mBrowserStream is true, it is responsible for deleting this C++ object
|
|
* and DeallocPStreamNotify is not, so that the delayed delivery of
|
|
* NPP_URLNotify is possible.
|
|
*/
|
|
BrowserStreamChild* mBrowserStream;
|
|
};
|
|
|
|
} // namespace plugins
|
|
} // namespace mozilla
|
|
|
|
#endif
|