There were a couple of problems when delivering tap gestures to content with full zoom applied. One was that the ConverToGecko function converted the coords into "CSS pixel" space by using the web content's CSS-to-LD scale, but also applied that on the translation from the chrome area. Moving that conversion to later in the process (after the coords got passed through TabParent:: AdjustTapToChildWidget) corrected that issue. The other problem was that bits of code in APZEventState and APZCCallbackHelper were using the widget->GetDefaultScale() value as the CSS-to-LD scale, but that omitted the full zoom value. Getting the CSS-to-LD scale from the presShell and propagating that through corrected that issue. MozReview-Commit-ID: KdrkdEZslHo
57 lines
2.1 KiB
C++
57 lines
2.1 KiB
C++
/* -*- Mode: c++; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
|
|
* 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 AndroidContentController_h__
|
|
#define AndroidContentController_h__
|
|
|
|
#include "mozilla/layers/ChromeProcessController.h"
|
|
#include "mozilla/EventForwards.h" // for Modifiers
|
|
#include "mozilla/StaticPtr.h"
|
|
#include "mozilla/TimeStamp.h"
|
|
#include "nsIDOMWindowUtils.h"
|
|
#include "nsTArray.h"
|
|
#include "nsWindow.h"
|
|
|
|
namespace mozilla {
|
|
namespace layers {
|
|
class APZEventState;
|
|
class IAPZCTreeManager;
|
|
}
|
|
namespace widget {
|
|
|
|
class AndroidContentController final
|
|
: public mozilla::layers::ChromeProcessController
|
|
{
|
|
public:
|
|
AndroidContentController(nsWindow* aWindow,
|
|
mozilla::layers::APZEventState* aAPZEventState,
|
|
mozilla::layers::IAPZCTreeManager* aAPZCTreeManager)
|
|
: mozilla::layers::ChromeProcessController(aWindow, aAPZEventState, aAPZCTreeManager)
|
|
, mAndroidWindow(aWindow)
|
|
{}
|
|
|
|
// ChromeProcessController methods
|
|
virtual void Destroy() override;
|
|
void HandleTap(TapType aType, const LayoutDevicePoint& aPoint, Modifiers aModifiers,
|
|
const ScrollableLayerGuid& aGuid, uint64_t aInputBlockId) override;
|
|
void PostDelayedTask(already_AddRefed<Runnable> aTask, int aDelayMs) override;
|
|
void UpdateOverscrollVelocity(const float aX, const float aY) override;
|
|
void UpdateOverscrollOffset(const float aX, const float aY) override;
|
|
void SetScrollingRootContent(const bool isRootContent) override;
|
|
void NotifyAPZStateChange(const ScrollableLayerGuid& aGuid,
|
|
APZStateChange aChange,
|
|
int aArg) override;
|
|
|
|
static void NotifyDefaultPrevented(mozilla::layers::IAPZCTreeManager* aManager,
|
|
uint64_t aInputBlockId, bool aDefaultPrevented);
|
|
private:
|
|
nsWindow* mAndroidWindow;
|
|
};
|
|
|
|
} // namespace widget
|
|
} // namespace mozilla
|
|
|
|
#endif
|