gecko-dev/widget/android/AndroidView.h
Aaron Klotz 66f053ebc4 Bug 1651705: Part 3 - Move nested classes out of nsWindow, switch over to NativeWeakPtr in those class definitions; r=geckoview-reviewers,agi
* Having `AndroidView` and `GeckoViewSupport` as nested classes inside of
  `nsWindow` make it impossible to forward declare them. We move those classes
  into their own headers. We also move `WindowEvent` into its own header.

* We remove the old `NativePtr` and `WindowPtr` implementations from `nsWindow`
  and convert the class definitions in this patch to use the new `NativeWeakPtr`.

* `GeckoViewSupport` had a unique quirk where it was owned by `nsWindow`
  instead of its Java counterpart. To make `GeckoViewSupport`'s ownership work
  like the other classes that use `NativeWeakPtr` (and to substantially simplify
  the implementation of `NativeWeakPtr` itself), I have reversed that: now
  `nsWindow` holds a `NativeWeakPtr` to `GeckoViewSupport`, while
  `GeckoViewSupport` is owned by its Java counterpart and holds a strong ref to
  the `nsWindow`.

* `GeckoViewSupport` no longer inherits from `SupportsWeakPtr`, since using it
  with `NativeWeakPtr` provides stronger and safer guarantees.

Differential Revision: https://phabricator.services.mozilla.com/D87362
2020-09-21 21:48:26 +00:00

36 lines
959 B
C++

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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_widget_AndroidView_h
#define mozilla_widget_AndroidView_h
#include "mozilla/widget/EventDispatcher.h"
namespace mozilla {
namespace widget {
class AndroidView final : public nsIAndroidView {
virtual ~AndroidView() {}
public:
const RefPtr<mozilla::widget::EventDispatcher> mEventDispatcher{
new mozilla::widget::EventDispatcher()};
AndroidView() {}
NS_DECL_ISUPPORTS
NS_DECL_NSIANDROIDVIEW
NS_FORWARD_NSIANDROIDEVENTDISPATCHER(mEventDispatcher->)
mozilla::java::GeckoBundle::GlobalRef mInitData;
};
} // namespace widget
} // namespace mozilla
#endif // mozilla_widget_AndroidView_h