// Copyright 2016 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. package org.chromium.chrome.browser.webapps; /** * Type of WebApkActivity and it is targeted on Android versions older than L, similar to * WebappManagedActivity for WebappActivity. */ public abstract class WebApkManagedActivity extends WebApkActivity { private final int mActivityIndex; public WebApkManagedActivity() { mActivityIndex = getActivityIndex(); } @Override public void onStartWithNative() { super.onStartWithNative(); if (!isFinishing()) { markActivityUsed(); } } @Override protected String getActivityId() { return String.valueOf(mActivityIndex); } /** * Marks that this WebApkActivity is recently used to prevent other webapps from using it. */ private void markActivityUsed() { ActivityAssigner.instance(ActivityAssigner.WEBAPK_NAMESPACE) .markActivityUsed(mActivityIndex, getWebappInfo().id()); } /** * Pulls out the index of the WebApkActivity subclass that is being used. * e.g. WebApkActivity0.getActivityIndex() will return 0. * @return The index corresponding to this WebApkActivity0. */ private int getActivityIndex() { // Cull out the activity index from the class name. String baseClassName = WebApkActivity.class.getSimpleName(); String className = this.getClass().getSimpleName(); assert className.matches("^" + baseClassName + "[0-9]+$"); String indexString = className.substring(baseClassName.length()); return Integer.parseInt(indexString); } }