diff options
Diffstat (limited to 'widget/android/nsWindow.h')
-rw-r--r-- | widget/android/nsWindow.h | 289 |
1 files changed, 0 insertions, 289 deletions
diff --git a/widget/android/nsWindow.h b/widget/android/nsWindow.h deleted file mode 100644 index f3d7566f7..000000000 --- a/widget/android/nsWindow.h +++ /dev/null @@ -1,289 +0,0 @@ -/* -*- Mode: c++; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*- - * vim: set sw=4 ts=4 expandtab: - * 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 NSWINDOW_H_ -#define NSWINDOW_H_ - -#include "nsBaseWidget.h" -#include "gfxPoint.h" -#include "nsIIdleServiceInternal.h" -#include "nsTArray.h" -#include "AndroidJavaWrappers.h" -#include "GeneratedJNIWrappers.h" -#include "mozilla/EventForwards.h" -#include "mozilla/Mutex.h" -#include "mozilla/StaticPtr.h" -#include "mozilla/TextRange.h" -#include "mozilla/UniquePtr.h" - -struct ANPEvent; - -namespace mozilla { - class TextComposition; - class WidgetTouchEvent; - - namespace layers { - class CompositorBridgeParent; - class CompositorBridgeChild; - class LayerManager; - class APZCTreeManager; - } -} - -class nsWindow : public nsBaseWidget -{ -private: - virtual ~nsWindow(); - -public: - using nsBaseWidget::GetLayerManager; - - nsWindow(); - - NS_DECL_ISUPPORTS_INHERITED - - static void InitNatives(); - void SetScreenId(uint32_t aScreenId) { mScreenId = aScreenId; } - -private: - uint32_t mScreenId; - - // An Event subclass that guards against stale events. - template<typename Lambda, - bool IsStatic = Lambda::isStatic, - typename InstanceType = typename Lambda::ThisArgType, - class Impl = typename Lambda::TargetClass> - class WindowEvent; - - // Smart pointer for holding a pointer back to the nsWindow inside a native - // object class. The nsWindow pointer is automatically cleared when the - // nsWindow is destroyed, and a WindowPtr<Impl>::Locked class is provided - // for thread-safe access to the nsWindow pointer off of the Gecko thread. - template<class Impl> class WindowPtr; - - // Smart pointer for holding a pointer to a native object class. The - // pointer is automatically cleared when the object is destroyed. - template<class Impl> - class NativePtr final - { - friend WindowPtr<Impl>; - - static const char sName[]; - - WindowPtr<Impl>* mPtr; - Impl* mImpl; - mozilla::Mutex mImplLock; - - public: - class Locked; - - NativePtr() : mPtr(nullptr), mImpl(nullptr), mImplLock(sName) {} - ~NativePtr() { MOZ_ASSERT(!mPtr); } - - operator Impl*() const - { - MOZ_ASSERT(NS_IsMainThread()); - return mImpl; - } - - Impl* operator->() const { return operator Impl*(); } - - template<class Instance, typename... Args> - void Attach(Instance aInstance, nsWindow* aWindow, Args&&... aArgs); - void Detach(); - }; - - class LayerViewSupport; - // Object that implements native LayerView calls. - // Owned by the Java LayerView instance. - NativePtr<LayerViewSupport> mLayerViewSupport; - - class NPZCSupport; - // Object that implements native NativePanZoomController calls. - // Owned by the Java NativePanZoomController instance. - NativePtr<NPZCSupport> mNPZCSupport; - - class GeckoViewSupport; - // Object that implements native GeckoView calls and associated states. - // nullptr for nsWindows that were not opened from GeckoView. - // Because other objects get destroyed in the mGeckOViewSupport destructor, - // keep it last in the list, so its destructor is called first. - mozilla::UniquePtr<GeckoViewSupport> mGeckoViewSupport; - - // Class that implements native PresentationMediaPlayerManager calls. - class PMPMSupport; - -public: - static nsWindow* TopWindow(); - - void OnSizeChanged(const mozilla::gfx::IntSize& aSize); - - void InitEvent(mozilla::WidgetGUIEvent& event, - LayoutDeviceIntPoint* aPoint = 0); - - void UpdateOverscrollVelocity(const float aX, const float aY); - void UpdateOverscrollOffset(const float aX, const float aY); - void SetScrollingRootContent(const bool isRootContent); - - // - // nsIWidget - // - - using nsBaseWidget::Create; // for Create signature not overridden here - virtual MOZ_MUST_USE nsresult Create(nsIWidget* aParent, - nsNativeWidget aNativeParent, - const LayoutDeviceIntRect& aRect, - nsWidgetInitData* aInitData) override; - virtual void Destroy() override; - NS_IMETHOD ConfigureChildren(const nsTArray<nsIWidget::Configuration>&) override; - NS_IMETHOD SetParent(nsIWidget* aNewParent) override; - virtual nsIWidget *GetParent(void) override; - virtual float GetDPI() override; - virtual double GetDefaultScaleInternal() override; - NS_IMETHOD Show(bool aState) override; - virtual bool IsVisible() const override; - virtual void ConstrainPosition(bool aAllowSlop, - int32_t *aX, - int32_t *aY) override; - NS_IMETHOD Move(double aX, - double aY) override; - NS_IMETHOD Resize(double aWidth, - double aHeight, - bool aRepaint) override; - NS_IMETHOD Resize(double aX, - double aY, - double aWidth, - double aHeight, - bool aRepaint) override; - void SetZIndex(int32_t aZIndex) override; - virtual void SetSizeMode(nsSizeMode aMode) override; - NS_IMETHOD Enable(bool aState) override; - virtual bool IsEnabled() const override; - NS_IMETHOD Invalidate(const LayoutDeviceIntRect& aRect) override; - NS_IMETHOD SetFocus(bool aRaise = false) override; - virtual LayoutDeviceIntRect GetScreenBounds() override; - virtual LayoutDeviceIntPoint WidgetToScreenOffset() override; - NS_IMETHOD DispatchEvent(mozilla::WidgetGUIEvent* aEvent, - nsEventStatus& aStatus) override; - nsEventStatus DispatchEvent(mozilla::WidgetGUIEvent* aEvent); - virtual already_AddRefed<nsIScreen> GetWidgetScreen() override; - virtual nsresult MakeFullScreen(bool aFullScreen, - nsIScreen* aTargetScreen = nullptr) - override; - - NS_IMETHOD SetCursor(nsCursor aCursor) override { return NS_ERROR_NOT_IMPLEMENTED; } - NS_IMETHOD SetCursor(imgIContainer* aCursor, - uint32_t aHotspotX, - uint32_t aHotspotY) override { return NS_ERROR_NOT_IMPLEMENTED; } - NS_IMETHOD SetHasTransparentBackground(bool aTransparent) { return NS_OK; } - NS_IMETHOD GetHasTransparentBackground(bool& aTransparent) { aTransparent = false; return NS_OK; } - NS_IMETHOD HideWindowChrome(bool aShouldHide) override { return NS_ERROR_NOT_IMPLEMENTED; } - void* GetNativeData(uint32_t aDataType) override; - void SetNativeData(uint32_t aDataType, uintptr_t aVal) override; - NS_IMETHOD SetTitle(const nsAString& aTitle) override { return NS_OK; } - NS_IMETHOD SetIcon(const nsAString& aIconSpec) override { return NS_OK; } - NS_IMETHOD GetAttention(int32_t aCycleCount) override { return NS_ERROR_NOT_IMPLEMENTED; } - NS_IMETHOD BeginResizeDrag(mozilla::WidgetGUIEvent* aEvent, - int32_t aHorizontal, - int32_t aVertical) override - { - return NS_ERROR_NOT_IMPLEMENTED; - } - - NS_IMETHOD_(void) SetInputContext(const InputContext& aContext, - const InputContextAction& aAction) override; - NS_IMETHOD_(InputContext) GetInputContext() override; - virtual nsIMEUpdatePreference GetIMEUpdatePreference() override; - - void SetSelectionDragState(bool aState); - LayerManager* GetLayerManager(PLayerTransactionChild* aShadowManager = nullptr, - LayersBackend aBackendHint = mozilla::layers::LayersBackend::LAYERS_NONE, - LayerManagerPersistence aPersistence = LAYER_MANAGER_CURRENT) override; - - virtual bool NeedsPaint() override; - virtual bool PreRender(mozilla::widget::WidgetRenderingContext* aContext) override; - virtual void DrawWindowUnderlay(mozilla::widget::WidgetRenderingContext* aContext, - LayoutDeviceIntRect aRect) override; - virtual void DrawWindowOverlay(mozilla::widget::WidgetRenderingContext* aContext, - LayoutDeviceIntRect aRect) override; - - virtual bool WidgetPaintsBackground() override; - - virtual uint32_t GetMaxTouchPoints() const override; - - void UpdateZoomConstraints(const uint32_t& aPresShellId, - const FrameMetrics::ViewID& aViewId, - const mozilla::Maybe<ZoomConstraints>& aConstraints) override; - - nsresult SynthesizeNativeTouchPoint(uint32_t aPointerId, - TouchPointerState aPointerState, - LayoutDeviceIntPoint aPoint, - double aPointerPressure, - uint32_t aPointerOrientation, - nsIObserver* aObserver) override; - nsresult SynthesizeNativeMouseEvent(LayoutDeviceIntPoint aPoint, - uint32_t aNativeMessage, - uint32_t aModifierFlags, - nsIObserver* aObserver) override; - nsresult SynthesizeNativeMouseMove(LayoutDeviceIntPoint aPoint, - nsIObserver* aObserver) override; - - CompositorBridgeParent* GetCompositorBridgeParent() const; - - mozilla::jni::DependentRef<mozilla::java::GeckoLayerClient> GetLayerClient(); - -protected: - void BringToFront(); - nsWindow *FindTopLevel(); - bool IsTopLevel(); - - RefPtr<mozilla::TextComposition> GetIMEComposition(); - enum RemoveIMECompositionFlag { - CANCEL_IME_COMPOSITION, - COMMIT_IME_COMPOSITION - }; - void RemoveIMEComposition(RemoveIMECompositionFlag aFlag = COMMIT_IME_COMPOSITION); - - void ConfigureAPZControllerThread() override; - void DispatchHitTest(const mozilla::WidgetTouchEvent& aEvent); - - already_AddRefed<GeckoContentController> CreateRootContentController() override; - - // Call this function when the users activity is the direct cause of an - // event (like a keypress or mouse click). - void UserActivity(); - - bool mIsVisible; - nsTArray<nsWindow*> mChildren; - nsWindow* mParent; - - double mStartDist; - double mLastDist; - - nsCOMPtr<nsIIdleServiceInternal> mIdleService; - - bool mAwaitingFullScreen; - bool mIsFullScreen; - - virtual nsresult NotifyIMEInternal( - const IMENotification& aIMENotification) override; - - bool UseExternalCompositingSurface() const override { - return true; - } - - static void DumpWindows(); - static void DumpWindows(const nsTArray<nsWindow*>& wins, int indent = 0); - static void LogWindow(nsWindow *win, int index, int indent); - -private: - void CreateLayerManager(int aCompositorWidth, int aCompositorHeight); - void RedrawAll(); - - mozilla::java::LayerRenderer::Frame::GlobalRef mLayerRendererFrame; -}; - -#endif /* NSWINDOW_H_ */ |