bug 725538 - make creating GeckoEvents sane r=kats

This commit is contained in:
Brad Lassey 2012-02-08 23:18:27 -08:00
parent a1197823fc
commit f3003384c6
17 changed files with 210 additions and 184 deletions

View File

@ -84,7 +84,7 @@ public class AutoCompletePopup extends ListView {
setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parentView, View view, int position, long id) {
String value = ((TextView) view).getText().toString();
GeckoAppShell.sendEventToGecko(new GeckoEvent("FormAssist:AutoComplete", value));
GeckoAppShell.sendEventToGecko(GeckoEvent.createBroadcastEvent("FormAssist:AutoComplete", value));
hide();
}
});
@ -182,7 +182,7 @@ public class AutoCompletePopup extends ListView {
public void hide() {
if (isShown()) {
setVisibility(View.GONE);
GeckoAppShell.sendEventToGecko(new GeckoEvent("FormAssist:Closed", null));
GeckoAppShell.sendEventToGecko(GeckoEvent.createBroadcastEvent("FormAssist:Closed", null));
}
}
}

View File

@ -228,7 +228,7 @@ public class AwesomeBar extends Activity implements GeckoEventListener {
registerForContextMenu(mAwesomeTabs.findViewById(R.id.history_list));
GeckoAppShell.registerGeckoEventListener("SearchEngines:Data", this);
GeckoAppShell.sendEventToGecko(new GeckoEvent("SearchEngines:Get", null));
GeckoAppShell.sendEventToGecko(GeckoEvent.createBroadcastEvent("SearchEngines:Get", null));
}
public void handleMessage(String event, JSONObject message) {

View File

@ -72,7 +72,7 @@ class ConfirmPreference extends DialogPreference {
} else if ("clear_private_data".equalsIgnoreCase(mAction)) {
GeckoAppShell.getHandler().post(new Runnable(){
public void run() {
GeckoAppShell.sendEventToGecko(new GeckoEvent("Sanitize:ClearAll", null));
GeckoAppShell.sendEventToGecko(GeckoEvent.createBroadcastEvent("Sanitize:ClearAll", null));
}
});
}

View File

@ -95,7 +95,7 @@ public class DoorHanger extends LinearLayout implements Button.OnClickListener {
}
public void onClick(View v) {
GeckoEvent e = new GeckoEvent("Doorhanger:Reply", v.getTag().toString());
GeckoEvent e = GeckoEvent.createBroadcastEvent("Doorhanger:Reply", v.getTag().toString());
GeckoAppShell.sendEventToGecko(e);
mTab.removeDoorHanger(mValue);

View File

@ -165,7 +165,7 @@ abstract public class GeckoApp
int id;
public boolean onMenuItemClick(MenuItem item) {
Log.i(LOGTAG, "menu item clicked");
GeckoAppShell.sendEventToGecko(new GeckoEvent("Menu:Clicked", Integer.toString(id)));
GeckoAppShell.sendEventToGecko(GeckoEvent.createBroadcastEvent("Menu:Clicked", Integer.toString(id)));
return true;
}
}
@ -483,7 +483,7 @@ abstract public class GeckoApp
synchronized(sLaunchState) {
if (sLaunchState == LaunchState.GeckoRunning)
GeckoAppShell.notifyGeckoOfEvent(
new GeckoEvent("Browser:Quit", null));
GeckoEvent.createBroadcastEvent("Browser:Quit", null));
else
System.exit(0);
sLaunchState = LaunchState.GeckoExiting;
@ -517,14 +517,14 @@ abstract public class GeckoApp
doForward();
return true;
case R.id.save_as_pdf:
GeckoAppShell.sendEventToGecko(new GeckoEvent("SaveAs:PDF", null));
GeckoAppShell.sendEventToGecko(GeckoEvent.createBroadcastEvent("SaveAs:PDF", null));
return true;
case R.id.settings:
intent = new Intent(this, GeckoPreferences.class);
startActivity(intent);
return true;
case R.id.site_settings:
GeckoAppShell.sendEventToGecko(new GeckoEvent("Permissions:Get", null));
GeckoAppShell.sendEventToGecko(GeckoEvent.createBroadcastEvent("Permissions:Get", null));
return true;
case R.id.addons:
loadUrlInTab("about:addons");
@ -534,7 +534,7 @@ abstract public class GeckoApp
startActivity(intent);
return true;
case R.id.char_encoding:
GeckoAppShell.sendEventToGecko(new GeckoEvent("CharEncoding:Get", null));
GeckoAppShell.sendEventToGecko(GeckoEvent.createBroadcastEvent("CharEncoding:Get", null));
return true;
default:
return super.onOptionsItemSelected(item);
@ -627,7 +627,7 @@ abstract public class GeckoApp
message.put("destination", destination);
String json = message.toString();
GeckoAppShell.sendEventToGecko(new GeckoEvent("Tab:Screenshot", json));
GeckoAppShell.sendEventToGecko(GeckoEvent.createBroadcastEvent("Tab:Screenshot", json));
} catch(JSONException jsonEx) {
Log.w(LOGTAG, "Constructing the JSON data for Tab:Screenshot event failed", jsonEx);
}
@ -1060,7 +1060,7 @@ abstract public class GeckoApp
public void onClick(DialogInterface dialog, int which) {
try {
JSONObject charset = charsets.getJSONObject(which);
GeckoAppShell.sendEventToGecko(new GeckoEvent("CharEncoding:Set", charset.getString("code")));
GeckoAppShell.sendEventToGecko(GeckoEvent.createBroadcastEvent("CharEncoding:Set", charset.getString("code")));
dialog.dismiss();
} catch (JSONException e) {
Log.e(LOGTAG, "error parsing json", e);
@ -1197,7 +1197,7 @@ abstract public class GeckoApp
if (checked)
permissionsToClear.put(i);
}
GeckoAppShell.sendEventToGecko(new GeckoEvent("Permissions:Clear", permissionsToClear.toString()));
GeckoAppShell.sendEventToGecko(GeckoEvent.createBroadcastEvent("Permissions:Clear", permissionsToClear.toString()));
}
});
}
@ -2002,7 +2002,7 @@ abstract public class GeckoApp
if (Intent.ACTION_MAIN.equals(action)) {
Log.i(LOGTAG, "Intent : ACTION_MAIN");
GeckoAppShell.sendEventToGecko(new GeckoEvent(""));
GeckoAppShell.sendEventToGecko(GeckoEvent.createLoadEvent(""));
}
else if (ACTION_LOAD.equals(action)) {
String uri = intent.getDataString();
@ -2011,17 +2011,17 @@ abstract public class GeckoApp
}
else if (Intent.ACTION_VIEW.equals(action)) {
String uri = intent.getDataString();
GeckoAppShell.sendEventToGecko(new GeckoEvent(uri));
GeckoAppShell.sendEventToGecko(GeckoEvent.createLoadEvent(uri));
Log.i(LOGTAG,"onNewIntent: " + uri);
}
else if (ACTION_WEBAPP.equals(action)) {
String uri = getURIFromIntent(intent);
GeckoAppShell.sendEventToGecko(new GeckoEvent(uri));
GeckoAppShell.sendEventToGecko(GeckoEvent.createLoadEvent(uri));
Log.i(LOGTAG,"Intent : WEBAPP - " + uri);
}
else if (ACTION_BOOKMARK.equals(action)) {
String uri = getURIFromIntent(intent);
GeckoAppShell.sendEventToGecko(new GeckoEvent(uri));
GeckoAppShell.sendEventToGecko(GeckoEvent.createLoadEvent(uri));
Log.i(LOGTAG,"Intent : BOOKMARK - " + uri);
}
}
@ -2053,7 +2053,7 @@ abstract public class GeckoApp
Runnable r = new SessionSnapshotRunnable(null);
GeckoAppShell.getHandler().post(r);
GeckoAppShell.sendEventToGecko(new GeckoEvent(GeckoEvent.ACTIVITY_PAUSING));
GeckoAppShell.sendEventToGecko(GeckoEvent.createPauseEvent());
// The user is navigating away from this activity, but nothing
// has come to the foreground yet; for Gecko, we may want to
// stop repainting, for example.
@ -2111,7 +2111,7 @@ abstract public class GeckoApp
// etc., and generally mark the profile as 'clean', and then
// dirty it again if we get an onResume.
GeckoAppShell.sendEventToGecko(new GeckoEvent(GeckoEvent.ACTIVITY_STOPPING));
GeckoAppShell.sendEventToGecko(GeckoEvent.createStoppingEvent());
super.onStop();
}
@ -2128,7 +2128,7 @@ abstract public class GeckoApp
Log.w(LOGTAG, "zerdatime " + SystemClock.uptimeMillis() + " - onStart");
Log.i(LOGTAG, "start");
GeckoAppShell.sendEventToGecko(new GeckoEvent(GeckoEvent.ACTIVITY_START));
GeckoAppShell.sendEventToGecko(GeckoEvent.createStartEvent());
super.onStart();
}
@ -2140,7 +2140,7 @@ abstract public class GeckoApp
// Tell Gecko to shutting down; we'll end up calling System.exit()
// in onXreExit.
if (isFinishing())
GeckoAppShell.sendEventToGecko(new GeckoEvent(GeckoEvent.ACTIVITY_SHUTDOWN));
GeckoAppShell.sendEventToGecko(GeckoEvent.createShutdownEvent());
GeckoAppShell.unregisterGeckoEventListener("DOMContentLoaded", GeckoApp.mAppContext);
GeckoAppShell.unregisterGeckoEventListener("DOMTitleChanged", GeckoApp.mAppContext);
@ -2432,7 +2432,7 @@ abstract public class GeckoApp
}
if (mDOMFullScreen) {
GeckoAppShell.sendEventToGecko(new GeckoEvent("FullScreen:Exit", null));
GeckoAppShell.sendEventToGecko(GeckoEvent.createBroadcastEvent("FullScreen:Exit", null));
return;
}
@ -2537,7 +2537,7 @@ abstract public class GeckoApp
Log.i(LOGTAG, "Returning from CAMERA_CAPTURE_REQUEST: " + resultCode);
File file = new File(Environment.getExternalStorageDirectory(), "cameraCapture-" + Integer.toString(kCaptureIndex) + ".jpg");
kCaptureIndex++;
GeckoEvent e = new GeckoEvent("cameraCaptureDone", resultCode == Activity.RESULT_OK ?
GeckoEvent e = GeckoEvent.createBroadcastEvent("cameraCaptureDone", resultCode == Activity.RESULT_OK ?
"{\"ok\": true, \"path\": \"" + file.getPath() + "\" }" :
"{\"ok\": false, \"path\": \"" + file.getPath() + "\" }");
GeckoAppShell.sendEventToGecko(e);
@ -2568,9 +2568,9 @@ abstract public class GeckoApp
}
if (type == AwesomeBar.Type.ADD) {
Log.i(LOGTAG, "Sending message to Gecko: " + SystemClock.uptimeMillis() + " - Tab:Add");
GeckoAppShell.sendEventToGecko(new GeckoEvent("Tab:Add", args.toString()));
GeckoAppShell.sendEventToGecko(GeckoEvent.createBroadcastEvent("Tab:Add", args.toString()));
} else {
GeckoAppShell.sendEventToGecko(new GeckoEvent("Tab:Load", args.toString()));
GeckoAppShell.sendEventToGecko(GeckoEvent.createBroadcastEvent("Tab:Load", args.toString()));
}
}
@ -2605,7 +2605,7 @@ abstract public class GeckoApp
Log.e(LOGTAG, "error building JSON arguments");
}
Log.i(LOGTAG, "Sending message to Gecko: " + SystemClock.uptimeMillis() + " - Tab:Add");
GeckoAppShell.sendEventToGecko(new GeckoEvent("Tab:Add", args.toString()));
GeckoAppShell.sendEventToGecko(GeckoEvent.createBroadcastEvent("Tab:Add", args.toString()));
}
public GeckoSoftwareLayerClient getSoftwareLayerClient() { return mSoftwareLayerClient; }
@ -2619,7 +2619,7 @@ abstract public class GeckoApp
public void onSensorChanged(SensorEvent event)
{
Log.w(LOGTAG, "onSensorChanged "+event);
GeckoAppShell.sendEventToGecko(new GeckoEvent(event));
GeckoAppShell.sendEventToGecko(GeckoEvent.createSensorEvent(event));
}
private class GeocoderRunnable implements Runnable {
@ -2635,7 +2635,7 @@ abstract public class GeckoApp
// may want to expose multiple, or filter
// for best.
mLastGeoAddress = addresses.get(0);
GeckoAppShell.sendEventToGecko(new GeckoEvent(mLocation, mLastGeoAddress));
GeckoAppShell.sendEventToGecko(GeckoEvent.createLocationEvent(mLocation, mLastGeoAddress));
} catch (Exception e) {
Log.w(LOGTAG, "GeocoderTask "+e);
}
@ -2666,7 +2666,7 @@ abstract public class GeckoApp
GeckoAppShell.getHandler().post(new GeocoderRunnable(location));
}
GeckoAppShell.sendEventToGecko(new GeckoEvent(location, mLastGeoAddress));
GeckoAppShell.sendEventToGecko(GeckoEvent.createLocationEvent(location, mLastGeoAddress));
}
public void onProviderDisabled(String provider)

