mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-26 14:22:01 +00:00
Back out 5a56a56a6481:a5969a01955b (bug 834414) to investigate whether it caused reftest-4 failures
CLOSED TREE
This commit is contained in:
parent
ab97cf0e00
commit
ecc6770ff4
@ -232,8 +232,6 @@ abstract public class BrowserApp extends GeckoApp
|
|||||||
super.onDestroy();
|
super.onDestroy();
|
||||||
if (mAboutHomeContent != null)
|
if (mAboutHomeContent != null)
|
||||||
mAboutHomeContent.onDestroy();
|
mAboutHomeContent.onDestroy();
|
||||||
if (mBrowserToolbar != null)
|
|
||||||
mBrowserToolbar.onDestroy();
|
|
||||||
|
|
||||||
unregisterEventListener("CharEncoding:Data");
|
unregisterEventListener("CharEncoding:Data");
|
||||||
unregisterEventListener("CharEncoding:State");
|
unregisterEventListener("CharEncoding:State");
|
||||||
|
@ -1161,8 +1161,10 @@ public class BrowserToolbar implements ViewSwitcher.ViewFactory,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onDestroy() {
|
public void destroy() {
|
||||||
Tabs.unregisterOnTabsChangedListener(this);
|
// The action-items views are reused on rotation.
|
||||||
|
// Remove them from their parent, so they can be re-attached to new parent.
|
||||||
|
mActionItemBar.removeAllViews();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean openOptionsMenu() {
|
public boolean openOptionsMenu() {
|
||||||
|
@ -1569,8 +1569,6 @@ abstract public class GeckoApp
|
|||||||
LayerView layerView = (LayerView) findViewById(R.id.layer_view);
|
LayerView layerView = (LayerView) findViewById(R.id.layer_view);
|
||||||
layerView.initializeView(GeckoAppShell.getEventDispatcher());
|
layerView.initializeView(GeckoAppShell.getEventDispatcher());
|
||||||
mLayerView = layerView;
|
mLayerView = layerView;
|
||||||
// bind the GeckoEditable instance to the new LayerView
|
|
||||||
GeckoAppShell.notifyIMEEnabled(GeckoEditableListener.IME_STATE_DISABLED, "", "", "", false);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2282,7 +2280,6 @@ abstract public class GeckoApp
|
|||||||
mPromptService.destroy();
|
mPromptService.destroy();
|
||||||
if (mTextSelection != null)
|
if (mTextSelection != null)
|
||||||
mTextSelection.destroy();
|
mTextSelection.destroy();
|
||||||
SiteIdentityPopup.clearInstance();
|
|
||||||
|
|
||||||
Tabs.getInstance().detachFromActivity(this);
|
Tabs.getInstance().detachFromActivity(this);
|
||||||
|
|
||||||
|
@ -533,6 +533,8 @@ public class GeckoAppShell
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void runGecko(String apkPath, String args, String url, String type) {
|
public static void runGecko(String apkPath, String args, String url, String type) {
|
||||||
|
WebAppAllocator.getInstance();
|
||||||
|
|
||||||
Looper.prepare();
|
Looper.prepare();
|
||||||
sGeckoHandler = new Handler();
|
sGeckoHandler = new Handler();
|
||||||
|
|
||||||
|
@ -20,7 +20,6 @@ import android.text.TextPaint;
|
|||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.text.style.CharacterStyle;
|
import android.text.style.CharacterStyle;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.View;
|
|
||||||
|
|
||||||
import java.lang.reflect.InvocationHandler;
|
import java.lang.reflect.InvocationHandler;
|
||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
@ -78,10 +77,9 @@ final class GeckoEditable
|
|||||||
private final SpannableStringBuilder mText;
|
private final SpannableStringBuilder mText;
|
||||||
private final SpannableStringBuilder mChangedText;
|
private final SpannableStringBuilder mChangedText;
|
||||||
private final Editable mProxy;
|
private final Editable mProxy;
|
||||||
|
private final GeckoEditableListener mListener;
|
||||||
private final ActionQueue mActionQueue;
|
private final ActionQueue mActionQueue;
|
||||||
|
|
||||||
private View mCurrentView;
|
|
||||||
private GeckoEditableListener mListener;
|
|
||||||
private int mSavedSelectionStart;
|
private int mSavedSelectionStart;
|
||||||
private volatile int mGeckoUpdateSeqno;
|
private volatile int mGeckoUpdateSeqno;
|
||||||
private int mUIUpdateSeqno;
|
private int mUIUpdateSeqno;
|
||||||
@ -258,8 +256,8 @@ final class GeckoEditable
|
|||||||
Editable.class.getClassLoader(),
|
Editable.class.getClassLoader(),
|
||||||
PROXY_INTERFACES, this);
|
PROXY_INTERFACES, this);
|
||||||
|
|
||||||
mCurrentView = GeckoApp.mAppContext.getLayerView();
|
LayerView v = GeckoApp.mAppContext.getLayerView();
|
||||||
mListener = GeckoInputConnection.create(mCurrentView, this);
|
mListener = GeckoInputConnection.create(v, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void geckoPostToUI(Runnable runnable) {
|
private static void geckoPostToUI(Runnable runnable) {
|
||||||
@ -547,8 +545,10 @@ final class GeckoEditable
|
|||||||
@Override
|
@Override
|
||||||
public void notifyIMEEnabled(final int state, final String typeHint,
|
public void notifyIMEEnabled(final int state, final String typeHint,
|
||||||
final String modeHint, final String actionHint) {
|
final String modeHint, final String actionHint) {
|
||||||
// Because we want to be able to bind GeckoEditable to the newest LayerView instance,
|
if (DEBUG) {
|
||||||
// this can be called from the Java UI thread in addition to the Gecko thread.
|
// GeckoEditableListener methods should all be called from the Gecko thread
|
||||||
|
GeckoApp.assertOnGeckoThread();
|
||||||
|
}
|
||||||
geckoPostToUI(new Runnable() {
|
geckoPostToUI(new Runnable() {
|
||||||
public void run() {
|
public void run() {
|
||||||
// Make sure there are no other things going on
|
// Make sure there are no other things going on
|
||||||
@ -558,13 +558,10 @@ final class GeckoEditable
|
|||||||
// InputConnectionHandler.onCreateInputConnection
|
// InputConnectionHandler.onCreateInputConnection
|
||||||
LayerView v = GeckoApp.mAppContext.getLayerView();
|
LayerView v = GeckoApp.mAppContext.getLayerView();
|
||||||
if (v != null) {
|
if (v != null) {
|
||||||
if (v != mCurrentView) {
|
|
||||||
mCurrentView = v;
|
|
||||||
mListener = GeckoInputConnection.create(v, GeckoEditable.this);
|
|
||||||
v.setInputConnectionHandler((InputConnectionHandler)mListener);
|
v.setInputConnectionHandler((InputConnectionHandler)mListener);
|
||||||
}
|
}
|
||||||
mListener.notifyIMEEnabled(state, typeHint, modeHint, actionHint);
|
mListener.notifyIMEEnabled(state, typeHint,
|
||||||
}
|
modeHint, actionHint);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -31,7 +31,7 @@ public class GeckoThread extends Thread implements GeckoEventListener {
|
|||||||
|
|
||||||
private static LaunchState sLaunchState = LaunchState.Launching;
|
private static LaunchState sLaunchState = LaunchState.Launching;
|
||||||
|
|
||||||
private Intent mIntent;
|
private final Intent mIntent;
|
||||||
private final String mUri;
|
private final String mUri;
|
||||||
|
|
||||||
GeckoThread(Intent intent, String uri) {
|
GeckoThread(Intent intent, String uri) {
|
||||||
@ -41,44 +41,8 @@ public class GeckoThread extends Thread implements GeckoEventListener {
|
|||||||
GeckoAppShell.getEventDispatcher().registerEventListener("Gecko:Ready", this);
|
GeckoAppShell.getEventDispatcher().registerEventListener("Gecko:Ready", this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private String initGeckoEnvironment() {
|
|
||||||
// At some point while loading the gecko libs our default locale gets set
|
|
||||||
// so just save it to locale here and reset it as default after the join
|
|
||||||
Locale locale = Locale.getDefault();
|
|
||||||
|
|
||||||
GeckoApp app = GeckoApp.mAppContext;
|
|
||||||
String resourcePath = app.getApplication().getPackageResourcePath();
|
|
||||||
GeckoAppShell.setupGeckoEnvironment(app);
|
|
||||||
GeckoAppShell.loadSQLiteLibs(app, resourcePath);
|
|
||||||
GeckoAppShell.loadNSSLibs(app, resourcePath);
|
|
||||||
GeckoAppShell.loadGeckoLibs(resourcePath);
|
|
||||||
|
|
||||||
Locale.setDefault(locale);
|
|
||||||
|
|
||||||
Resources res = app.getBaseContext().getResources();
|
|
||||||
Configuration config = res.getConfiguration();
|
|
||||||
config.locale = locale;
|
|
||||||
res.updateConfiguration(config, res.getDisplayMetrics());
|
|
||||||
|
|
||||||
return resourcePath;
|
|
||||||
}
|
|
||||||
|
|
||||||
private String getTypeFromAction(String action) {
|
|
||||||
if (action != null && action.startsWith(GeckoApp.ACTION_WEBAPP_PREFIX)) {
|
|
||||||
return "-webapp";
|
|
||||||
}
|
|
||||||
if (GeckoApp.ACTION_BOOKMARK.equals(action)) {
|
|
||||||
return "-bookmark";
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private String addCustomProfileArg(String args) {
|
|
||||||
String profile = GeckoApp.sIsUsingCustomProfile ? "" : (" -P " + GeckoApp.mAppContext.getProfile().getName());
|
|
||||||
return (args != null ? args : "") + profile;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void run() {
|
public void run() {
|
||||||
|
|
||||||
// Here we start the GfxInfo thread, which will query OpenGL
|
// Here we start the GfxInfo thread, which will query OpenGL
|
||||||
// system information for Gecko. This must be done early enough that the data will be
|
// system information for Gecko. This must be done early enough that the data will be
|
||||||
// ready by the time it's needed to initialize the LayerManager (it takes about 100 ms
|
// ready by the time it's needed to initialize the LayerManager (it takes about 100 ms
|
||||||
@ -88,17 +52,46 @@ public class GeckoThread extends Thread implements GeckoEventListener {
|
|||||||
GeckoAppShell.sGfxInfoThread = new GfxInfoThread();
|
GeckoAppShell.sGfxInfoThread = new GfxInfoThread();
|
||||||
GeckoAppShell.sGfxInfoThread.start();
|
GeckoAppShell.sGfxInfoThread.start();
|
||||||
|
|
||||||
String path = initGeckoEnvironment();
|
final GeckoApp app = GeckoApp.mAppContext;
|
||||||
|
|
||||||
|
// At some point while loading the gecko libs our default locale gets set
|
||||||
|
// so just save it to locale here and reset it as default after the join
|
||||||
|
Locale locale = Locale.getDefault();
|
||||||
|
|
||||||
|
String resourcePath = app.getApplication().getPackageResourcePath();
|
||||||
|
GeckoAppShell.setupGeckoEnvironment(app);
|
||||||
|
GeckoAppShell.loadSQLiteLibs(app, resourcePath);
|
||||||
|
GeckoAppShell.loadNSSLibs(app, resourcePath);
|
||||||
|
GeckoAppShell.loadGeckoLibs(resourcePath);
|
||||||
|
|
||||||
|
Locale.setDefault(locale);
|
||||||
|
Resources res = app.getBaseContext().getResources();
|
||||||
|
Configuration config = res.getConfiguration();
|
||||||
|
config.locale = locale;
|
||||||
|
res.updateConfiguration(config, res.getDisplayMetrics());
|
||||||
|
|
||||||
Log.w(LOGTAG, "zerdatime " + SystemClock.uptimeMillis() + " - runGecko");
|
Log.w(LOGTAG, "zerdatime " + SystemClock.uptimeMillis() + " - runGecko");
|
||||||
|
|
||||||
String args = addCustomProfileArg(mIntent.getStringExtra("args"));
|
// find the right intent type
|
||||||
String type = getTypeFromAction(mIntent.getAction());
|
final String action = mIntent.getAction();
|
||||||
mIntent = null;
|
String type = null;
|
||||||
|
|
||||||
|
if (action != null && action.startsWith(GeckoApp.ACTION_WEBAPP_PREFIX))
|
||||||
|
type = "-webapp";
|
||||||
|
else if (GeckoApp.ACTION_BOOKMARK.equals(action))
|
||||||
|
type = "-bookmark";
|
||||||
|
|
||||||
|
String args = mIntent.getStringExtra("args");
|
||||||
|
|
||||||
|
String profile = GeckoApp.sIsUsingCustomProfile ? "" : (" -P " + app.getProfile().getName());
|
||||||
|
args = (args != null ? args : "") + profile;
|
||||||
|
|
||||||
// and then fire us up
|
// and then fire us up
|
||||||
Log.i(LOGTAG, "RunGecko - args = " + args);
|
Log.i(LOGTAG, "RunGecko - args = " + args);
|
||||||
GeckoAppShell.runGecko(path, args, mUri, type);
|
GeckoAppShell.runGecko(app.getApplication().getPackageResourcePath(),
|
||||||
|
args,
|
||||||
|
mUri,
|
||||||
|
type);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void handleMessage(String event, JSONObject message) {
|
public void handleMessage(String event, JSONObject message) {
|
||||||
|
@ -29,8 +29,6 @@ public class SiteIdentityPopup extends PopupWindow {
|
|||||||
public static final String VERIFIED = "verified";
|
public static final String VERIFIED = "verified";
|
||||||
public static final String IDENTIFIED = "identified";
|
public static final String IDENTIFIED = "identified";
|
||||||
|
|
||||||
private static SiteIdentityPopup sInstance;
|
|
||||||
|
|
||||||
private Resources mResources;
|
private Resources mResources;
|
||||||
private boolean mInflated;
|
private boolean mInflated;
|
||||||
|
|
||||||
@ -50,15 +48,12 @@ public class SiteIdentityPopup extends PopupWindow {
|
|||||||
mInflated = false;
|
mInflated = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static synchronized SiteIdentityPopup getInstance() {
|
private static class InstanceHolder {
|
||||||
if (sInstance == null) {
|
private static final SiteIdentityPopup INSTANCE = new SiteIdentityPopup();
|
||||||
sInstance = new SiteIdentityPopup();
|
|
||||||
}
|
|
||||||
return sInstance;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static synchronized void clearInstance() {
|
public static SiteIdentityPopup getInstance() {
|
||||||
sInstance = null;
|
return SiteIdentityPopup.InstanceHolder.INSTANCE;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void init() {
|
private void init() {
|
||||||
|
@ -12,6 +12,7 @@ import org.json.JSONException;
|
|||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
|
||||||
import android.content.ContentResolver;
|
import android.content.ContentResolver;
|
||||||
|
import android.database.ContentObserver;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
import android.graphics.drawable.BitmapDrawable;
|
import android.graphics.drawable.BitmapDrawable;
|
||||||
@ -53,6 +54,8 @@ public class Tab {
|
|||||||
private ZoomConstraints mZoomConstraints;
|
private ZoomConstraints mZoomConstraints;
|
||||||
private ArrayList<View> mPluginViews;
|
private ArrayList<View> mPluginViews;
|
||||||
private HashMap<Object, Layer> mPluginLayers;
|
private HashMap<Object, Layer> mPluginLayers;
|
||||||
|
private ContentResolver mContentResolver;
|
||||||
|
private ContentObserver mContentObserver;
|
||||||
private int mBackgroundColor = Color.WHITE;
|
private int mBackgroundColor = Color.WHITE;
|
||||||
private int mState;
|
private int mState;
|
||||||
private Bitmap mThumbnailBitmap;
|
private Bitmap mThumbnailBitmap;
|
||||||
@ -89,13 +92,17 @@ public class Tab {
|
|||||||
mPluginViews = new ArrayList<View>();
|
mPluginViews = new ArrayList<View>();
|
||||||
mPluginLayers = new HashMap<Object, Layer>();
|
mPluginLayers = new HashMap<Object, Layer>();
|
||||||
mState = GeckoApp.shouldShowProgress(url) ? STATE_SUCCESS : STATE_LOADING;
|
mState = GeckoApp.shouldShowProgress(url) ? STATE_SUCCESS : STATE_LOADING;
|
||||||
|
mContentResolver = Tabs.getInstance().getContentResolver();
|
||||||
|
mContentObserver = new ContentObserver(null) {
|
||||||
|
public void onChange(boolean selfChange) {
|
||||||
|
updateBookmark();
|
||||||
}
|
}
|
||||||
|
};
|
||||||
private ContentResolver getContentResolver() {
|
BrowserDB.registerBookmarkObserver(mContentResolver, mContentObserver);
|
||||||
return Tabs.getInstance().getContentResolver();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onDestroy() {
|
public void onDestroy() {
|
||||||
|
BrowserDB.unregisterContentObserver(mContentResolver, mContentObserver);
|
||||||
Tabs.getInstance().notifyListeners(this, Tabs.TabEvents.CLOSED);
|
Tabs.getInstance().notifyListeners(this, Tabs.TabEvents.CLOSED);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -339,7 +346,7 @@ public class Tab {
|
|||||||
Tabs.getInstance().notifyListeners(this, Tabs.TabEvents.MENU_UPDATED);
|
Tabs.getInstance().notifyListeners(this, Tabs.TabEvents.MENU_UPDATED);
|
||||||
}
|
}
|
||||||
|
|
||||||
void updateBookmark() {
|
private void updateBookmark() {
|
||||||
GeckoAppShell.getHandler().post(new Runnable() {
|
GeckoAppShell.getHandler().post(new Runnable() {
|
||||||
public void run() {
|
public void run() {
|
||||||
final String url = getURL();
|
final String url = getURL();
|
||||||
@ -347,8 +354,8 @@ public class Tab {
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
if (url.equals(getURL())) {
|
if (url.equals(getURL())) {
|
||||||
mBookmark = BrowserDB.isBookmark(getContentResolver(), url);
|
mBookmark = BrowserDB.isBookmark(mContentResolver, url);
|
||||||
mReadingListItem = BrowserDB.isReadingListItem(getContentResolver(), url);
|
mReadingListItem = BrowserDB.isReadingListItem(mContentResolver, url);
|
||||||
}
|
}
|
||||||
|
|
||||||
Tabs.getInstance().notifyListeners(Tab.this, Tabs.TabEvents.MENU_UPDATED);
|
Tabs.getInstance().notifyListeners(Tab.this, Tabs.TabEvents.MENU_UPDATED);
|
||||||
@ -363,7 +370,7 @@ public class Tab {
|
|||||||
if (url == null)
|
if (url == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
BrowserDB.addBookmark(getContentResolver(), mTitle, url);
|
BrowserDB.addBookmark(mContentResolver, mTitle, url);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -375,7 +382,7 @@ public class Tab {
|
|||||||
if (url == null)
|
if (url == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
BrowserDB.removeBookmarksWithURL(getContentResolver(), url);
|
BrowserDB.removeBookmarksWithURL(mContentResolver, url);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -509,7 +516,7 @@ public class Tab {
|
|||||||
if (url == null)
|
if (url == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
BrowserDB.updateThumbnailForUrl(getContentResolver(), url, mThumbnail);
|
BrowserDB.updateThumbnailForUrl(mContentResolver, url, mThumbnail);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
// ignore
|
// ignore
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,6 @@ import android.accounts.AccountManager;
|
|||||||
import android.accounts.OnAccountsUpdateListener;
|
import android.accounts.OnAccountsUpdateListener;
|
||||||
import android.content.ContentResolver;
|
import android.content.ContentResolver;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.database.ContentObserver;
|
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
@ -56,7 +55,6 @@ public class Tabs implements GeckoEventListener {
|
|||||||
private static AtomicInteger sTabId = new AtomicInteger(0);
|
private static AtomicInteger sTabId = new AtomicInteger(0);
|
||||||
|
|
||||||
private GeckoApp mActivity;
|
private GeckoApp mActivity;
|
||||||
private ContentObserver mContentObserver;
|
|
||||||
|
|
||||||
private Tabs() {
|
private Tabs() {
|
||||||
registerEventListener("SessionHistory:New");
|
registerEventListener("SessionHistory:New");
|
||||||
@ -84,9 +82,6 @@ public class Tabs implements GeckoEventListener {
|
|||||||
persistAllTabs();
|
persistAllTabs();
|
||||||
}
|
}
|
||||||
}, GeckoAppShell.getHandler(), false);
|
}, GeckoAppShell.getHandler(), false);
|
||||||
if (mContentObserver != null) {
|
|
||||||
BrowserDB.registerBookmarkObserver(getContentResolver(), mContentObserver);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void detachFromActivity(GeckoApp activity) {
|
public void detachFromActivity(GeckoApp activity) {
|
||||||
@ -94,31 +89,13 @@ public class Tabs implements GeckoEventListener {
|
|||||||
mAccountManager.removeOnAccountsUpdatedListener(mAccountListener);
|
mAccountManager.removeOnAccountsUpdatedListener(mAccountListener);
|
||||||
mAccountListener = null;
|
mAccountListener = null;
|
||||||
}
|
}
|
||||||
if (mContentObserver != null) {
|
|
||||||
BrowserDB.unregisterContentObserver(getContentResolver(), mContentObserver);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getCount() {
|
public int getCount() {
|
||||||
return mTabs.size();
|
return mTabs.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void lazyRegisterBookmarkObserver() {
|
|
||||||
if (mContentObserver == null) {
|
|
||||||
mContentObserver = new ContentObserver(null) {
|
|
||||||
public void onChange(boolean selfChange) {
|
|
||||||
for (Tab tab : mTabs.values()) {
|
|
||||||
tab.updateBookmark();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
BrowserDB.registerBookmarkObserver(getContentResolver(), mContentObserver);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private Tab addTab(int id, String url, boolean external, int parentId, String title, boolean isPrivate) {
|
private Tab addTab(int id, String url, boolean external, int parentId, String title, boolean isPrivate) {
|
||||||
lazyRegisterBookmarkObserver();
|
|
||||||
|
|
||||||
final Tab tab = isPrivate ? new PrivateTab(id, url, external, parentId, title) :
|
final Tab tab = isPrivate ? new PrivateTab(id, url, external, parentId, title) :
|
||||||
new Tab(id, url, external, parentId, title);
|
new Tab(id, url, external, parentId, title);
|
||||||
mTabs.put(id, tab);
|
mTabs.put(id, tab);
|
||||||
|
@ -183,7 +183,6 @@ public class LayerRenderer implements Tabs.OnTabsChangedListener {
|
|||||||
if (mFrameRateLayer != null) {
|
if (mFrameRateLayer != null) {
|
||||||
mFrameRateLayer.destroy();
|
mFrameRateLayer.destroy();
|
||||||
}
|
}
|
||||||
Tabs.unregisterOnTabsChangedListener(this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void onSurfaceCreated(EGLConfig config) {
|
void onSurfaceCreated(EGLConfig config) {
|
||||||
|
@ -123,9 +123,6 @@ public class LayerView extends FrameLayout {
|
|||||||
if (mRenderer != null) {
|
if (mRenderer != null) {
|
||||||
mRenderer.destroy();
|
mRenderer.destroy();
|
||||||
}
|
}
|
||||||
if (mTouchEventHandler != null) {
|
|
||||||
mTouchEventHandler.destroy();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -141,10 +141,6 @@ public final class TouchEventHandler implements Tabs.OnTabsChangedListener {
|
|||||||
Tabs.registerOnTabsChangedListener(this);
|
Tabs.registerOnTabsChangedListener(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void destroy() {
|
|
||||||
Tabs.unregisterOnTabsChangedListener(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* This function MUST be called on the UI thread */
|
/* This function MUST be called on the UI thread */
|
||||||
public boolean handleEvent(MotionEvent event) {
|
public boolean handleEvent(MotionEvent event) {
|
||||||
// if we don't have gecko listeners, just dispatch the event
|
// if we don't have gecko listeners, just dispatch the event
|
||||||
|
Loading…
Reference in New Issue
Block a user