@@ -91,6 +91,7 @@ public class Session implements ContentBlocking.Delegate, GeckoSession.Navigatio
91
91
private transient byte [] mPrivatePage ;
92
92
private transient boolean mFirstContentfulPaint ;
93
93
private transient long mKeepAlive ;
94
+ private transient boolean mSessionRemoved ;
94
95
95
96
public interface BitmapChangedListener {
96
97
void onBitmapChanged (Session aSession , Bitmap aBitmap );
@@ -159,9 +160,6 @@ private void initialize() {
159
160
protected void shutdown () {
160
161
if (mState .mSession != null ) {
161
162
closeSession (mState );
162
- mSessionChangeListeners .forEach (listener -> {
163
- listener .onSessionRemoved (mState .mId );
164
- });
165
163
mState .mSession = null ;
166
164
}
167
165
@@ -172,6 +170,13 @@ protected void shutdown() {
172
170
}
173
171
}
174
172
173
+ if (!mSessionRemoved ) {
174
+ mSessionChangeListeners .forEach (listener -> {
175
+ listener .onSessionRemoved (mState .mId );
176
+ });
177
+ mSessionRemoved = true ;
178
+ }
179
+
175
180
mQueuedCalls .clear ();
176
181
mNavigationListeners .clear ();
177
182
mProgressListeners .clear ();
@@ -467,8 +472,9 @@ private void restore() {
467
472
468
473
// We call restore when a session is first activated and when it's recreated.
469
474
// We only need to notify of the session creation if it's not a recreation.
470
- if (mState . mSessionState == null ) {
475
+ if (mSessionRemoved ) {
471
476
mSessionChangeListeners .forEach (listener -> listener .onSessionAdded (this ));
477
+ mSessionRemoved = false ;
472
478
}
473
479
474
480
openSession ();
0 commit comments