View File

@ -146,7 +146,7 @@ public class GeckoAppShell
private static native void reportJavaCrash(String stackTrace);
public static void notifyUriVisited(String uri) {
sendEventToGecko(new GeckoEvent(GeckoEvent.VISITED, uri));
sendEventToGecko(GeckoEvent.createVisitedEvent(uri));
}
public static native void processNextNativeEvent();
@ -506,7 +506,7 @@ public class GeckoAppShell
public boolean onTouch(View view, MotionEvent event) {
if (event == null)
return true;
GeckoAppShell.sendEventToGecko(new GeckoEvent(event));
GeckoAppShell.sendEventToGecko(GeckoEvent.createMotionEvent(event));
return true;
}
});
@ -574,8 +574,7 @@ public class GeckoAppShell
// Block the current thread until the Gecko event loop is caught up
synchronized public static void geckoEventSync() {
sGeckoPendingAcks = new CountDownLatch(1);
GeckoAppShell.sendEventToGecko(
new GeckoEvent(GeckoEvent.GECKO_EVENT_SYNC));
GeckoAppShell.sendEventToGecko(GeckoEvent.createSyncEvent());
while (sGeckoPendingAcks.getCount() != 0) {
try {
sGeckoPendingAcks.await();
@ -1863,7 +1862,7 @@ public class GeckoAppShell
public static void viewSizeChanged() {
if (mInputConnection != null && mInputConnection.isIMEEnabled()) {
sendEventToGecko(new GeckoEvent("ScrollTo:FocusedInput", ""));
sendEventToGecko(GeckoEvent.createBroadcastEvent("ScrollTo:FocusedInput", ""));
}
}

View File

@ -64,29 +64,29 @@ import android.util.Log;
public class GeckoEvent {
private static final String LOGTAG = "GeckoEvent";
public static final int INVALID = -1;
public static final int NATIVE_POKE = 0;
public static final int KEY_EVENT = 1;
public static final int MOTION_EVENT = 2;
public static final int ORIENTATION_EVENT = 3;
public static final int ACCELERATION_EVENT = 4;
public static final int LOCATION_EVENT = 5;
public static final int IME_EVENT = 6;
public static final int DRAW = 7;
public static final int SIZE_CHANGED = 8;
public static final int ACTIVITY_STOPPING = 9;
public static final int ACTIVITY_PAUSING = 10;
public static final int ACTIVITY_SHUTDOWN = 11;
public static final int LOAD_URI = 12;
public static final int SURFACE_CREATED = 13;
public static final int SURFACE_DESTROYED = 14;
public static final int GECKO_EVENT_SYNC = 15;
public static final int ACTIVITY_START = 17;
public static final int BROADCAST = 19;
public static final int VIEWPORT = 20;
public static final int VISITED = 21;
public static final int NETWORK_CHANGED = 22;
public static final int PROXIMITY_EVENT = 23;
private static final int INVALID = -1;
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 ORIENTATION_EVENT = 3;
private static final int ACCELERATION_EVENT = 4;
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 ACTIVITY_STOPPING = 9;
private static final int ACTIVITY_PAUSING = 10;
private static final int ACTIVITY_SHUTDOWN = 11;
private static final int LOAD_URI = 12;
private static final int SURFACE_CREATED = 13;
private static final int SURFACE_DESTROYED = 14;
private static final int GECKO_EVENT_SYNC = 15;
private static final int ACTIVITY_START = 17;
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 PROXIMITY_EVENT = 23;
public static final int IME_COMPOSITION_END = 0;
public static final int IME_COMPOSITION_BEGIN = 1;
@ -107,7 +107,7 @@ public class GeckoEvent {
public static final int IME_RANGE_FORECOLOR = 2;
public static final int IME_RANGE_BACKCOLOR = 4;
public int mType;
final public int mType;
public int mAction;
public long mTime;
public Point[] mPoints;
@ -135,16 +135,37 @@ public class GeckoEvent {
public int mNativeWindow;
public GeckoEvent() {
mType = NATIVE_POKE;
}
public GeckoEvent(int evType) {
private GeckoEvent(int evType) {
mType = evType;
}
public GeckoEvent(KeyEvent k) {
mType = KEY_EVENT;
public static GeckoEvent createPauseEvent() {
return new GeckoEvent(ACTIVITY_PAUSING);
}
public static GeckoEvent createStoppingEvent() {
return new GeckoEvent(ACTIVITY_STOPPING);
}
public static GeckoEvent createStartEvent() {
return new GeckoEvent(ACTIVITY_START);
}
public static GeckoEvent createShutdownEvent() {
return new GeckoEvent(ACTIVITY_SHUTDOWN);
}
public static GeckoEvent createSyncEvent() {
return new GeckoEvent(GECKO_EVENT_SYNC);
}
public static GeckoEvent createKeyEvent(KeyEvent k) {
GeckoEvent event = new GeckoEvent(KEY_EVENT);
event.initKeyEvent(k);
return event;
}
private void initKeyEvent(KeyEvent k) {
mAction = k.getAction();
mTime = k.getEventTime();
mMetaState = k.getMetaState();
@ -154,8 +175,13 @@ public class GeckoEvent {
mCharacters = k.getCharacters();
}
public GeckoEvent(MotionEvent m) {
mType = MOTION_EVENT;
public static GeckoEvent createMotionEvent(MotionEvent m) {
GeckoEvent event = new GeckoEvent(MOTION_EVENT);
event.initMotionEvent(m);
return event;
}
private void initMotionEvent(MotionEvent m) {
mAction = m.getAction();
mTime = (System.currentTimeMillis() - SystemClock.elapsedRealtime()) + m.getEventTime();
mMetaState = m.getMetaState();
@ -238,51 +264,51 @@ public class GeckoEvent {
}
}
public GeckoEvent(SensorEvent s) {
public static GeckoEvent createSensorEvent(SensorEvent s) {
GeckoEvent event = null;
int sensor_type = s.sensor.getType();
switch(sensor_type) {
case Sensor.TYPE_ACCELEROMETER:
mType = ACCELERATION_EVENT;
mX = s.values[0];
mY = s.values[1];
mZ = s.values[2];
event = new GeckoEvent(ACCELERATION_EVENT);
event.mX = s.values[0];
event.mY = s.values[1];
event.mZ = s.values[2];
break;
case Sensor.TYPE_ORIENTATION:
mType = ORIENTATION_EVENT;
mAlpha = -s.values[0];
mBeta = -s.values[1];
mGamma = -s.values[2];
Log.i(LOGTAG, "SensorEvent type = " + s.sensor.getType() + " " + s.sensor.getName() + " " + mAlpha + " " + mBeta + " " + mGamma );
event = new GeckoEvent(ORIENTATION_EVENT);
event.mAlpha = -s.values[0];
event.mBeta = -s.values[1];
event.mGamma = -s.values[2];
break;
case Sensor.TYPE_PROXIMITY:
mType = PROXIMITY_EVENT;
mDistance = s.values[0];
Log.i("GeckoEvent", "SensorEvent type = " + s.sensor.getType() +
" " + s.sensor.getName() + " " + mDistance);
event = new GeckoEvent(PROXIMITY_EVENT);
event.mDistance = s.values[0];
break;
}
return event;
}
public GeckoEvent(Location l, Address a) {
mType = LOCATION_EVENT;
mLocation = l;
mAddress = a;
public static GeckoEvent createLocationEvent(Location l, Address a) {
GeckoEvent event = new GeckoEvent(LOCATION_EVENT);
event.mLocation = l;
event.mAddress = a;
return event;
}
public GeckoEvent(int imeAction, int offset, int count) {
mType = IME_EVENT;
mAction = imeAction;
mOffset = offset;
mCount = count;
public static GeckoEvent createIMEEvent(int imeAction, int offset, int count) {
GeckoEvent event = new GeckoEvent(IME_EVENT);
event.mAction = imeAction;
event.mOffset = offset;
event.mCount = count;
return event;
}
private void InitIMERange(int action, int offset, int count,
int rangeType, int rangeStyles,
int rangeForeColor, int rangeBackColor) {
mType = IME_EVENT;
mAction = action;
mOffset = offset;
mCount = count;
@ -293,70 +319,71 @@ public class GeckoEvent {
return;
}
public GeckoEvent(int offset, int count,
int rangeType, int rangeStyles,
int rangeForeColor, int rangeBackColor, String text) {
InitIMERange(IME_SET_TEXT, offset, count, rangeType, rangeStyles,
rangeForeColor, rangeBackColor);
mCharacters = text;
public static GeckoEvent createIMERangeEvent(int offset, int count,
int rangeType, int rangeStyles,
int rangeForeColor, int rangeBackColor,
String text) {
GeckoEvent event = new GeckoEvent(IME_EVENT);
event.InitIMERange(IME_SET_TEXT, offset, count, rangeType, rangeStyles,
rangeForeColor, rangeBackColor);
event.mCharacters = text;
return event;
}
public GeckoEvent(int offset, int count,
int rangeType, int rangeStyles,
int rangeForeColor, int rangeBackColor) {
InitIMERange(IME_ADD_RANGE, offset, count, rangeType, rangeStyles,
rangeForeColor, rangeBackColor);
public static GeckoEvent createIMERangeEvent(int offset, int count,
int rangeType, int rangeStyles,
int rangeForeColor, int rangeBackColor) {
GeckoEvent event = new GeckoEvent(IME_EVENT);
event.InitIMERange(IME_SET_TEXT, offset, count, rangeType, rangeStyles,
rangeForeColor, rangeBackColor);
return event;
}
public GeckoEvent(int etype, Rect rect) {
if (etype != DRAW) {
mType = INVALID;
return;
}
mType = etype;
mRect = rect;
public static GeckoEvent createDrawEvent(Rect rect) {
GeckoEvent event = new GeckoEvent(DRAW);
event.mRect = rect;
return event;
}
public GeckoEvent(int etype, int w, int h, int screenw, int screenh, int tilew, int tileh) {
if (etype != SIZE_CHANGED) {
mType = INVALID;
return;
}
mType = etype;
mPoints = new Point[3];
mPoints[0] = new Point(w, h);
mPoints[1] = new Point(screenw, screenh);
mPoints[2] = new Point(tilew, tileh);
public static GeckoEvent createSizeChangedEvent(int w, int h, int screenw, int screenh, int tilew, int tileh) {
GeckoEvent event = new GeckoEvent(SIZE_CHANGED);
event.mPoints = new Point[3];
event.mPoints[0] = new Point(w, h);
event.mPoints[1] = new Point(screenw, screenh);
event.mPoints[2] = new Point(tilew, tileh);
return event;
}
public GeckoEvent(String subject, String data) {
mType = BROADCAST;
mCharacters = subject;
mCharactersExtra = data;
public static GeckoEvent createBroadcastEvent(String subject, String data) {
GeckoEvent event = new GeckoEvent(BROADCAST);
event.mCharacters = subject;
event.mCharactersExtra = data;
return event;
}
public GeckoEvent(ViewportMetrics viewport) {
mType = VIEWPORT;
mCharacters = "Viewport:Change";
mCharactersExtra = viewport.toJSON();
public static GeckoEvent createViewportEvent(ViewportMetrics viewport) {
GeckoEvent event = new GeckoEvent(VIEWPORT);
event.mCharacters = "Viewport:Change";
event.mCharactersExtra = viewport.toJSON();
return event;
}
public GeckoEvent(String uri) {
mType = LOAD_URI;
mCharacters = uri;
public static GeckoEvent createLoadEvent(String uri) {
GeckoEvent event = new GeckoEvent(LOAD_URI);
event.mCharacters = uri;
return event;
}
public GeckoEvent(int type, String data) {
mType = type;
mCharacters = data;
public static GeckoEvent createVisitedEvent(String data) {
GeckoEvent event = new GeckoEvent(VISITED);
event.mCharacters = data;
return event;
}
public GeckoEvent(double bandwidth, boolean canBeMetered) {
mType = NETWORK_CHANGED;
mBandwidth = bandwidth;
mCanBeMetered = canBeMetered;
public static GeckoEvent createNetworkEvent(double bandwidth, boolean canBeMetered) {
GeckoEvent event = new GeckoEvent(NETWORK_CHANGED);
event.mBandwidth = bandwidth;
event.mCanBeMetered = canBeMetered;
return event;
}
}

View File

@ -159,9 +159,9 @@ public class GeckoInputConnection
// If selection is empty, we'll select everything
if (a >= b)
GeckoAppShell.sendEventToGecko(
new GeckoEvent(GeckoEvent.IME_SET_SELECTION, 0, text.length()));
GeckoEvent.createIMEEvent(GeckoEvent.IME_SET_SELECTION, 0, text.length()));
GeckoAppShell.sendEventToGecko(
new GeckoEvent(GeckoEvent.IME_DELETE_TEXT, 0, 0));
GeckoEvent.createIMEEvent(GeckoEvent.IME_DELETE_TEXT, 0, 0));
break;
case R.id.paste:
commitText(GeckoAppShell.getClipboardText(), 1);
@ -222,7 +222,7 @@ public class GeckoInputConnection
@Override
public boolean setSelection(int start, int end) {
GeckoAppShell.sendEventToGecko(
new GeckoEvent(GeckoEvent.IME_SET_SELECTION, start, end - start));
GeckoEvent.createIMEEvent(GeckoEvent.IME_SET_SELECTION, start, end - start));
return super.setSelection(start, end);
}
@ -459,26 +459,26 @@ public class GeckoInputConnection
if (!mComposing) {
if (DEBUG) Log.d(LOGTAG, ". . . onTextChanged: IME_COMPOSITION_BEGIN");
GeckoAppShell.sendEventToGecko(
new GeckoEvent(GeckoEvent.IME_COMPOSITION_BEGIN, 0, 0));
GeckoEvent.createIMEEvent(GeckoEvent.IME_COMPOSITION_BEGIN, 0, 0));
mComposing = true;
mCompositionStart = start;
if (DEBUG) Log.d(LOGTAG, ". . . onTextChanged: IME_SET_SELECTION, start=" + start + ", len=" + before);
GeckoAppShell.sendEventToGecko(
new GeckoEvent(GeckoEvent.IME_SET_SELECTION, start, before));
GeckoEvent.createIMEEvent(GeckoEvent.IME_SET_SELECTION, start, before));
}
if (count == 0) {
if (DEBUG) Log.d(LOGTAG, ". . . onTextChanged: IME_DELETE_TEXT");
GeckoAppShell.sendEventToGecko(
new GeckoEvent(GeckoEvent.IME_DELETE_TEXT, 0, 0));
GeckoEvent.createIMEEvent(GeckoEvent.IME_DELETE_TEXT, 0, 0));
} else {
sendTextToGecko(s.subSequence(start, start + count), start + count);
}
if (DEBUG) Log.d(LOGTAG, ". . . onTextChanged: IME_SET_SELECTION, start=" + (start + count) + ", 0");
GeckoAppShell.sendEventToGecko(
new GeckoEvent(GeckoEvent.IME_SET_SELECTION, start + count, 0));
GeckoEvent.createIMEEvent(GeckoEvent.IME_SET_SELECTION, start + count, 0));
// Block this thread until all pending events are processed
GeckoAppShell.geckoEventSync();
@ -487,7 +487,7 @@ public class GeckoInputConnection
private void endComposition() {
if (DEBUG) Log.d(LOGTAG, "IME: endComposition: IME_COMPOSITION_END");
GeckoAppShell.sendEventToGecko(
new GeckoEvent(GeckoEvent.IME_COMPOSITION_END, 0, 0));
GeckoEvent.createIMEEvent(GeckoEvent.IME_COMPOSITION_END, 0, 0));
mComposing = false;
mCompositionStart = -1;
}
@ -541,9 +541,9 @@ public class GeckoInputConnection
if (DEBUG) Log.d(LOGTAG, String.format(". . . sendTextToGecko: IME_ADD_RANGE, %d, %d, %d, %d, %d, %d",
spanStart, spanEnd - spanStart, rangeType, rangeStyles, rangeForeColor, rangeBackColor));
GeckoAppShell.sendEventToGecko(
new GeckoEvent(spanStart, spanEnd - spanStart,
rangeType, rangeStyles,
rangeForeColor, rangeBackColor));
GeckoEvent.createIMERangeEvent(spanStart, spanEnd - spanStart,
rangeType, rangeStyles,
rangeForeColor, rangeBackColor));
spanStart = spanEnd;
} while (spanStart < text.length());
@ -551,17 +551,17 @@ public class GeckoInputConnection
if (DEBUG) Log.d(LOGTAG, ". . . sendTextToGecko: IME_ADD_RANGE, 0, " + text.length() +
", IME_RANGE_RAWINPUT, IME_RANGE_UNDERLINE)");
GeckoAppShell.sendEventToGecko(
new GeckoEvent(0, text == null ? 0 : text.length(),
GeckoEvent.IME_RANGE_RAWINPUT,
GeckoEvent.IME_RANGE_UNDERLINE, 0, 0));
GeckoEvent.createIMERangeEvent(0, text == null ? 0 : text.length(),
GeckoEvent.IME_RANGE_RAWINPUT,
GeckoEvent.IME_RANGE_UNDERLINE, 0, 0));
}
// Change composition (treating selection end as where the caret is)
if (DEBUG) Log.d(LOGTAG, ". . . sendTextToGecko: IME_SET_TEXT, IME_RANGE_CARETPOSITION, \"" + text + "\")");
GeckoAppShell.sendEventToGecko(
new GeckoEvent(caretPos, 0,
GeckoEvent.IME_RANGE_CARETPOSITION, 0, 0, 0,
text.toString()));
GeckoEvent.createIMERangeEvent(caretPos, 0,
GeckoEvent.IME_RANGE_CARETPOSITION, 0, 0, 0,
text.toString()));
}
public void afterTextChanged(Editable s)
@ -683,9 +683,9 @@ public class GeckoInputConnection
int a = Selection.getSelectionStart(content);
int b = Selection.getSelectionEnd(content);
GeckoAppShell.sendEventToGecko(
new GeckoEvent(GeckoEvent.IME_SET_SELECTION, a, b - a));
GeckoEvent.createIMEEvent(GeckoEvent.IME_SET_SELECTION, a, b - a));
GeckoAppShell.sendEventToGecko(new GeckoEvent(event));
GeckoAppShell.sendEventToGecko(GeckoEvent.createKeyEvent(event));
}
return true;
}
@ -718,12 +718,12 @@ public class GeckoInputConnection
keyCode == KeyEvent.KEYCODE_DEL ||
(event.getFlags() & KeyEvent.FLAG_SOFT_KEYBOARD) != 0 ||
!mKeyListener.onKeyUp(v, mEditable, keyCode, event))
GeckoAppShell.sendEventToGecko(new GeckoEvent(event));
GeckoAppShell.sendEventToGecko(GeckoEvent.createKeyEvent(event));
return true;
}
public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event) {
GeckoAppShell.sendEventToGecko(new GeckoEvent(event));
GeckoAppShell.sendEventToGecko(GeckoEvent.createKeyEvent(event));
return true;
}

View File

@ -186,8 +186,9 @@ public class GeckoNetworkManager
return;
}
GeckoAppShell.sendEventToGecko(new GeckoEvent(getNetworkSpeed(mNetworkType),
isNetworkUsuallyMetered(mNetworkType)));
GeckoAppShell.sendEventToGecko(GeckoEvent.createNetworkEvent(
getNetworkSpeed(mNetworkType),
isNetworkUsuallyMetered(mNetworkType)));
}
public double[] getCurrentInformation() {

View File

@ -107,7 +107,7 @@ public class GeckoPreferences
private void initValues() {
JSONArray jsonPrefs = new JSONArray(mPreferencesList);
GeckoEvent event = new GeckoEvent("Preferences:Get", jsonPrefs.toString());
GeckoEvent event = GeckoEvent.createBroadcastEvent("Preferences:Get", jsonPrefs.toString());
GeckoAppShell.sendEventToGecko(event);
}
@ -226,7 +226,7 @@ public class GeckoPreferences
jsonPref.put("type", "string");
jsonPref.put("value", input1.getText().toString());
GeckoEvent event = new GeckoEvent("Preferences:Set", jsonPref.toString());
GeckoEvent event = GeckoEvent.createBroadcastEvent("Preferences:Set", jsonPref.toString());
GeckoAppShell.sendEventToGecko(event);
} catch(Exception ex) {
Log.e(LOGTAG, "Error setting masterpassword", ex);
@ -267,7 +267,7 @@ public class GeckoPreferences
jsonPref.put("type", "string");
jsonPref.put("value", input.getText().toString());
GeckoEvent event = new GeckoEvent("Preferences:Set", jsonPref.toString());
GeckoEvent event = GeckoEvent.createBroadcastEvent("Preferences:Set", jsonPref.toString());
GeckoAppShell.sendEventToGecko(event);
} catch(Exception ex) {
Log.e(LOGTAG, "Error setting masterpassword", ex);
@ -366,7 +366,7 @@ public class GeckoPreferences
jsonPref.put("value", String.valueOf(value));
}
GeckoEvent event = new GeckoEvent("Preferences:Set", jsonPref.toString());
GeckoEvent event = GeckoEvent.createBroadcastEvent("Preferences:Set", jsonPref.toString());
GeckoAppShell.sendEventToGecko(event);
} catch (JSONException e) {
Log.e(LOGTAG, "JSON exception: ", e);

View File

@ -376,7 +376,7 @@ public final class Tab {
public boolean doReload() {
if (mHistory.isEmpty())
return false;
GeckoEvent e = new GeckoEvent("Session:Reload", "");
GeckoEvent e = GeckoEvent.createBroadcastEvent("Session:Reload", "");
GeckoAppShell.sendEventToGecko(e);
return true;
}
@ -385,13 +385,13 @@ public final class Tab {
if (mHistoryIndex < 1) {
return false;
}
GeckoEvent e = new GeckoEvent("Session:Back", "");
GeckoEvent e = GeckoEvent.createBroadcastEvent("Session:Back", "");
GeckoAppShell.sendEventToGecko(e);
return true;
}
public boolean doStop() {
GeckoEvent e = new GeckoEvent("Session:Stop", "");
GeckoEvent e = GeckoEvent.createBroadcastEvent("Session:Stop", "");
GeckoAppShell.sendEventToGecko(e);
return true;
}
@ -404,7 +404,7 @@ public final class Tab {
if (mHistoryIndex + 1 >= mHistory.size()) {
return false;
}
GeckoEvent e = new GeckoEvent("Session:Forward", "");
GeckoEvent e = GeckoEvent.createBroadcastEvent("Session:Forward", "");
GeckoAppShell.sendEventToGecko(e);
return true;
}

View File

@ -145,7 +145,7 @@ public class Tabs implements GeckoEventListener {
});
// Pass a message to Gecko to update tab state in BrowserApp
GeckoAppShell.sendEventToGecko(new GeckoEvent("Tab:Selected", String.valueOf(tab.getId())));
GeckoAppShell.sendEventToGecko(GeckoEvent.createBroadcastEvent("Tab:Selected", String.valueOf(tab.getId())));
return selectedTab = tab;
}
@ -208,7 +208,7 @@ public class Tabs implements GeckoEventListener {
});
// Pass a message to Gecko to update tab state in BrowserApp
GeckoAppShell.sendEventToGecko(new GeckoEvent("Tab:Closed", String.valueOf(tabId)));
GeckoAppShell.sendEventToGecko(GeckoEvent.createBroadcastEvent("Tab:Closed", String.valueOf(tabId)));
}
/** Return the tab that will be selected by default after this one is closed */

