mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-21 17:25:36 +00:00
34dcc7b852
This change avoids lots of false positives for Coverity's CHECKED_RETURN warning, caused by NS_WARN_IF's current use in both statement-style and expression-style. In the case where the code within the NS_WARN_IF has side-effects, I made the following change. > NS_WARN_IF(NS_FAILED(FunctionWithSideEffects())); > --> > Unused << NS_WARN_IF(NS_FAILED(FunctionWithSideEffects())); In the case where the code within the NS_WARN_IF lacks side-effects, I made the following change. > NS_WARN_IF(!condWithoutSideEffects); > --> > NS_WARNING_ASSERTION(condWithoutSideEffects, "msg"); This has two improvements. - The condition is not evaluated in non-debug builds. - The sense of the condition is inverted to the familiar "this condition should be true" sense used in assertions. A common variation on the side-effect-free case is the following. > nsresult rv = Fn(); > NS_WARN_IF_(NS_FAILED(rv)); > --> > DebugOnly<nsresult rv> = Fn(); > NS_WARNING_ASSERTION(NS_SUCCEEDED(rv), "Fn failed"); --HG-- extra : rebase_source : 58788245021096efa8372a9dc1d597a611d45611
91 lines
2.1 KiB
C++
91 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) {
|
|
Unused << 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
|