forked from mirrors/gecko-dev
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
41 lines
1.2 KiB
C++
41 lines
1.2 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_StreamNotifyParent_h
|
|
#define mozilla_plugins_StreamNotifyParent_h
|
|
|
|
#include "mozilla/plugins/PStreamNotifyParent.h"
|
|
|
|
namespace mozilla {
|
|
namespace plugins {
|
|
|
|
class StreamNotifyParent : public PStreamNotifyParent {
|
|
friend class PluginInstanceParent;
|
|
friend class PStreamNotifyParent;
|
|
|
|
StreamNotifyParent() : mDestructionFlag(nullptr) {}
|
|
~StreamNotifyParent() {
|
|
if (mDestructionFlag) *mDestructionFlag = true;
|
|
}
|
|
|
|
public:
|
|
// If we are destroyed within the call to NPN_GetURLNotify, notify the caller
|
|
// so that we aren't destroyed again. see bug 536437.
|
|
void SetDestructionFlag(bool* flag) { mDestructionFlag = flag; }
|
|
void ClearDestructionFlag() { mDestructionFlag = nullptr; }
|
|
|
|
virtual void ActorDestroy(ActorDestroyReason aWhy) override;
|
|
|
|
private:
|
|
mozilla::ipc::IPCResult RecvRedirectNotifyResponse(const bool& allow);
|
|
|
|
bool* mDestructionFlag;
|
|
};
|
|
|
|
} // namespace plugins
|
|
} // namespace mozilla
|
|
|
|
#endif
|