View File

@ -167,7 +167,7 @@ public class TabsTray extends Activity implements GeckoApp.OnTabsChangedListener
void finishActivity() {
finish();
overridePendingTransition(0, R.anim.shrink_fade_out);
GeckoAppShell.sendEventToGecko(new GeckoEvent("Tab:Screenshot:Cancel",""));
GeckoAppShell.sendEventToGecko(GeckoEvent.createBroadcastEvent("Tab:Screenshot:Cancel",""));
}
// Tabs List Container holds the ListView and the New Tab button

View File

@ -124,7 +124,7 @@ public class PasswordsProvider extends ContentProvider {
if (dbNeedsSetup) {
Log.i(LOGTAG, "Sending init to gecko");
mBridge = null;
GeckoAppShell.sendEventToGecko(new GeckoEvent("Passwords:Init", databasePath));
GeckoAppShell.sendEventToGecko(GeckoEvent.createBroadcastEvent("Passwords:Init", databasePath));
}
} catch(SQLiteBridgeException ex) {
Log.e(LOGTAG, "Error getting database", ex);

View File

@ -467,10 +467,9 @@ public class GeckoSoftwareLayerClient extends LayerClient implements GeckoEventL
}
Log.i(LOGTAG, "Screen-size changed to " + mScreenSize);
GeckoEvent event = new GeckoEvent(GeckoEvent.SIZE_CHANGED,
bufferSize.width, bufferSize.height,
metrics.widthPixels, metrics.heightPixels,
tileSize.width, tileSize.height);
GeckoEvent event = GeckoEvent.createSizeChangedEvent(
bufferSize.width, bufferSize.height, metrics.widthPixels,
metrics.heightPixels, tileSize.width, tileSize.height);
GeckoAppShell.sendEventToGecko(event);
}
@ -515,7 +514,7 @@ public class GeckoSoftwareLayerClient extends LayerClient implements GeckoEventL
viewportMetrics.setViewportOffset(viewportOffset);
viewportMetrics.setViewport(viewportMetrics.getClampedViewport());
GeckoAppShell.sendEventToGecko(new GeckoEvent(viewportMetrics));
GeckoAppShell.sendEventToGecko(GeckoEvent.createViewportEvent(viewportMetrics));
if (mViewportSizeChanged) {
mViewportSizeChanged = false;
GeckoAppShell.viewSizeChanged();
@ -530,7 +529,7 @@ public class GeckoSoftwareLayerClient extends LayerClient implements GeckoEventL
// Redraw everything.
Rect rect = new Rect(0, 0, mBufferSize.width, mBufferSize.height);
GeckoAppShell.sendEventToGecko(new GeckoEvent(GeckoEvent.DRAW, rect));
GeckoAppShell.sendEventToGecko(GeckoEvent.createDrawEvent(rect));
} else if ("Viewport:UpdateLater".equals(event)) {
mUpdateViewportOnEndDraw = true;
} else if ("Checkerboard:Toggle".equals(event)) {

View File

@ -836,7 +836,7 @@ public class PanZoomController
return;
}
GeckoAppShell.sendEventToGecko(new GeckoEvent(event, json));
GeckoAppShell.sendEventToGecko(GeckoEvent.createBroadcastEvent(event, json));
}
@Override
@ -864,7 +864,7 @@ public class PanZoomController
}
public void cancelTouch() {
GeckoEvent e = new GeckoEvent("Gesture:CancelTouch", "");
GeckoEvent e = GeckoEvent.createBroadcastEvent("Gesture:CancelTouch", "");
GeckoAppShell.sendEventToGecko(e);
}

View File

@ -92,7 +92,7 @@ class SubdocumentScrollHelper implements GeckoEventListener {
} catch (JSONException e) {
Log.e(LOGTAG, "Error forming subwindow scroll message: ", e);
}
GeckoAppShell.sendEventToGecko(new GeckoEvent(MESSAGE_SCROLL, json.toString()));
GeckoAppShell.sendEventToGecko(GeckoEvent.createBroadcastEvent(MESSAGE_SCROLL, json.toString()));
return true;
}