gecko/mobile/android/base/gfx/NativePanZoomController.java
Ryan VanderMeulen 51ab56ef96 Backed out 7 changesets (bug 913985) for intermittent Android crashes.
Backed out changeset 53513a959cf0 (bug 913985)
Backed out changeset d23d1e678417 (bug 913985)
Backed out changeset a9c9187b4f4a (bug 913985)
Backed out changeset c6b02e4a3e35 (bug 913985)
Backed out changeset 895dae322e3c (bug 913985)
Backed out changeset 3d97e6a53313 (bug 913985)
Backed out changeset 892bb017f8ba (bug 913985)

--HG--
rename : build/annotationProcessors/AnnotationInfo.java => build/annotationProcessors/MethodWithAnnotationInfo.java
rename : build/annotationProcessors/utils/AlphabeticAnnotatableEntityComparator.java => build/annotationProcessors/utils/AlphabeticMethodComparator.java
rename : build/annotationProcessors/utils/GeneratableElementIterator.java => build/annotationProcessors/utils/GeneratableEntryPointIterator.java
rename : mobile/android/base/mozglue/generatorannotations/WrapElementForJNI.java => mobile/android/base/mozglue/GeneratableAndroidBridgeTarget.java
rename : mobile/android/base/mozglue/generatorannotations/OptionalGeneratedParameter.java => mobile/android/base/mozglue/OptionalGeneratedParameter.java
2013-11-19 10:56:09 -05:00

111 lines
3.6 KiB
Java

/* -*- Mode: Java; 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/. */
package org.mozilla.gecko.gfx;
import org.mozilla.gecko.GeckoEvent;
import org.mozilla.gecko.GeckoThread;
import org.mozilla.gecko.mozglue.generatorannotations.WrapElementForJNI;
import org.mozilla.gecko.util.EventDispatcher;
import org.mozilla.gecko.util.GeckoEventListener;
import org.json.JSONObject;
import android.graphics.PointF;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
class NativePanZoomController implements PanZoomController, GeckoEventListener {
private final PanZoomTarget mTarget;
private final EventDispatcher mDispatcher;
private final CallbackRunnable mCallbackRunnable;
NativePanZoomController(PanZoomTarget target, View view, EventDispatcher dispatcher) {
mTarget = target;
mDispatcher = dispatcher;
mCallbackRunnable = new CallbackRunnable();
if (GeckoThread.checkLaunchState(GeckoThread.LaunchState.GeckoRunning)) {
init();
} else {
mDispatcher.registerEventListener("Gecko:Ready", this);
}
}
public void handleMessage(String event, JSONObject message) {
if ("Gecko:Ready".equals(event)) {
mDispatcher.unregisterEventListener("Gecko:Ready", this);
init();
}
}
public boolean onTouchEvent(MotionEvent event) {
GeckoEvent wrapped = GeckoEvent.createMotionEvent(event, true);
handleTouchEvent(wrapped);
return false;
}
public boolean onMotionEvent(MotionEvent event) {
// FIXME implement this
return false;
}
public boolean onKeyEvent(KeyEvent event) {
// FIXME implement this
return false;
}
public PointF getVelocityVector() {
// FIXME implement this
return new PointF(0, 0);
}
public void pageRectUpdated() {
// no-op in APZC, I think
}
public void abortPanning() {
// no-op in APZC, I think
}
public native void abortAnimation();
private native void init();
private native void handleTouchEvent(GeckoEvent event);
private native void handleMotionEvent(GeckoEvent event);
private native long runDelayedCallback();
public native void destroy();
public native void notifyDefaultActionPrevented(boolean prevented);
public native boolean getRedrawHint();
public native void setOverScrollMode(int overscrollMode);
public native int getOverScrollMode();
@WrapElementForJNI(allowMultithread = true, stubName = "RequestContentRepaintWrapper")
private void requestContentRepaint(float x, float y, float width, float height, float resolution) {
mTarget.forceRedraw(new DisplayPortMetrics(x, y, x + width, y + height, resolution));
}
@WrapElementForJNI(allowMultithread = true, stubName = "PostDelayedCallbackWrapper")
private void postDelayedCallback(long delay) {
mTarget.postDelayed(mCallbackRunnable, delay);
}
class CallbackRunnable implements Runnable {
@Override
public void run() {
long nextDelay = runDelayedCallback();
if (nextDelay >= 0) {
mTarget.postDelayed(this, nextDelay);
}
}
}
public native void updateScrollOffset(float cssX, float cssY);
public void setOverscrollHandler(final Overscroll listener) {
}
}