Commit e498edb0 authored by Michael Thiessen's avatar Michael Thiessen Committed by Commit Bot

Revert "Save WebappActivity tab state to bundle, remove old stale file deletion"

This reverts commit 1c0ecd5d.

Reason for revert: Increases crash rate due to large bundles.

Original change's description:
> Save WebappActivity tab state to bundle, remove old stale file deletion
>
> Simplifies tab restore by copying from NoTouchActivity, which has the
> same persistence model (currently) as WebappActivity.
>
> This also simplifies the stale directory cleanup to only clean up more
> recent sources of stale directories. This could lead stale directories
> to stick around when updating from very old versions of Chrome, but
> these directories should be small regardless.
>
> Also deletes some unused webApk UMA constants, and deletes the unused
> histogram generation code in NoTouchActivity for tab restore.
>
> Bug: 525785
> Change-Id: I615542e2f28a147ecd5403b04b61b749f3e737ab
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1769313
> Commit-Queue: Michael Thiessen <mthiesse@chromium.org>
> Reviewed-by: Peter Kotwicz <pkotwicz@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#690834}

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: 525785
Change-Id: I47afd77f54e7c11574a5814fbdec50a1a3cf3d46
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1926573
Commit-Queue: Michael Thiessen <mthiesse@chromium.org>
Reviewed-by: default avatarPeter Kotwicz <pkotwicz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#717689}
parent cc78d7f3
......@@ -124,6 +124,11 @@ public class WebApkUma {
private static final String HISTOGRAM_LAUNCH_TO_SPLASHSCREEN_HIDDEN =
"WebApk.Startup.Cold.ShellLaunchToSplashscreenHidden";
private static final int WEBAPK_OPEN_MAX = 3;
public static final int WEBAPK_OPEN_LAUNCH_SUCCESS = 0;
// Obsolete: WEBAPK_OPEN_NO_LAUNCH_INTENT = 1;
public static final int WEBAPK_OPEN_ACTIVITY_NOT_FOUND = 2;
private static final long WEBAPK_EXTRA_INSTALLATION_SPACE_BYTES =
100 * (long) ConversionUtils.BYTES_PER_MEGABYTE; // 100 MB
......
......@@ -27,6 +27,7 @@ import org.chromium.base.ActivityState;
import org.chromium.base.ApiCompatibilityUtils;
import org.chromium.base.ApplicationStatus;
import org.chromium.base.Log;
import org.chromium.base.StrictModeContext;
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.metrics.RecordUserAction;
import org.chromium.base.task.PostTask;
......@@ -69,6 +70,7 @@ import org.chromium.content_public.browser.UiThreadTaskTraits;
import org.chromium.net.NetworkChangeNotifier;
import org.chromium.ui.base.PageTransition;
import java.io.File;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.HashMap;
......@@ -85,6 +87,8 @@ public class WebappActivity extends BaseCustomTabActivity<WebappActivityComponen
protected static final String BUNDLE_TAB_ID = "tabId";
private final WebappDirectoryManager mDirectoryManager;
private WebappInfo mWebappInfo;
private WebappActivityTabController mTabController;
......@@ -148,6 +152,7 @@ public class WebappActivity extends BaseCustomTabActivity<WebappActivityComponen
*/
public WebappActivity() {
mWebappInfo = createWebappInfo(null);
mDirectoryManager = new WebappDirectoryManager();
mDisclosureSnackbarController = new WebappDisclosureSnackbarController();
}
......@@ -373,13 +378,14 @@ public class WebappActivity extends BaseCustomTabActivity<WebappActivityComponen
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
saveTabState(outState);
mDirectoryManager.cancelCleanup();
saveState(outState);
}
@Override
public void onStartWithNative() {
super.onStartWithNative();
WebappDirectoryManager.cleanUpDirectories();
mDirectoryManager.cleanUpDirectories(this, getActivityId());
}
@Override
......@@ -391,21 +397,25 @@ public class WebappActivity extends BaseCustomTabActivity<WebappActivityComponen
/**
* Saves the tab data out to a file.
*/
private void saveTabState(Bundle outState) {
Tab tab = getActivityTab();
if (tab == null || tab.getUrl() == null || tab.getUrl().isEmpty()) return;
if (TabState.saveState(outState, TabState.from(tab))) {
outState.putInt(BUNDLE_TAB_ID, tab.getId());
private void saveState(Bundle outState) {
if (getActivityTab() == null || getActivityTab().getUrl() == null
|| getActivityTab().getUrl().isEmpty()) {
return;
}
outState.putInt(BUNDLE_TAB_ID, getActivityTab().getId());
String tabFileName = TabState.getTabStateFilename(getActivityTab().getId(), false);
File tabFile = new File(getActivityDirectory(), tabFileName);
// TODO(crbug.com/525785): Temporarily allowing disk access until more permanent fix is in.
try (StrictModeContext ignored = StrictModeContext.allowDiskWrites()) {
TabState.saveState(tabFile, TabState.from(getActivityTab()), false);
}
}
/**
* Restore {@link TabState} from a given {@link Bundle} and tabId.
* @param saveInstanceState The saved bundle for the last recorded state.
* @param tabId ID of the tab restored from.
*/
private TabState restoreTabState(Bundle savedInstanceState, int tabId) {
return TabState.restoreTabState(savedInstanceState);
return TabState.restoreTabState(getActivityDirectory(), tabId);
}
@Override
......@@ -748,6 +758,15 @@ public class WebappActivity extends BaseCustomTabActivity<WebappActivityComponen
return mWebappInfo.id();
}
/**
* Get the active directory by this web app.
*
* @return The directory used for the current web app.
*/
private File getActivityDirectory() {
return mDirectoryManager.getWebappDirectory(this, getActivityId());
}
@VisibleForTesting
SplashController getSplashControllerForTests() {
return mSplashController;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment