Bug 852704: Created Java enums to encapsulate data formerly stored in int constants. r=cpeterson

This commit is contained in:
ext:(%20brianecker%40gmail.com) 2013-04-08 13:21:52 -07:00
parent 73fd7c7706
commit 2e5b8bf902
3 changed files with 114 additions and 88 deletions

View File

@ -220,8 +220,8 @@ final class GeckoEditable
case Action.TYPE_SET_SPAN:
case Action.TYPE_REMOVE_SPAN:
case Action.TYPE_SET_HANDLER:
GeckoAppShell.sendEventToGecko(
GeckoEvent.createIMEEvent(GeckoEvent.IME_SYNCHRONIZE));
GeckoAppShell.sendEventToGecko(GeckoEvent.createIMEEvent(
GeckoEvent.ImeAction.IME_SYNCHRONIZE));
break;
case Action.TYPE_REPLACE_TEXT:
// try key events first
@ -231,7 +231,7 @@ final class GeckoEditable
break;
case Action.TYPE_ACKNOWLEDGE_FOCUS:
GeckoAppShell.sendEventToGecko(GeckoEvent.createIMEEvent(
GeckoEvent.IME_ACKNOWLEDGE_FOCUS));
GeckoEvent.ImeAction.IME_ACKNOWLEDGE_FOCUS));
break;
}
++mIcUpdateSeqno;
@ -426,7 +426,7 @@ final class GeckoEditable
GeckoEvent.createIMESelectEvent(selStart, selEnd));
} else {
GeckoAppShell.sendEventToGecko(GeckoEvent.createIMEEvent(
GeckoEvent.IME_REMOVE_COMPOSITION));
GeckoEvent.ImeAction.IME_REMOVE_COMPOSITION));
}
return;
}

View File

