mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-09 12:51:09 +02:00
90 lines
2.1 KiB
C++
90 lines
2.1 KiB
C++
/* 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/. */
|
|
|
|
#include "mozilla/plugins/PluginWidgetChild.h"
|
|
|
|
#include "mozilla/dom/TabChild.h"
|
|
#include "mozilla/plugins/PluginWidgetParent.h"
|
|
#include "PluginWidgetProxy.h"
|
|
|
|
#include "mozilla/unused.h"
|
|
#include "mozilla/DebugOnly.h"
|
|
#include "nsDebug.h"
|
|
|
|
#if defined(XP_WIN)
|
|
#include "mozilla/plugins/PluginInstanceParent.h"
|
|
#endif
|
|
|
|
#define PWLOG(...)
|
|
//#define PWLOG(...) printf_stderr(__VA_ARGS__)
|
|
|
|
namespace mozilla {
|
|
namespace plugins {
|
|
|
|
PluginWidgetChild::PluginWidgetChild() :
|
|
mWidget(nullptr)
|
|
{
|
|
PWLOG("PluginWidgetChild::PluginWidgetChild()\n");
|
|
MOZ_COUNT_CTOR(PluginWidgetChild);
|
|
}
|
|
|
|
PluginWidgetChild::~PluginWidgetChild()
|
|
{
|
|
PWLOG("PluginWidgetChild::~PluginWidgetChild()\n");
|
|
MOZ_COUNT_DTOR(PluginWidgetChild);
|
|
}
|
|
|
|
bool
|
|
PluginWidgetChild::RecvSetScrollCaptureId(const uint64_t& aScrollCaptureId,
|
|
const uintptr_t& aPluginInstanceId)
|
|
{
|
|
#if defined(XP_WIN)
|
|
PluginInstanceParent* instance =
|
|
PluginInstanceParent::LookupPluginInstanceByID(aPluginInstanceId);
|
|
if (instance) {
|
|
NS_WARN_IF(NS_FAILED(instance->SetScrollCaptureId(aScrollCaptureId)));
|
|
}
|
|
|
|
return true;
|
|
#else
|
|
MOZ_ASSERT_UNREACHABLE(
|
|
"PluginWidgetChild::RecvSetScrollCaptureId calls not expected.");
|
|
return false;
|
|
#endif
|
|
}
|
|
|
|
// Called by the proxy widget when it is destroyed by layout. Only gets
|
|
// called once.
|
|
void
|
|
PluginWidgetChild::ProxyShutdown()
|
|
{
|
|
PWLOG("PluginWidgetChild::ProxyShutdown()\n");
|
|
if (mWidget) {
|
|
mWidget = nullptr;
|
|
auto tab = static_cast<mozilla::dom::TabChild*>(Manager());
|
|
if (!tab->IsDestroyed()) {
|
|
Unused << Send__delete__(this);
|
|
}
|
|
}
|
|
}
|
|
|
|
void
|
|
PluginWidgetChild::KillWidget()
|
|
{
|
|
PWLOG("PluginWidgetChild::KillWidget()\n");
|
|
if (mWidget) {
|
|
mWidget->ChannelDestroyed();
|
|
}
|
|
mWidget = nullptr;
|
|
}
|
|
|
|
void
|
|
PluginWidgetChild::ActorDestroy(ActorDestroyReason aWhy)
|
|
{
|
|
PWLOG("PluginWidgetChild::ActorDestroy(%d)\n", aWhy);
|
|
KillWidget();
|
|
}
|
|
|
|
} // namespace plugins
|
|
} // namespace mozilla
|