Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit aec80385 authored by Daichi Hirono's avatar Daichi Hirono Committed by android-build-merger
Browse files

Merge "Terminate DocumentsUI opened for the specific root." into nyc-dev

am: e597323

* commit 'e597323939c85f1e7e32272250b790e4d9e234e6':
  Terminate DocumentsUI opened for the specific root.

Change-Id: I21768a2d7e2a6b23a803af0d136b83a2b1f9b865
parents 9fdcae4f db18d95f
Loading
Loading
Loading
Loading
+21 −13
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.ProviderInfo;
import android.database.ContentObserver;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
@@ -46,7 +47,6 @@ import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.WindowManager;
import android.widget.Spinner;

import com.android.documentsui.SearchViewManager.SearchManagerListener;
@@ -78,6 +78,12 @@ public abstract class BaseActivity extends Activity
    List<EventListener> mEventListeners = new ArrayList<>();

    private final String mTag;
    private final ContentObserver mRootsCacheObserver = new ContentObserver(new Handler()) {
        @Override
        public void onChange(boolean selfChange) {
            new HandleRootsChangedTask(BaseActivity.this).execute(getCurrentRoot());
        }
    };

    @LayoutRes
    private int mLayoutId;
@@ -118,14 +124,8 @@ public abstract class BaseActivity extends Activity

        mRoots = DocumentsApplication.getRootsCache(this);

        mRoots.setOnCacheUpdateListener(
                new RootsCache.OnCacheUpdateListener() {
                    @Override
                    public void onCacheUpdate() {
                        new HandleRootsChangedTask(BaseActivity.this)
                                .execute(getCurrentRoot());
                    }
                });
        getContentResolver().registerContentObserver(
                RootsCache.sNotificationUri, false, mRootsCacheObserver);

        mSearchManager = new SearchViewManager(this, icicle);

@@ -190,7 +190,7 @@ public abstract class BaseActivity extends Activity

    @Override
    protected void onDestroy() {
        mRoots.setOnCacheUpdateListener(null);
        getContentResolver().unregisterContentObserver(mRootsCacheObserver);
        super.onDestroy();
    }

@@ -793,6 +793,7 @@ public abstract class BaseActivity extends Activity

    private static final class HandleRootsChangedTask
            extends PairedTask<BaseActivity, RootInfo, RootInfo> {
        RootInfo mCurrentRoot;
        DocumentInfo mDefaultRootDocument;

        public HandleRootsChangedTask(BaseActivity activity) {
@@ -802,11 +803,10 @@ public abstract class BaseActivity extends Activity
        @Override
        protected RootInfo run(RootInfo... roots) {
            assert(roots.length == 1);

            final RootInfo currentRoot = roots[0];
            mCurrentRoot = roots[0];
            final Collection<RootInfo> cachedRoots = mOwner.mRoots.getRootsBlocking();
            for (final RootInfo root : cachedRoots) {
                if (root.getUri().equals(currentRoot.getUri())) {
                if (root.getUri().equals(mCurrentRoot.getUri())) {
                    // We don't need to change the current root as the current root was not removed.
                    return null;
                }
@@ -827,6 +827,14 @@ public abstract class BaseActivity extends Activity
                return;
            }

            // If the activity has been launched for the specific root and it is removed, finish the
            // activity.
            final Uri uri = mOwner.getIntent().getData();
            if (uri != null && uri.equals(mCurrentRoot.getUri())) {
                mOwner.finish();
                return;
            }

            // Clear entire backstack and start in new root.
            mOwner.mState.onRootChanged(defaultRoot);
            mOwner.mSearchManager.update(defaultRoot);
+0 −16
Original line number Diff line number Diff line
@@ -67,7 +67,6 @@ public class RootsCache {

    private final Context mContext;
    private final ContentObserver mObserver;
    private OnCacheUpdateListener mCacheUpdateListener;

    private final RootInfo mRecentsRoot;

@@ -119,10 +118,6 @@ public class RootsCache {
        }
    }

    static interface OnCacheUpdateListener {
        void onCacheUpdate();
    }

    /**
     * Gather roots from all known storage providers.
     */
@@ -280,13 +275,6 @@ public class RootsCache {
            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            if (mCacheUpdateListener != null) {
                mCacheUpdateListener.onCacheUpdate();
            }
        }

        private void handleDocumentsProvider(ProviderInfo info) {
            // Ignore stopped packages for now; we might query them
            // later during UI interaction.
@@ -445,10 +433,6 @@ public class RootsCache {
        }
    }

    public void setOnCacheUpdateListener(OnCacheUpdateListener cacheUpdateListener) {
        mCacheUpdateListener = cacheUpdateListener;
    }

    /**
     * Returns the default root for the specified state.
     */