@ -31,7 +31,7 @@ import java.nio.ByteBuffer;
* Fields have different meanings depending on the event type.
*/
/* This class is referenced by Robocop via reflection; use care when
/* This class is referenced by Robocop via reflection; use care when
* modifying the signature.
*/
public class GeckoEvent {
@ -39,48 +39,73 @@ public class GeckoEvent {
// Make sure to keep these values in sync with the enum in
// AndroidGeckoEvent in widget/android/AndroidJavaWrapper.h
private static final int NATIVE_POKE = 0;
private static final int KEY_EVENT = 1;
private static final int MOTION_EVENT = 2;
private static final int SENSOR_EVENT = 3;
private static final int LOCATION_EVENT = 5;
private static final int IME_EVENT = 6;
private static final int DRAW = 7;
private static final int SIZE_CHANGED = 8;
private static final int APP_BACKGROUNDING = 9;
private static final int APP_FOREGROUNDING = 10;
private static final int LOAD_URI = 12;
private static final int NOOP = 15;
private static final int BROADCAST = 19;
private static final int VIEWPORT = 20;
private static final int VISITED = 21;
private static final int NETWORK_CHANGED = 22;
private static final int THUMBNAIL = 25;
private static final int SCREENORIENTATION_CHANGED = 27;
private static final int COMPOSITOR_CREATE = 28;
private static final int COMPOSITOR_PAUSE = 29;
private static final int COMPOSITOR_RESUME = 30;
private static final int NATIVE_GESTURE_EVENT = 31;
private static final int IME_KEY_EVENT = 32;
private enum NativeGeckoEvent {
NATIVE_POKE(0),
KEY_EVENT(1),
MOTION_EVENT(2),
SENSOR_EVENT(3),
LOCATION_EVENT(5),
IME_EVENT(6),
DRAW(7),
SIZE_CHANGED(8),
APP_BACKGROUNDING(9),
APP_FOREGROUNDING(10),
LOAD_URI(12),
NOOP(15),
BROADCAST(19),
VIEWPORT(20),
VISITED(21),
NETWORK_CHANGED(22),
THUMBNAIL(25),
SCREENORIENTATION_CHANGED(27),
COMPOSITOR_CREATE(28),
COMPOSITOR_PAUSE(29),
COMPOSITOR_RESUME(30),
NATIVE_GESTURE_EVENT(31),
IME_KEY_EVENT(32);
public final int value;
private NativeGeckoEvent(int value) {
this.value = value;
}
}
/**
* These DOM_KEY_LOCATION constants mirror the DOM KeyboardEvent's constants.
* The DomKeyLocation enum encapsulates the DOM KeyboardEvent's constants.
* @see https://developer.mozilla.org/en-US/docs/DOM/KeyboardEvent#Key_location_constants
*/
private static final int DOM_KEY_LOCATION_STANDARD = 0;
private static final int DOM_KEY_LOCATION_LEFT = 1;
private static final int DOM_KEY_LOCATION_RIGHT = 2;
private static final int DOM_KEY_LOCATION_NUMPAD = 3;
private static final int DOM_KEY_LOCATION_MOBILE = 4;
private static final int DOM_KEY_LOCATION_JOYSTICK = 5;
public enum DomKeyLocation {
DOM_KEY_LOCATION_STANDARD(0),
DOM_KEY_LOCATION_LEFT(1),
DOM_KEY_LOCATION_RIGHT(2),
DOM_KEY_LOCATION_NUMPAD(3),
DOM_KEY_LOCATION_MOBILE(4),
DOM_KEY_LOCATION_JOYSTICK(5);
public static final int IME_SYNCHRONIZE = 0;
public static final int IME_REPLACE_TEXT = 1;
public static final int IME_SET_SELECTION = 2;
public static final int IME_ADD_COMPOSITION_RANGE = 3;
public static final int IME_UPDATE_COMPOSITION = 4;
public static final int IME_REMOVE_COMPOSITION = 5;
public static final int IME_ACKNOWLEDGE_FOCUS = 6;
public final int value;
private DomKeyLocation(int value) {
this.value = value;
}
}
// Encapsulation of common IME actions.
public enum ImeAction {
IME_SYNCHRONIZE(0),
IME_REPLACE_TEXT(1),
IME_SET_SELECTION(2),
IME_ADD_COMPOSITION_RANGE(3),
IME_UPDATE_COMPOSITION(4),
IME_REMOVE_COMPOSITION(5),
IME_ACKNOWLEDGE_FOCUS(6);
public final int value;
private ImeAction(int value) {
this.value = value;
}
}
public static final int IME_RANGE_CARETPOSITION = 1;
public static final int IME_RANGE_RAWINPUT = 2;
@ -139,7 +164,7 @@ public class GeckoEvent {
private int mRangeLineColor;
private Location mLocation;
private Address mAddress;
private int mDomKeyLocation;
private DomKeyLocation mDomKeyLocation;
private double mBandwidth;
private boolean mCanBeMetered;
@ -153,41 +178,41 @@ public class GeckoEvent {
private int mWidth;
private int mHeight;
private GeckoEvent(int evType) {
mType = evType;
private GeckoEvent(NativeGeckoEvent event) {
mType = event.value;
}
public static GeckoEvent createAppBackgroundingEvent() {
return new GeckoEvent(APP_BACKGROUNDING);
return new GeckoEvent(NativeGeckoEvent.APP_BACKGROUNDING);
}
public static GeckoEvent createAppForegroundingEvent() {
return new GeckoEvent(APP_FOREGROUNDING);
return new GeckoEvent(NativeGeckoEvent.APP_FOREGROUNDING);
}
public static GeckoEvent createNoOpEvent() {
return new GeckoEvent(NOOP);
return new GeckoEvent(NativeGeckoEvent.NOOP);
}
public static GeckoEvent createKeyEvent(KeyEvent k, int metaState) {
GeckoEvent event = new GeckoEvent(KEY_EVENT);
GeckoEvent event = new GeckoEvent(NativeGeckoEvent.KEY_EVENT);
event.initKeyEvent(k, metaState);
return event;
}
public static GeckoEvent createCompositorCreateEvent(int width, int height) {
GeckoEvent event = new GeckoEvent(COMPOSITOR_CREATE);
GeckoEvent event = new GeckoEvent(NativeGeckoEvent.COMPOSITOR_CREATE);
event.mWidth = width;
event.mHeight = height;
return event;
}
public static GeckoEvent createCompositorPauseEvent() {
return new GeckoEvent(COMPOSITOR_PAUSE);
return new GeckoEvent(NativeGeckoEvent.COMPOSITOR_PAUSE);
}
public static GeckoEvent createCompositorResumeEvent() {
return new GeckoEvent(COMPOSITOR_RESUME);
return new GeckoEvent(NativeGeckoEvent.COMPOSITOR_RESUME);
}
private void initKeyEvent(KeyEvent k, int metaState) {
@ -206,7 +231,8 @@ public class GeckoEvent {
mBaseUnicodeChar = k.getUnicodeChar(0);
mRepeatCount = k.getRepeatCount();
mCharacters = k.getCharacters();
mDomKeyLocation = isJoystickButton(mKeyCode) ? DOM_KEY_LOCATION_JOYSTICK : DOM_KEY_LOCATION_MOBILE;
mDomKeyLocation = isJoystickButton(mKeyCode) ? DomKeyLocation.DOM_KEY_LOCATION_JOYSTICK
: DomKeyLocation.DOM_KEY_LOCATION_MOBILE;
}
/**
@ -279,7 +305,7 @@ public class GeckoEvent {
public static GeckoEvent createNativeGestureEvent(int action, PointF pt, double size) {
try {
GeckoEvent event = new GeckoEvent(NATIVE_GESTURE_EVENT);
GeckoEvent event = new GeckoEvent(NativeGeckoEvent.NATIVE_GESTURE_EVENT);
event.mAction = action;
event.mCount = 1;
event.mPoints = new Point[1];
@ -304,7 +330,7 @@ public class GeckoEvent {
}
public static GeckoEvent createMotionEvent(MotionEvent m) {
GeckoEvent event = new GeckoEvent(MOTION_EVENT);
GeckoEvent event = new GeckoEvent(NativeGeckoEvent.MOTION_EVENT);
event.initMotionEvent(m);
return event;
}
@ -352,7 +378,7 @@ public class GeckoEvent {
try {
PointF geckoPoint = new PointF(event.getX(eventIndex), event.getY(eventIndex));
geckoPoint = GeckoApp.mAppContext.getLayerView().convertViewPointToLayerPoint(geckoPoint);
mPoints[index] = new Point(Math.round(geckoPoint.x), Math.round(geckoPoint.y));
mPointIndicies[index] = event.getPointerId(eventIndex);
// getToolMajor, getToolMinor and getOrientation are API Level 9 features
@ -363,7 +389,7 @@ public class GeckoEvent {
// this shifts it to -90, which will be shifted to zero below
if (mOrientations[index] == 90)
mOrientations[index] = -90;
// w3c touchevent radius are given by an orientation between 0 and 90
// the radius is found by removing the orientation and measuring the x and y
// radius of the resulting ellipse
@ -416,7 +442,7 @@ public class GeckoEvent {
switch(sensor_type) {
case Sensor.TYPE_ACCELEROMETER:
event = new GeckoEvent(SENSOR_EVENT);
event = new GeckoEvent(NativeGeckoEvent.SENSOR_EVENT);
event.mFlags = GeckoHalDefines.SENSOR_ACCELERATION;
event.mMetaState = HalSensorAccuracyFor(s.accuracy);
event.mX = s.values[0];
@ -425,7 +451,7 @@ public class GeckoEvent {
break;
case 10 /* Requires API Level 9, so just use the raw value - Sensor.TYPE_LINEAR_ACCELEROMETER*/ :
event = new GeckoEvent(SENSOR_EVENT);
event = new GeckoEvent(NativeGeckoEvent.SENSOR_EVENT);
event.mFlags = GeckoHalDefines.SENSOR_LINEAR_ACCELERATION;
event.mMetaState = HalSensorAccuracyFor(s.accuracy);
event.mX = s.values[0];
@ -434,7 +460,7 @@ public class GeckoEvent {
break;
case Sensor.TYPE_ORIENTATION:
event = new GeckoEvent(SENSOR_EVENT);
event = new GeckoEvent(NativeGeckoEvent.SENSOR_EVENT);
event.mFlags = GeckoHalDefines.SENSOR_ORIENTATION;
event.mMetaState = HalSensorAccuracyFor(s.accuracy);
event.mX = s.values[0];
@ -443,7 +469,7 @@ public class GeckoEvent {
break;
case Sensor.TYPE_GYROSCOPE:
event = new GeckoEvent(SENSOR_EVENT);
event = new GeckoEvent(NativeGeckoEvent.SENSOR_EVENT);
event.mFlags = GeckoHalDefines.SENSOR_GYROSCOPE;
event.mMetaState = HalSensorAccuracyFor(s.accuracy);
event.mX = Math.toDegrees(s.values[0]);
@ -452,7 +478,7 @@ public class GeckoEvent {
break;
case Sensor.TYPE_PROXIMITY:
event = new GeckoEvent(SENSOR_EVENT);
event = new GeckoEvent(NativeGeckoEvent.SENSOR_EVENT);
event.mFlags = GeckoHalDefines.SENSOR_PROXIMITY;
event.mMetaState = HalSensorAccuracyFor(s.accuracy);
event.mX = s.values[0];
@ -461,7 +487,7 @@ public class GeckoEvent {
break;
case Sensor.TYPE_LIGHT:
event = new GeckoEvent(SENSOR_EVENT);
event = new GeckoEvent(NativeGeckoEvent.SENSOR_EVENT);
event.mFlags = GeckoHalDefines.SENSOR_LIGHT;
event.mMetaState = HalSensorAccuracyFor(s.accuracy);
event.mX = s.values[0];
@ -471,27 +497,27 @@ public class GeckoEvent {
}
public static GeckoEvent createLocationEvent(Location l) {
GeckoEvent event = new GeckoEvent(LOCATION_EVENT);
GeckoEvent event = new GeckoEvent(NativeGeckoEvent.LOCATION_EVENT);
event.mLocation = l;
return event;
}
public static GeckoEvent createIMEEvent(int action) {
GeckoEvent event = new GeckoEvent(IME_EVENT);
event.mAction = action;
public static GeckoEvent createIMEEvent(ImeAction action) {
GeckoEvent event = new GeckoEvent(NativeGeckoEvent.IME_EVENT);
event.mAction = action.value;
return event;
}
public static GeckoEvent createIMEKeyEvent(KeyEvent k) {
GeckoEvent event = new GeckoEvent(IME_KEY_EVENT);
GeckoEvent event = new GeckoEvent(NativeGeckoEvent.IME_KEY_EVENT);
event.initKeyEvent(k, 0);
return event;
}
public static GeckoEvent createIMEReplaceEvent(int start, int end,
String text) {
GeckoEvent event = new GeckoEvent(IME_EVENT);
event.mAction = IME_REPLACE_TEXT;
GeckoEvent event = new GeckoEvent(NativeGeckoEvent.IME_EVENT);
event.mAction = ImeAction.IME_REPLACE_TEXT.value;
event.mStart = start;
event.mEnd = end;
event.mCharacters = text;
@ -499,16 +525,16 @@ public class GeckoEvent {
}
public static GeckoEvent createIMESelectEvent(int start, int end) {
GeckoEvent event = new GeckoEvent(IME_EVENT);
event.mAction = IME_SET_SELECTION;
GeckoEvent event = new GeckoEvent(NativeGeckoEvent.IME_EVENT);
event.mAction = ImeAction.IME_SET_SELECTION.value;
event.mStart = start;
event.mEnd = end;
return event;
}
public static GeckoEvent createIMECompositionEvent(int start, int end) {
GeckoEvent event = new GeckoEvent(IME_EVENT);
event.mAction = IME_UPDATE_COMPOSITION;
GeckoEvent event = new GeckoEvent(NativeGeckoEvent.IME_EVENT);
event.mAction = ImeAction.IME_UPDATE_COMPOSITION.value;
event.mStart = start;
event.mEnd = end;
return event;
@ -522,8 +548,8 @@ public class GeckoEvent {
int rangeForeColor,
int rangeBackColor,
int rangeLineColor) {
GeckoEvent event = new GeckoEvent(IME_EVENT);
event.mAction = IME_ADD_COMPOSITION_RANGE;
GeckoEvent event = new GeckoEvent(NativeGeckoEvent.IME_EVENT);
event.mAction = ImeAction.IME_ADD_COMPOSITION_RANGE.value;
event.mStart = start;
event.mEnd = end;
event.mRangeType = rangeType;
@ -537,13 +563,13 @@ public class GeckoEvent {
}
public static GeckoEvent createDrawEvent(Rect rect) {
GeckoEvent event = new GeckoEvent(DRAW);
GeckoEvent event = new GeckoEvent(NativeGeckoEvent.DRAW);
event.mRect = rect;
return event;
}
public static GeckoEvent createSizeChangedEvent(int w, int h, int screenw, int screenh) {
GeckoEvent event = new GeckoEvent(SIZE_CHANGED);
GeckoEvent event = new GeckoEvent(NativeGeckoEvent.SIZE_CHANGED);
event.mPoints = new Point[2];
event.mPoints[0] = new Point(w, h);
event.mPoints[1] = new Point(screenw, screenh);
@ -551,14 +577,14 @@ public class GeckoEvent {
}
public static GeckoEvent createBroadcastEvent(String subject, String data) {
GeckoEvent event = new GeckoEvent(BROADCAST);
GeckoEvent event = new GeckoEvent(NativeGeckoEvent.BROADCAST);
event.mCharacters = subject;
event.mCharactersExtra = data;
return event;
}
public static GeckoEvent createViewportEvent(ImmutableViewportMetrics metrics, DisplayPortMetrics displayPort) {
GeckoEvent event = new GeckoEvent(VIEWPORT);
GeckoEvent event = new GeckoEvent(NativeGeckoEvent.VIEWPORT);
event.mCharacters = "Viewport:Change";
StringBuffer sb = new StringBuffer(256);
sb.append("{ \"x\" : ").append(metrics.viewportRectLeft)
@ -575,41 +601,41 @@ public class GeckoEvent {
}
public static GeckoEvent createURILoadEvent(String uri) {
GeckoEvent event = new GeckoEvent(LOAD_URI);
GeckoEvent event = new GeckoEvent(NativeGeckoEvent.LOAD_URI);
event.mCharacters = uri;
event.mCharactersExtra = "";
return event;
}
public static GeckoEvent createWebappLoadEvent(String uri) {
GeckoEvent event = new GeckoEvent(LOAD_URI);
GeckoEvent event = new GeckoEvent(NativeGeckoEvent.LOAD_URI);
event.mCharacters = uri;
event.mCharactersExtra = "-webapp";
return event;
}
public static GeckoEvent createBookmarkLoadEvent(String uri) {
GeckoEvent event = new GeckoEvent(LOAD_URI);
GeckoEvent event = new GeckoEvent(NativeGeckoEvent.LOAD_URI);
event.mCharacters = uri;
event.mCharactersExtra = "-bookmark";
return event;
}
public static GeckoEvent createVisitedEvent(String data) {
GeckoEvent event = new GeckoEvent(VISITED);
GeckoEvent event = new GeckoEvent(NativeGeckoEvent.VISITED);
event.mCharacters = data;
return event;
}
public static GeckoEvent createNetworkEvent(double bandwidth, boolean canBeMetered) {
GeckoEvent event = new GeckoEvent(NETWORK_CHANGED);
GeckoEvent event = new GeckoEvent(NativeGeckoEvent.NETWORK_CHANGED);
event.mBandwidth = bandwidth;
event.mCanBeMetered = canBeMetered;
return event;
}
public static GeckoEvent createThumbnailEvent(int tabId, int bufw, int bufh, ByteBuffer buffer) {
GeckoEvent event = new GeckoEvent(THUMBNAIL);
GeckoEvent event = new GeckoEvent(NativeGeckoEvent.THUMBNAIL);
event.mPoints = new Point[1];
event.mPoints[0] = new Point(bufw, bufh);
event.mMetaState = tabId;
@ -618,7 +644,7 @@ public class GeckoEvent {
}
public static GeckoEvent createScreenOrientationEvent(short aScreenOrientation) {
GeckoEvent event = new GeckoEvent(SCREENORIENTATION_CHANGED);
GeckoEvent event = new GeckoEvent(NativeGeckoEvent.SCREENORIENTATION_CHANGED);
event.mScreenOrientation = aScreenOrientation;
return event;
}

View File

@ -225,7 +225,7 @@ AndroidGeckoEvent::InitGeckoEventClass(JNIEnv *jEnv)
jCharactersExtraField = getField("mCharactersExtra", "Ljava/lang/String;");
jKeyCodeField = getField("mKeyCode", "I");
jMetaStateField = getField("mMetaState", "I");
jDomKeyLocationField = getField("mDomKeyLocation", "I");
jDomKeyLocationField = getField("mDomKeyLocation", "Lorg/mozilla/gecko/GeckoEvent$DomKeyLocation;");
jFlagsField = getField("mFlags", "I");
jUnicodeCharField = getField("mUnicodeChar", "I");
jBaseUnicodeCharField = getField("mBaseUnicodeChar", "I");